前言
大多数人在训练模型时遇到训练卡住,无法继续往下进行时,会把它归结为梯度下降过小,已经进入critical point
。其实不然,如果在这个时间去计算其梯度会发现,梯度远没有到达足够小的情况。那么是什么样的原因导致了训练无法继续下去呢?本文将揭示可能影响到训练的另一个因素——学习率(learning rate)
1. 不同的参数需要不一样的学习率
正如此段的标题,学习率在训练的过程中应该处于一个动态变化的过程,即从,
变化为如下:
其中,分母的值与之前经过的点的梯度值有关,换句话说,目前所处的梯度趋势,将会间接影响到学习率。当曲线斜率略显陡峭时,分母大,学习率小,从而使步长减少;当曲线趋于平缓,分母小,学习率增大,使步长增大。
2. 学习率与时序的关系
2.1 “井喷”现象
通过使learning rate
产生变化,如上图所示,我们可以发现,已经可以走到目标点,模型训练基本完成。但明显可以观察到,模型在训练过程中发生了几次特别大的起伏,这是什么原因呢?
在训练时,学习率呈现一个由小增大的趋势。sigma
在图中第一个转折点后变小,随着小sigma的不断累积,使得某一点的学习率突然增大,因此出现井喷现象。由于井喷现象发生后,g
值增大,又使得步长减小,能够在一定的迭代次数后,又回到正轨。为了解决这一问题,我们使分子随着时间进行变化
2.2 时间序列
时间与n呈反比例关系,使模型训练进行到后期时,学习率永远呈现一个比较小的值,从而步长趋于平缓,得到了一个很好的结果
2.3 热身训练
https://arxiv.org/abs/1706.03762
在这篇文章中,提出了一个热身的概念,即先让学习率在开始后的短时间内,保持一个较大的值,可以极大的促进训练的效果。