【问题标题】:Gradient descent not updating theta values梯度下降不更新 theta 值
【发布时间】:2016-05-15 08:56:34
【问题描述】:

使用梯度的矢量化版本,如下所述: gradient descent seems to fail

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

theta 值没有被更新,所以无论初始 theta 值如何 这是运行梯度下降后设置的值:

示例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)'; 是梯度下降的正确矢量化实现吗?

【问题讨论】:

    标签: matlab machine-learning neural-network gradient-descent


    【解决方案1】:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-20
      • 2021-03-08
      • 1970-01-01
      • 2018-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多