【发布时间】:2016-06-27 00:09:37
【问题描述】:
我正在学习 Andrew Ng 的机器学习课程,我正在尝试围绕多个变量的梯度下降的矢量化实现,这是课程中的一个可选练习。
这是有问题的算法(取自here):
我只是不能使用sum 在八度音阶中执行此操作,但我不确定如何将 x(i) - y(i) 的假设之和乘以所有变量 xj(i)。我尝试了以下代码的不同迭代但无济于事(尺寸不正确或答案错误):
theta = theta - alpha/m * sum(X * theta - y) * X;
然而,正确的答案是完全不明显的(无论如何,对于像我这样的线性代数初学者,来自here):
theta = theta - (alpha/m * (X * theta-y)' * X)';
对于涉及sum 的情况,是否有经验法则来管理上述转换?
如果是这样,是否存在上述相反的版本(即从基于sum 的解决方案到一般乘法的解决方案),因为我能够使用sum 为梯度下降提出正确的实现单个变量(虽然不是很优雅):
temp0 = theta(1) - (alpha/m * sum(X * theta - y));
temp1 = theta(2) - (alpha/m * sum((X * theta - y)' * X(:, 2)));
theta(1) = temp0;
theta(2) = temp1;
请注意,这仅涉及矢量化实现,尽管关于如何完成此操作有几个问题,但我的问题主要涉及使用 sum 在 Octave 中实现算法。
【问题讨论】:
-
查看重复链接 - 特别是
sum的第二种方法。
标签: machine-learning octave gradient-descent