warmup_proportion预热学习率的作用


作者:EO_eaf6
链接:https://www.jianshu.com/p/19a4abfcd835
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

学习率(learning rate)是神经网络训练中最重要的超参数之一,针对学习率的优化方式很多,Warmup是其中的一种。

什么是Warmup?

Warmup是在ResNet论文中提到的一种学习率预热的方法,它在训练开始的时候先选择使用一个较小的学习率,训练了一些epoches或者steps(比如4个epoches,10000steps),再修改为预先设置的学习来进行训练。

为什么使用Warmup?

由于刚开始训练时,模型的权重(weights)是随机初始化的,此时若选择一个较大的学习率,可能带来模型的不稳定(振荡),选择Warmup预热学习率的方式,可以使得开始训练的几个epoches或者一些steps内学习率较小,在预热的小学习率下,模型可以慢慢趋于稳定,等模型相对稳定后再选择预先设置的学习率进行训练,使得模型收敛速度变得更快,模型效果更佳。

Example:Resnet论文中使用一个110层的ResNet在cifar10上训练时,先用0.01的学习率训练直到训练误差低于80%(大概训练了400个steps),然后使用0.1的学习率进行训练。

Warmup的改进

前面所述的Warmup是constant warmup,它的不足之处在于从一个很小的学习率一下变为比较大的学习率可能会导致训练误差突然增大。于是18年Facebook提出了gradual warmup来解决这个问题,即从最初的小学习率开始,每个step增大一点点,直到达到最初设置的比较大的学习率时,采用最初设置的学习率进行训练。


文章作者: CarlYoung
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 CarlYoung !
 上一篇
What is the difference between FP16 and FP32 when doing deep learning? What is the difference between FP16 and FP32 when doing deep learning?
https://www.quora.com/What-is-the-difference-between-FP16-and-FP32-when-doing-deep-learning This is a well-timed quest
下一篇 
PyTorch中在反向传播前为什么要手动将梯度清零? PyTorch中在反向传播前为什么要手动将梯度清零?
作者:Pascal链接:https://www.zhihu.com/question/303070254/answer/573037166来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 这种模式可以让梯度
  目录