2013-08-22 54 views
0

我已經實現了以下漸變漸變漸變算法,基於我可以在網絡和教學筆記中找到的各種來源。漸變下降不會返回不正確的線性函數預測

這個實現在停止條件方面並不理想,但是對於我的示例它應該起作用。

輸入:

x = [1,1;1,2;1,3;1,4;1,5]; 
y = [1;2;3;4;5]; 
theta = [0;0]; 

代碼:

tempTheta = [0;0]; 

for c = 1:10000, 
    for j = 1:2, 
     sum = 0; 
     for i = 1:5, 
      sum = sum + ((dot(theta', x(i, :)) - y(j)) * x(i,j)); 
     end 
     sum = (sum/5) * 0.01; 

     tempTheta(j) = theta(j) - sum; 
    end 
    theta = tempTheta; 
end 

預期的結果是theta = [0;1],但我的實現總是返回theta = [-3.5, 1.5]

我試過各種組合的alpha和起點,但沒有運氣。我在哪裏犯錯?

回答

2

在這一行

sum = sum + ((dot(theta', x(i, :)) - y(j)) * x(i,j)); 

您正在使用的y一個錯誤的指數,應該是y(i),爲j是一個維度迭代器,而不是樣品迭代器。

變化

theta = 

    -1.5168e-07 
    1.0000e+00 
+0

感謝之後,這就是問題所在。 – jnovacho