神经网络中 warmup 策略为什么有效;有什么理论解释么?
的有关信息介绍如下:
这个问题目前还没有被充分证明,我们只能从直觉上和已有的一些论文[1,2,3]得到推测:
下面来看一下为什么warmup会有这样的效果。
首先,[1]告诉我们,当我们的mini-batch增大的时候,learning rate也可以成倍增长,即,mini-batch大小乘以k,lr也可以乘以k。这是为什么呢?比如现在模型已经train到第t步,权重为 ,我们有k个mini-batch,每个大小为n,记为 。下面我们来看,以学习率 训k次 和以学习率 一次训 时学习率的关系。
假设我们用的是SGD,那么训k次后我们可以得到:
如果我们一次训就可以得到:
显然,这两个是不一样的。但如果我们假设 ,那么令 就可以保证 。那么,在什么时候 可能不成立呢?[1]告诉我们有两种情况:
第一种情况很好理解,可以认为,刚开始模型对数据的“分布”理解为零,或者是说“均匀分布”(当然这取决于你的初始化);在第一轮训练的时候,每个数据点对模型来说都是新的,模型会很快地进行数据分布修正,如果这时候学习率就很大,极有可能导致开始的时候就对该数据“过拟合”,后面要通过多轮训练才能拉回来,浪费时间。当训练了一段时间(比如两轮、三轮)后,模型已经对每个数据点看过几遍了,或者说对当前的batch而言有了一些正确的先验,较大的学习率就不那么容易会使模型学偏,所以可以适当调大学习率。这个过程就可以看做是warmup。那么为什么之后还要decay呢?当模型训到一定阶段后(比如十个epoch),模型的分布就已经比较固定了,或者说能学到的新东西就比较少了。如果还沿用较大的学习率,就会破坏这种稳定性,用我们通常的话说,就是已经接近loss的local optimal了,为了靠近这个point,我们就要慢慢来。
第二种情况其实和第一种情况是紧密联系的。在训练的过程中,如果有mini-batch内的数据分布方差特别大,这就会导致模型学习剧烈波动,使其学得的权重很不稳定,这在训练初期最为明显,最后期较为缓解(所以我们要对数据进行scale也是这个道理)。
这说明,在上面两种情况下,我们并不能单纯地成倍增长lr 。要么改变学习率增长方法,要么设法解决上面两个问题。
有趣的是,warmup在ResNet[4]中就已经提到了,原文说的是:
在注释中说的是:
这两句话是说,如果一开始就用0.1,虽然最终会收敛,但之后acc还是不会提高(使用了pateaus schedule);如果用了warmup,在收敛后还能有所提高。也就是说,用warmup和不用warmup达到的收敛点,对之后模型能够达到的suboptimal有影响。这说明什么?这说明不用warmup收敛到的点比用warmup收敛到的点更差。这可以从侧面说明,一开始学偏了的权重后面拉都拉不回来……
同时,[2]中也提到:
这说明一开始的高lr对深度模型的影响是很显著的。它的不稳定性(instability)也就是上面我们提到的两个点。
[3]通过一些实验告诉我们:
从图二(b,c)可以看到,加了warmup增加了模型最后几层的相似性,这表明warmup可以避免FC层的不稳定的剧烈改变。从图一中可以看到,在有了warmup之后,模型能够学得更稳定。
综上所述,如果来总结一下现在大batch size和大learning rate下的学习率变化和规律的话,可以认为,学习率是呈现“上升——平稳——下降”的规律,这尤其在深层模型和具有多层MLP层的模型中比较显著。如果从模型学习的角度来说,学习率的这种变化对应了模型“平稳——探索——平稳”的学习阶段。
那么你也许会问,为什么早期的神经网络没有warmup?这就回到了之前我们说的两点,与它们对应,早期神经网络的环境是:
这两点和之前[1]中提到的两点是对应的。网络不够大不够深就意味着模型能够比较容易地把分布拉回来,数据集比较小意味着mini-batch之间的方差可能没有那么大。从而学习率不进行warmup可能不会出现很严重的学习问题。
更新:最新的研究可以看“On Layer Normalization in the Transformer Architecture”这篇文章
之前写过一篇介绍,参考:https://zhuanlan.zhihu.com/p/84614490
在这里就不具体展开了。
[1] Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour
[2] LARGE BATCH TRAINING OF CONVOLUTIONAL NETWORKS
[3] A CLOSER LOOK AT DEEP LEARNING HEURISTICS: LEARNING RATE RESTARTS, WARMUP AND DISTILLATION
[4] Deep Residual Learning for Image Recognition
[5] On Layer Normalization in the Transformer Architecture



