李宏毅机器学习笔记第8周_自动调整学习速率


一、Training stuck ≠ Small Gradient

1. 大多数人认为训练受阻是因为参数到达了critical point附近,但是critical point不一定是我们训练过程中最大的障碍。
2. 如下图所示,在训练一个network时,我们会把loss记录下来,随着更新参数,这个loss会逐渐下降,一直到loss不在下降为止。
在这里插入图片描述
当走到critical point时,gradient是非常小的,但是当loss不在下降时,gradient并没有变得很小。
3. 如下图所示,随着参数地不断更新,虽然loss不再变小了,但是gradient并没有变得很小,反而有时会有增长的趋势。
在这里插入图片描述
4. 如下图所示,这里是error surface,现在gradient在error surface的山谷间不断来回的振荡,这个时候loss不会再下降了。因此,在训练一个network时,发现loss不会再下降了,它可能不是local minima和saddle point,它只是loss没有办法再下降了。
在这里插入图片描述

二、Wait a minute

1. 事实上走到critical point其实是一件困难的事情,因为大多数training还没有到critical point就已经停止了。
2. 如下图所示,现在要得到这个图中的结果,需要训练参数到很接近critical point,但是用一般的gradient descend是做不到的。因为当gradient很大时,loss就已经掉下去了,所以这里需要用到特殊的方法训练。
在这里插入图片描述
因此,目前用gradient descend来做optimization时,我们要怪罪的对象不是critical point,而是其他的原因。

三、Training can be difficult even without critical points

1. 如下图所示,当参数w和b不一样时,loss的值就不一样,这样就画出了error surface。这个error surface是convex形状,它的最低点在黄色叉的地方,它的等高线是椭圆形的。它在横轴的地方,gradient变化很小,坡度变化很小,比较平滑,在纵轴的地方,gradient变化很大,坡度变化很大,比较陡峭。
在这里插入图片描述
现在从黑色的点开始做gradient descend。
2. 如下图所示。
在这里插入图片描述
1)左边图的learning rate = 10^(-2),参数在山谷间来回振荡,loss不会下降,但gradient依然很大,这是因为learning rate太大了,它决定了更新参数时步伐的大小。
2)右边图的learning rate = 10^(-7),参数不再振荡,但是这个训练到不了终点,这是因为learning rate太小了,不能让我们的训练前进。
3)这个convex的optimization问题其实是有解的,我们需要更好的gradient descend版本,learning rate要为每一个参数定制化。

四、Different parameters needs different learning rate

1. 在某一个方向上,gradient很小,非常平坦,我们就把learning rate调大一点;在某一个方向上,gradient很大,非常陡峭,我们就把learning rate调小一点。
在这里插入图片描述
2. 如下图所示,上面这个式子是原来的gradient descend,learning rate是固定的。现在我要有一个随着参数客制化的learning rate,于是得到下面那个式子,这样就有一个parameter dependent的learning rate。
在这里插入图片描述

五、Root mean square

1. 如下图所示,这是一个计算gradient的Root Mean Square。
在这里插入图片描述
2. 如下图所示,这里是用在Adagrad的方法里面。当坡度比较大时,gradient就比较大,σ就比较大,所以learning rate就比较小。当坡度比较小时,gradient就比较小,σ就比较小,所以learning rate就比较大。因此,有了σ后,我们就可以随着参数的不同,自动地调整learning rate的大小。
在这里插入图片描述
3. 我们之前认为同一个参数的gradient的大小固定差不多的值,但并不是这个样子,同一个参数的learning rate会随时间地变化而变化。如下图所示,是一个新月形的error surface。可以发现同一个参数同一个方向,learning rate可以动态的调整。
在这里插入图片描述

六、RMSProp

1. 如下图所示,RMSProp第一步和Root Mean Square是一样的,在下面的步骤中不一样的是在计算Root Mean Square时,每一个gradient都有同等的重要性,在RMSProp中,你可以调整它的重要性。
在这里插入图片描述
α如果设很小趋近于0时,就对与我们计算出来的gradient比较重要;α如果设很大趋近于1时,就对与我们计算出来的gradient比较不重要。
2. 如下图所示,我们现在动态调整σ。图中的黑线是error surface。在陡峭的地方gradient会变大,我们就把α设小,就可以很快地把σ的值变大,也就可以把步伐变小;在平坦的地方gradient会变小,我们就把α设大,就可以很快地把σ的值变小,也就可以把步伐变大。
在这里插入图片描述

七、Adam: RMSProp + Momentum

最常用的optimization的策略是Adam,Adam就是RMSProp + Momentum。
在这里插入图片描述

八、Learning Rate Scheduling

1. 现在我们加上了Adaptive Learning Rate,如下图所示,这里采用了最原始的Adagrad做法,但是现在遇到了一个问题是在快到终点的时候爆炸了。
在这里插入图片描述
因为之前我们把所有的gradient拿来做平均,所以在纵轴的方向,初始的位置gradient很大,过了一段时间过后,gradient就会很小,于是纵轴就累积到了很小的σ,步伐就会变大,于是就爆发时喷射。当走到gradient很大的时候,σ就会变大,于是步伐就会变小,因此就会出现图中的情况。
2. 如下图所示,之前的η一直是固定值,但应该把它跟时间联系在一起。这里要用到最常用的策略是Learning Rate Decay,这样我们就可以很平稳地走到终点。当越靠近终点时,η就会越小,当它想乱喷的时候,乘上一个很小的η,就可以平稳到达终点。
在这里插入图片描述

九、Warm Up

Warm Up它是让Learning Rate先变大后变小,具体变大到多少,这个需要自己手动调整。为什么要用Warm Up?因为在使用Adam RMS Prop和Adagrad的时候,我们要计算σ,σ告诉我们某一个方向是陡峭还是平滑,但这需要多笔数据才能让统计更加精准。一开始我们的收集不够精准,所以要先收集有关σ的统计数据,等到足够精准后,再让Learning Rate上升。
在这里插入图片描述

十、Summary of Optimization

1. 这里我们添加了Momentum,现在不是顺着gradient的方向来更新参数,而是把之前全部的gradient的方向,做一个总和来当做更新的方向。
2. 如下图所示,这里需要除以gradient的Root Mean Square。Momentum直接把所有的gradient加起来,它会考虑方向;而Root Mean Square只考虑大小,不考虑方向。
在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值