Datawhale X 李宏毅苹果书 AI夏令营Task2笔记

1.自适应学习率

很多时候训练陷入瓶颈,损失不再下降,不是因为陷入了局部最小值,大部分情况下是在局部最小值附近震荡(学习率太大),这个时候应该通过降低学习率的方式,从而能够继续往最小值方向下降。

举个例子,我们有两个参数\omegab,这两个参数值不一样的时候,损失值也不一样,得到了下图(上)所示的误差表面,该误差表面的最低点在叉号处。事实上,该误差表面是凸的形状。凸的误差表面的等高线是椭圆形的,椭圆的长轴非常长,短轴相比之下比较短,其在横轴的方向梯度非常小,坡度的变化非常小,非常平坦;其在纵轴的方向梯度变化非常大,误差表面的坡度非常陡峭。现在我们要从黑点(初始点)来做梯度下降。

学习率\eta =10^{-2}的结果如下图(下左)所示。参数在峡谷的两端,参数在山壁的两端不断地“震荡”,损失降不下去,但是梯度仍然是很大的。我们可以试着把学习率设小一点,学习率决定了更新参数的时候的步伐,学习率设太大,步伐太大就无法慢慢地滑到山谷里面。调学习率从10^{-2}调到10^{-7}的结果如下图(下右)所示,参数不再“震荡”了。参数会滑到山谷底后左转,但是这个训练永远走不到终点,因为学习率已经太小了。AB段的坡度很陡,梯度的值很大,还能够前进一点。左拐以后,BC段的坡度已经非常平坦了,这种小的学习率无法再让训练前进。事实上在BC段有10万个点(10万次更新),但都无法靠近局部最小值,所以显然就算是一个凸的误差表面,梯度下降也很难训练。

这个例子说明了不同的参数的梯度变化可能会有显著不同,所以不应该对所有参数用同一个学习率。同时,在训练的不同阶段,学习率也可以有所不同,比如早期学习率可以更大,后期学习率可以变小。

因此,在梯度下降里面,所有的参数都是设同样的学习率,显然是不够的,应该要为每一个参数定制化学习率,即引入自适应学习率(adaptive learning rate)的方法,给每一个参数不同的学习率。如下图所示,如果在某一个方向,梯度的值很小,非常平坦,我们会希望学习率调大一点;如果在某一个方向上非常陡峭,坡度很大,我们会希望学习率可以设的小一点。

总而言之,自适应学习率(Adaptive Learning Rate)是深度学习中一种重要的优化策略,它能够根据训练过程中的动态变化自动调整学习率。这种策略可以提高训练效率,加快收敛速度,并有助于模型在训练过程中跳出局部最小值或鞍点。 

1.1 AdaGrad

AdaGrad (Adaptive Gradient)是典型的自适应学习率方法,其能够根据梯度大小自动调整学习率。AdaGrad可以做到梯度比较大的时候,学习率就减小,梯度比较小的时候,学习率就放大。

AdaGrad 使用和累积梯度平方来调整每个参数的学习率。

累积梯度平方和公式:G_t = G_{t-1} + g_t^2

学习率计算公式:\eta_t = \frac{\eta_0}{\sqrt{G_t + \epsilon}}

1.2 RMSProp

RMSprop 是由 Geoff Hinton 在他 Coursera 课程中提出的一种适应性学习率方法,至今仍未被公开发表。

在下图中的误差表面中,如果考虑横轴方向,绿色箭头处坡度比较陡峭,需要较小的学习率,但是走到红色箭头处,坡度变得平坦了起来,需要较大的学习率。因此同一个参数的同个方向,学习率也是需要动态调整的,于是就有了一个新的方法———RMSprop (Root Mean Squared propagation)。RMSprop方法解决AdaGrad的学习率缩减问题。

AdaGrad的问题

 RMSprop第一步跟Adagrad的方法相同,即:\sigma _{0}^{i} =\sqrt{({g_{0}^{i} })^2 } =\left | g_{0}^{i} \right |

RMSProp通过\alpha可以决定,g_{t}^{i}相较于之前存在\sigma _{t-1}^{i},里面的g_{1}^{i}g_{2}^{i},……,g_{t-1}^{i}的重要性有多大。如果使用RMSprop,就可以动态调整

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值