机器学习:为什么xW + b而不是Wx + b?

时间:2016-11-16 21:32:28

标签: machine-learning tensorflow

我开始学习机器学习。现在我试着玩tensorflow。

我常常看到这样的例子:

pred = tf.add(tf.mul(X, W), b)

我也在一个简单的numpy实现中看到了这样一条线。为什么始终使用x*W+b代替W*x+b?如果矩阵以这种方式成倍增加是否有优势?我看到有可能(如果XWb被转置),但我没有看到优势。在数学课堂上,我们总是只使用Wx+b

非常感谢

2 个答案:

答案 0 :(得分:5)

这就是原因:

  • 默认情况下,w是权重向量,在数学中,向量被视为列,而不是行。

  • X是数据的集合。它是一个矩阵nxd(其中n是数据的数量,d是特征的数量)(大写字母X是矩阵n x d,小写字母只有1个数据1 x d矩阵)。

要正确地将两者相乘并在正确的特征中使用正确的权重,您必须使用X * w + b:

  • 使用X * w,您可以通过相应的权重来重复每个要素,并通过添加b来为每个预测添加偏差项。

如果乘以w * X,则乘以(1 x d)*(n x d)并且没有任何意义。

答案 1 :(得分:1)

我也对此感到困惑。我想这可能是一个维度问题。对于* m维矩阵W和n维向量x,使用x W + b可以很容易地将其视为将m维特征映射到m维特征,即,您可以轻松地想到W作为n维 - > m维操作,其中W x + b(x现在必须是m维矢量)变为m维 - > n维操作,在我看来看起来不太舒服。 :d