2016-05-14 14 views
0

値更新しない:初期シータ値 を gradient descent seems to fail勾配降下がで説明したように、θが勾配のベクトル化バージョンを使用して

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)';正しい勾配降下の実装ですか?

答えて

0

theta = theta - (alpha/m * (X * theta-y)' * X)';は確かにgradient-descentの正しいベクトル化された実装です。

学習率を完全に忘れてしまった、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 
関連する問題