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

文章目录

  • 一、Training stuck ≠ Small Gradient
  • 二、Wait a minute
  • 三、Training can be difficult even without critical points
  • 四、Different parameters needs different learning rate
  • 五、Root mean square
  • 六、RMSProp
  • 七、Adam: RMSProp + Momentum
  • 八、Learning Rate Scheduling
  • 九、Warm Up
  • 十、Summary of Optimization


一、Training stuck ≠ Small Gradient

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

二、Wait a minute

1. 事实上走到critical point其实是一件困难的事情,因为大多数training还没有到critical point就已经停止了。
2. 如下图所示,现在要得到这个图中的结果,需要训练参数到很接近critical point,但是用一般的gradient descend是做不到的。因为当gradient很大时,loss就已经掉下去了,所以这里需要用到特殊的方法训练。
李宏毅机器学习笔记第8周_自动调整学习速率_第4张图片
因此,目前用gradient descend来做optimization时,我们要怪罪的对象不是critical point,而是其他的原因。

三、Training can be difficult even without critical points

1. 如下图所示,当参数w和b不一样时,loss的值就不一样,这样就画出了error surface。这个error surface是convex形状,它的最低点在黄色叉的地方,它的等高线是椭圆形的。它在横轴的地方,gradient变化很小,坡度变化很小,比较平滑,在纵轴的地方,gradient变化很大,坡度变化很大,比较陡峭。
李宏毅机器学习笔记第8周_自动调整学习速率_第5张图片
现在从黑色的点开始做gradient descend。
2. 如下图所示。
李宏毅机器学习笔记第8周_自动调整学习速率_第6张图片
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调小一点。
李宏毅机器学习笔记第8周_自动调整学习速率_第7张图片
2. 如下图所示,上面这个式子是原来的gradient descend,learning rate是固定的。现在我要有一个随着参数客制化的learning rate,于是得到下面那个式子,这样就有一个parameter dependent的learning rate。
李宏毅机器学习笔记第8周_自动调整学习速率_第8张图片

五、Root mean square

1. 如下图所示,这是一个计算gradient的Root Mean Square。
李宏毅机器学习笔记第8周_自动调整学习速率_第9张图片
2. 如下图所示,这里是用在Adagrad的方法里面。当坡度比较大时,gradient就比较大,σ就比较大,所以learning rate就比较小。当坡度比较小时,gradient就比较小,σ就比较小,所以learning rate就比较大。因此,有了σ后,我们就可以随着参数的不同,自动地调整learning rate的大小。
李宏毅机器学习笔记第8周_自动调整学习速率_第10张图片
3. 我们之前认为同一个参数的gradient的大小固定差不多的值,但并不是这个样子,同一个参数的learning rate会随时间地变化而变化。如下图所示,是一个新月形的error surface。可以发现同一个参数同一个方向,learning rate可以动态的调整。
李宏毅机器学习笔记第8周_自动调整学习速率_第11张图片

六、RMSProp

1. 如下图所示,RMSProp第一步和Root Mean Square是一样的,在下面的步骤中不一样的是在计算Root Mean Square时,每一个gradient都有同等的重要性,在RMSProp中,你可以调整它的重要性。
李宏毅机器学习笔记第8周_自动调整学习速率_第12张图片
α如果设很小趋近于0时,就对与我们计算出来的gradient比较重要;α如果设很大趋近于1时,就对与我们计算出来的gradient比较不重要。
2. 如下图所示,我们现在动态调整σ。图中的黑线是error surface。在陡峭的地方gradient会变大,我们就把α设小,就可以很快地把σ的值变大,也就可以把步伐变小;在平坦的地方gradient会变小,我们就把α设大,就可以很快地把σ的值变小,也就可以把步伐变大。
李宏毅机器学习笔记第8周_自动调整学习速率_第13张图片

七、Adam: RMSProp + Momentum

最常用的optimization的策略是Adam,Adam就是RMSProp + Momentum。
李宏毅机器学习笔记第8周_自动调整学习速率_第14张图片

八、Learning Rate Scheduling

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

九、Warm Up

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

十、Summary of Optimization

1. 这里我们添加了Momentum,现在不是顺着gradient的方向来更新参数,而是把之前全部的gradient的方向,做一个总和来当做更新的方向。
2. 如下图所示,这里需要除以gradient的Root Mean Square。Momentum直接把所有的gradient加起来,它会考虑方向;而Root Mean Square只考虑大小,不考虑方向。
李宏毅机器学习笔记第8周_自动调整学习速率_第18张图片


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