我在如何在Coursera上提供的机器学习课程中理解如何对函数进行矢量化时遇到了问题。
在课程中,Andrew Ng解释说,假设可以被矢量化为theta的转置乘以x:
H(x) = theta' * X
我的第一个问题是我在练习上实现这个问题。为什么纸上的矢量化是θ乘以x的转置,而在Octave上它是X乘以?
theta'*X % leads to errors while multiplying
我的第二个问题跟随第一个问题。
当我想要渲染梯度下降函数的总和时:
sum((h(x)-y)*x))
我真的不明白你曾经如何做到这一点:
X'*(h(x)-y)
任何人都可以解释一下吗?
答案 0 :(得分:1)
这是一个品味问题。通常的惯例是进行矩阵向量乘法,即你喜欢的。您可以通过转置所有内容从一种模式切换到另一种模式。也就是说,如果您的乘法X*theta
有效,则转置公式为theta.' * X.'
在X*theta
中,X
的每一行都包含一个采样点的数据(核函数值)。
在theta.'*X
约定中,X
的列包含样本点数据。
因此它始终取决于上下文,定义为行的内容以及列向量以及它们如何在较大的对象或操作中组合在一起。
答案 1 :(得分:0)
虽然您可能还会提到安德鲁·伍(Stanford)的安德鲁·伍(Andrew Ng)在Coursera ML MOOC中进行的理论解释,但他还是使用thetha作为n X 1的向量,但在课程中我们有1 X n的向量。因此,theta实际上是theta(theta')的转置