gpt4 book ai didi

machine-learning - 梯度下降与 fminunc

转载 作者:行者123 更新时间:2023-11-30 09:02:20 24 4
gpt4 key购买 nike

我正在尝试运行梯度下降,但在使用完全相同的数据时无法获得与内置 fminunc Octave 音程相同的结果

我的代码是

%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 使用相同的成本函数,我假设成本函数是正确的。

我尝试降低学习率,以防遇到局部最小值并增加迭代次数,成本停止下降,所以我认为它似乎已经找到了最小值,但最终的 theta 仍然有一个更大的值成本而且远不那么准确

即使 fminunc 使用更好的算法,梯度下降最终是否可以通过足够的迭代和较小的学习率找到相同的答案?

或者谁能看看我是否做错了什么?

感谢您提供的所有帮助。

最佳答案

你的评论是错误的,但算法很好。

梯度下降很容易陷入数值问题,那么我建议进行特征归一化。

此外,如果您不确定自己的学习率,请尝试动态调整它。像这样的东西:

best_cost = Inf;
best_theta = initial_theta;
alpha = 1;

for iter = 1:500
[cost, grad] = costFunction(best_theta, X_reg, y);

if (cost < best_cost)
best_theta = best_theta - alpha * grad;
best_cost = cost;
else
alpha = alpha * 0.99
end
end

此外请记住,不同的答案可以给出相同的决策边界。例如,对于假设 h(x) = x(0) + theta(1) * x(1) + theta(2) * x(2) 这些答案给出了相同的边界:

theta = [5, 10, 10];
theta = [10, 20, 20];

关于machine-learning - 梯度下降与 fminunc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12554656/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com