最急降下法を実行しようとしていますが、まったく同じデータを使用すると、オクターブ組み込みのfminuncと同じ結果を得ることができません。
私のコードは
%for 5000 iterations
for iter = 1:5000
%%Calculate the cost and the new gradient
[cost, grad] = costFunction(initial_theta, X, y);
%%Gradient = Old Gradient - (Learning Rate * New Gradient)
initial_theta = initial_theta - (alpha * grad);
end
ここで、costFunctionは、例(X、y)とparameters(theta)が与えられたときに、コストと勾配を計算します。
組み込みのオクターブ関数fminuncもcostFunctionを呼び出し、同じデータを使用すると、はるかに少ない反復ではるかに優れた答えが見つかります。
オクターブが同じコスト関数を使用しているとすると、costFunctionが正しいと思います。
極小値に達して反復回数を増やす場合に備えて、学習率を下げてみましたが、コストが下がらなくなったので、最小値を見つけたようですが、最終的なシータのコストはまだはるかに高く、正確に近いところはありません
fminuncがより優れたアルゴリズムを使用している場合でも、最急降下法は、十分な反復とより小さな学習率で最終的に同じ答えを見つけることができますか?
または誰かが私が何か間違っているかどうかを見ることができますか?
助けてくれてありがとう。