Adaptive Learning Rate
一、问题描述
当分析训练的loss已经不会随着gradient的更新而变化时,不一定就是local minima或者saddle point,分析norm of gradient ,发现在loss几乎不变的时候,gradient 还在保持着较大幅度的更新,很有可能是走到了左边的峡谷,gradient在两边跳跃,却始终不会降低loss。
学习率过大,就会出现上一张ppt所示的情形,在峡谷两侧摆动;学习率过小,在峡谷的腰部位置,表现得会不错,慢慢移动到谷底,但是当进入平缓之后,学习率过小导致始终无法移到点x处。
二、不同的参数需要不同的学习率
1.参数更新公式
我们需要的是,在梯度变化较大的位置用更小的学习率,而梯度较为平缓的地方使用更大的学习率,希望机器可以自动调节。
2.root mean square均方根———used in Adagrad
简单来讲,设置全局学习率之后,每次通过全局学习率逐参数的除以历史梯度平方和的平方根,使得每个参数的学习率不同。
效果:在参数空间更为平缓的方向,会取得更大的进步(因为平缓,所以历史梯度平方和较小,对应学习下降的幅度较小)
缺点:使得学习率过早,过量的减少
对于同一个参数,gradient的大小会被固定的差不多,但是,如果是同一个参数的同一个更新方向,出现陡坡和平坡,需要自动变化学习率,就需要更加高级的更新办法。
3.RMSProp
更近的gradient有着更大的影响,而过去的gradient有着很小的影响。使得对于同一个参数的同一个移动方向也可以自适应调整学习率。
4.最常用的optimization策略是Adam
Adam=RMSProp+Momentum
三、结果
1.without Adaptive Learning Rate
2.Adagrad
刚开始表现得十分不错,但是为什么在圆圈处出现较大幅度纵轴震荡?因为到了平缓区域,学习率降低,但是随着很多次累加,学习率又将变大,后又慢慢减小,出现下图的情况。
3.解决办法:Learning Rate Scheduling
3.1 Learning Rate Decay
随着时间的进行,我们更加接近目标,于是,我们不断减少学习率。
3.2 Warm Up
先变大,后减少(黑科技),可能性解释,刚开始,机器看到的资料不多,因此用更小的更新速度去探索更多的情报。---->please refer RAdam
四、Summary of Optimization
momentum 和不会抵消,因为momentum直接加上过去的所有movement,有考虑方向和正负号,而 却只考虑大小,不考虑方向。
raw/master/img/202112021725879.png" style=“zoom:50%;” />却只考虑大小,不考虑方向。