自动调整学习速率 - zs-collab/- GitHub Wiki
learning reat的介绍
学习速率(Learning Rate, LR)是梯度下降及其变种优化算法中的核心超参数,它决定了模型参数在每次迭代中的更新步长。学习速率的选择直接影响模型的收敛速度、训练稳定性以及最终性能。
-
学习速率的基础作用:
控制参数更新步长
在梯度下降中,参数更新公式为:
θt+1=θt−α⋅∇L(θt)
其中:
θt是当前参数(如神经网络的权重);
∇L(θt)是损失函数在当前参数处的梯度;
α 是学习速率。
学习速率的作用:
α 较大 → 参数更新幅度大,可能快速接近最优解,但也可能“跨过”最优解,导致震荡甚至发散。
α 较小 → 参数更新精细,收敛稳定,但训练速度慢,可能陷入局部最优或无法在有限时间内收敛。 -
学习速率对训练过程的影响
(1) 学习速率过大(α 太大)
现象:
损失函数剧烈震荡,甚至持续上升(发散)。
参数更新幅度过大,导致模型无法稳定收敛。
原因:
梯度下降的步长太大,每次更新“跨过”最优解,甚至朝相反方向移动。 在深度学习中,可能引发梯度爆炸(Gradient Explosion)。
(2) 学习速率过小(α 太小)
现象:
损失函数下降极其缓慢,训练时间大幅增加。
可能陷入局部最优(非凸优化问题)或鞍点(梯度接近 0 但非最优)。
原因:
每次参数更新幅度太小,需要极多迭代才能接近最优解。 在深度学习中,可能因梯度消失(Vanishing Gradient)问题导致训练停滞。
Training Stuck != Small Gradient
当Loss不在下降,而Gradient还没有很小在震荡的时候
一个可能:Gradient在Error suface的山谷间震荡
不同的参数需要不同的learning rate
当梯度比较平缓的时候需要大一点的learning rate,当梯度比较陡,就需要小一点的learning rate
Root Mean Square
此方法可以自动更新learning rate
求σ,更新迭代
Without Adaptive Learning Rate
RMSProp
总结:
Gradient descend之进化
Vanilla Gradient descend:
固定的步伐大小与当前Gradient方向
Various Improvements:
1.g:Momentum:考虑过去所有Gradient方向来调整方向
2.σ:Root Mean Square:考虑过去所有Gradient的大小来调整步伐幅度
3.η:Learning Rate Scheduling:考虑时间来来调整参数的更新速度