当使用完全相同的数据时,我正在尝试运行梯度下降并且无法获得与内置 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
当给定示例 (X,y) 和参数 (theta) 时,costFunction 计算成本和梯度。
一个内置的 octave 函数 fminunc 也调用 costFunction 并使用相同的数据在更少的迭代中找到更好的答案。
鉴于 octave 使用相同的成本函数,我假设 costFunction 是正确的。
我已经尝试降低学习率,以防我达到局部最小值并增加迭代次数,成本停止下降,所以我认为它似乎找到了最小值,但最终的 theta 仍然有更大的成本并且是没有准确的地方
即使 fminunc 使用更好的 alogoritm,梯度下降最终是否应该通过足够的迭代和更小的学习率找到相同的答案?
或者谁能看到我做错了什么?
感谢您的任何帮助。