渐变下降不更新θ值



使用梯度的矢量化版本,如中所述:梯度下降似乎无法通过

theta = theta - (alpha/m *  (X * theta-y)' * X)';

θ值没有更新,所以无论初始θ值是多少这是运行梯度下降后设置的值:

示例1:

m = 1
X = [1]
y = [0]
theta = 2
theta = theta - (alpha/m .* (X .* theta-y)' * X)'
theta =
    2.0000

示例2:

m = 1
X = [1;1;1]
y = [1;0;1]
theta = [1;2;3]
theta = theta - (alpha/m .* (X .* theta-y)' * X)'
theta =
    1.0000
    2.0000
    3.0000

theta = theta - (alpha/m * (X * theta-y)' * X)';是梯度下降的正确矢量化实现吗?

theta = theta - (alpha/m * (X * theta-y)' * X)';确实是梯度下降的正确矢量化实现。

你完全忘了设置学习率alpha

设置alpha = 0.01后,您的代码变为:

m = 1                # number of training examples
X = [1;1;1]
y = [1;0;1]
theta = [1;2;3]
alpha = 0.01
theta = theta - (alpha/m .* (X .* theta-y)' * X)'
theta =
   0.96000
   1.96000
   2.96000

最新更新