Lecture 2 -- Adaptive Learning Rate

1. Training stuck ≠ Small Gradient


如果我们在训练过程中遇到了training stuck不一定是遇到了critical point也可能是走到了critical point附近并在山谷两端左右徘徊!

把此时的梯度计算出来,可以发现,梯度并不为0,可以证明此时loss并不处于critical point处!

即使是没有任何critical point的损失函数,当我们把learning rate设置为定值时,训练过程也会变得非常困难!

不同的参数需要不同的learning rate

在损失陡峭的地方,我们应该减小步伐(刹车),即减小学习率,

在损失平坦的地方,我们应该增大步伐(加速),即增大学习率。

我们应该如何动态的控制学习率???

 

 

2. AdaGrad & RMSProp & Adam


第一种方式:AdaGrad,如上图。

每一次更新参数时,学习率都会除以一个数σσ是前面所有更新过程所计算梯度的均方根;

当遇到平坦地带时,更新几次参数所计算的梯度都比较小,就会导致σ小,η/σ增大,步伐增大;

当遇到陡峭地带时,更新几次参数所计算的梯度都比较大,就会导致σ大,η/σ减小,步伐减小。

可以想象一下,这种更新学习率的方式存在一定的问题,如果在一个较长的平坦地带更新非常多次的参数,这些梯度的均方根非常小,从而导致学习率爆炸式增长,loss出现“喷”到某一处,接着再计算这一处的梯度,调整学习率,继续更新参数。

第二种方式:RMSProp,如上图。

AdaGrad不同的是,其σ的计算会在当前的梯度和之前的所有梯度之间做一个权衡,如果α设置的比较小,则σ的大小更多的取决于当前的梯度!

现如今,使用最多的优化算法是Adam,其可以看作是RMSPropMomentum的结合,这两个方法都考虑了当前的梯度和之前的所有梯度,

不同的是,Momentum不仅考虑了所有梯度的大小,同时考虑了方向,而RMSProp仅考虑了所有梯度的大小,进而调整学习率(从σ的计算公式可以看出)

 

 

3. Learning Rate Scheduling


此外,学习率也可以随时间动态变化,常见的做法有learning rate decaywarm up

learning rate decay是指随着训练的进行,学习率不断变小

warm up是指随着训练的进行,学习率先变大后变小,在大语言模型BERTTransformer中,warm up这种方法也都有用到!

 

 

4. Summary of Optimization


调整Optimization,无非就是调整learning rate schedulingmomentum,以及调整σ的计算方式(AdaGrad,RMSProp等)

 

 


 END

posted @ 2023-07-20 17:10  Peg_Wu  阅读(36)  评论(0编辑  收藏  举报