Web や講義ノートで見つけたさまざまな情報源に基づいて、次の Batch Gradient descednt アルゴリズムを実装しました。
この実装は、停止基準の点では理想的ではありませんが、私のサンプルでは機能するはずです。
入力:
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]
。
アルファと開始点のさまざまな組み合わせを試しましたが、うまくいきませんでした。どこで間違いを犯していますか?