4-Learning rate自动调整学习率

Adaptive Learning Rate

一、问题描述

4-Learning rate自动调整学习率_第1张图片

当分析训练的loss已经不会随着gradient的更新而变化时,不一定就是local minima或者saddle point,分析norm of gradient ,发现在loss几乎不变的时候,gradient 还在保持着较大幅度的更新,很有可能是走到了左边的峡谷,gradient在两边跳跃,却始终不会降低loss。

4-Learning rate自动调整学习率_第2张图片

学习率过大,就会出现上一张ppt所示的情形,在峡谷两侧摆动;学习率过小,在峡谷的腰部位置,表现得会不错,慢慢移动到谷底,但是当进入平缓之后,学习率过小导致始终无法移到点x处。

二、不同的参数需要不同的学习率

1.参数更新公式
4-Learning rate自动调整学习率_第3张图片

我们需要的是,在梯度变化较大的位置用更小的学习率,而梯度较为平缓的地方使用更大的学习率,希望机器可以自动调节。

2.root mean square均方根———used in Adagrad

简单来讲,设置全局学习率之后,每次通过全局学习率逐参数的除以历史梯度平方和的平方根,使得每个参数的学习率不同。

效果:在参数空间更为平缓的方向,会取得更大的进步(因为平缓,所以历史梯度平方和较小,对应学习下降的幅度较小)

缺点:使得学习率过早,过量的减少

4-Learning rate自动调整学习率_第4张图片

对于同一个参数,gradient的大小会被固定的差不多,但是,如果是同一个参数的同一个更新方向,出现陡坡和平坡,需要自动变化学习率,就需要更加高级的更新办法。

3.RMSProp

更近的gradient有着更大的影响,而过去的gradient有着很小的影响。使得对于同一个参数的同一个移动方向也可以自适应调整学习率。

4-Learning rate自动调整学习率_第5张图片 4-Learning rate自动调整学习率_第6张图片
4.最常用的optimization策略是Adam

Adam=RMSProp+Momentum

三、结果

1.without Adaptive Learning Rate

4-Learning rate自动调整学习率_第7张图片

2.Adagrad

刚开始表现得十分不错,但是为什么在圆圈处出现较大幅度纵轴震荡?因为到了平缓区域,学习率降低,但是随着很多次累加,学习率又将变大,后又慢慢减小,出现下图的情况。

4-Learning rate自动调整学习率_第8张图片
3.解决办法:Learning Rate Scheduling4-Learning rate自动调整学习率_第9张图片
3.1 Learning Rate Decay4-Learning rate自动调整学习率_第10张图片

随着时间的进行,我们更加接近目标,于是,我们不断减少学习率。

3.2 Warm Up4-Learning rate自动调整学习率_第11张图片

先变大,后减少(黑科技),可能性解释,刚开始,机器看到的资料不多,因此用更小的更新速度去探索更多的情报。---->please refer RAdam

四、Summary of Optimization

momentum 和image-20211202172538857不会抵消,因为momentum直接加上过去的所有movement,有考虑方向和正负号,而 却只考虑大小,不考虑方向。

raw/master/img/202112021725879.png" style=“zoom:50%;” />却只考虑大小,不考虑方向。

4-Learning rate自动调整学习率_第12张图片

你可能感兴趣的:(笔记,机器学习,深度学习,python)