【问题标题】:Why doesn't perceptron's implementation follow the formula in <python machine learning>?为什么感知器的实现不遵循<python机器学习>中的公式?
【发布时间】:2016-10-08 18:52:23
【问题描述】:

我是机器学习的初学者。我从python machine learning 这本书和一些在线视频开始我的学习。

我对“python 机器学习”中 Perceptron 的实现感到困惑。这是公式:

这是公式的python实现:

但是根据公式,在实现中是 W * X,而不是 X * W。它们对于矩阵不同。(对于numpy dot,如果 X 是二维数组,则它是矩阵乘法。)。为什么实现不遵循公式?

本书中Iris示例的上述python代码中的实际值如下:

w[1:]:  [-0.68  1.82]

X: [[ 3.3   0.  ]
    [ 3.32  0.  ]
    [ 3.34  0.  ]
      ..., 
    [ 7.94  6.08]
    [ 7.96  6.08]
    [ 7.98  6.08]]

谢谢。

【问题讨论】:

标签: python machine-learning


【解决方案1】:

这是一个很好的问题。答案应该是双重的。

W 点 X =?= X 点 W

您完全正确,交换 X 和 W 会为矩阵乘法产生不同的结果。

但是,在这种情况下,w 和 x 实际上是向量,或 m*1 矩阵。点积产生一个标量。所以在这种情况下,'x dot w' 和 'w dot x' 是一样的。

如您所见,x 被解释为 [x0, x1, x2, ..., xm],这表明了它的向量性质。

此函数的作用是将神经元的输入与权重为w 相结合。这些输入是前一层神经元的输出。我们知道神经元的输出是一个标量。

关于偏置项 W_[0]

实际上,实现的不同之处在于将 w_[0] 附加到多项式的末尾。这称为偏差项,它修改输入的线性组合的结果,或x。在实现中使用这个偏置项是一种常见的做法。但在数学中,我们通常会省略它,因为它不会改变组合的线性性质。当然,在某些情况下,这个偏差项会在数学表示中明确列出。

====== 更新=======

由于问题已经更新,添加了对实际情况的进一步说明。

在这种情况下,结果的第一个维度是“broadcast”。

考虑一个更简单的情况:

w[1:]:  [-0.68  1.82]

X: [ 3.3   0.  ]

正如@Peater 和我解释的那样,X 和 w 都是向量。

在实际设置中,X 不是一个矩阵,而是一个随采样或时间变化的变量。假设 X 的维度为 [n * 2],这意味着 x 是具有 n 个样本的二维向量。

这里的样本是指在不同时间范围或不同像素中对变量的不同评估。 X的这个维度广播到结果中。

【讨论】:

  • 谢谢。我刚刚更新了为 X 和 W 添加实际值的问题。这些值来自书中的示例。我们将看到 X 是 m*2 矩阵。那么在这种情况下,'x dot w'和'w dot x'是不一样的?
猜你喜欢
  • 1970-01-01
  • 2017-04-01
  • 2013-10-09
  • 2014-07-03
  • 1970-01-01
  • 2013-09-11
  • 2011-03-11
  • 2014-12-05
  • 2017-05-02
相关资源
最近更新 更多