给模型热身——深度学习中的warm up

时间:2024-04-06 13:50:58

Warm up是BERT
中一项重要的trick,它是什么,它究竟能带给我们什么,以及如何实现。

它是什么

Warm up是一种学习率的设置方法,其学习率的变化如下图所示。

  • 假设我们使用随训练衰减的学习率设置方法,学习率的最大值是pp
  • 在模型训练的前nn步进行warm up,第ii步的学习率为inp\frac {i}{n} \cdot p
    给模型热身——深度学习中的warm up

它能带给我们什么

有时候,在我们的数据集中,样本间的差异很大。比如情感分析任务,有些正负样本很简单,也很容易被模型学习到两者之间的差异。

这个电影真好看。
这个电影真垃圾。

然而,我们希望模型不止于此,模型应该能分辨更复杂、更隐晦的评论样本。

  1. 如果我们没做warming up,然后恰好在训练模型初期,喂给模型的样本都是简单的样本,那么模型很容易early over-fitting.

  2. 更糟糕的情况时,如果我们的学习率是随训练衰减的,那模型在一开始由于学习率很大,将“用力过猛”,可能会用很大的学习率学习到一些无关特征。

当然我们不用mini-batch的训练方式,而是让模型遍历整个数据集之后再进行训练会减弱第1种问题,但综合考虑模型最终收敛效果和资源消耗,mini-batch还是主流选择。

如何实现

tensorflow实现方式可以看这个人的代码:TensorFlow中的学习率“热身”