学习率调整
线性缩放规则
Linear Scaling Rule
-
学习率通常要随着Batch Size的增大而相应地增大
-
当批量大小增加m倍时,学习率也增加m倍
-
线性缩放规则往往在批量大小比较小时适用,当批量大小非常大时,线性缩放会使得训练不稳定
学习率衰减
Learning Rate Decay
分段常数衰减
Piecewise Constant Decay(Step Decay)
- 人为设置没经过 T 1 , T 2 , T 3 . . . T_1, T_2, T_3 ... T1,T2,T3...次迭代,将学习率衰减为 β 1 , β 2 , β 3 . . . {\beta}_1, {\beta}_2, {\beta}_3 ... β1,β2,β3...
逆时衰减
Inverse Time Decay
-
数学描述
α t = α 0 1 1 + β × t \alpha_{t}=\alpha_{0} \frac{1}{1+\beta \times t} αt=α01+β×t1
其中 β \beta β为衰减率
指数衰减
Exponential Decay
-
数学描述
α t = α 0 β t \alpha_{t}=\alpha_{0} \beta^{t} αt=α0βt
其中 β < 1 \beta < 1 β<1为衰减率
自然指数衰减
Natural Exponential Decay
-
数学描述
α t = α 0 exp ( − β × t ) \alpha_{t}=\alpha_{0} \exp (-\beta \times t) αt=α0exp(−β×t)
其中 β \beta β为衰减率
余弦退火
Cosine Decay
-
数学描述
α t = 1 2 α 0 ( 1 + cos ( t π T ) ) \alpha_{t}=\frac{1}{2} \alpha_{0}\left(1+\cos \left(\frac{t \pi}{T}\right)\right) αt=21α0(1+cos(Ttπ))
学习率预热
Warm Up
-
Motivation
- 由于模型参数在训练开始时是随机初始化的,刚开始的几个Iteration一般梯度较大,若初始学习率较大,会使训练不稳定,难以收敛到全局最优
-
为了提高训练稳定性,我们可以在最初几轮迭代时,采用比较小的学习率,等梯度下降到一定程度后再恢复到初始的学习率,这种方法称为学习率预热(Learning Rate Warmup)
-
一个常用的学习率预热方法是逐渐预热(Gradual Warmup)。假设预热的迭代次数为 T ′ T' T′,初始学习率为 α 0 {\alpha}_0 α0,在Warmup过程中,每次更新的学习率为
α t ′ = t T ′ α 0 , 1 ≤ t ≤ T ′ \alpha_{t}^{\prime}=\frac{t}{T^{\prime}} \alpha_{0}, \quad 1 \leq t \leq T^{\prime} αt′=T′tα0,1≤t≤T′
当预热过程结束,再选择一种学习率衰减方法来逐渐降低学习率
周期学习率调整
-
Motivation
- 为了使梯度下降法能够逃离鞍点或尖锐最小值,可考虑周期性增大或减小学习率,跳出局部最优
循环学习率
Cyclic Learning Rate
-
让学习率在一个区间内周期性地增大和缩小
-
一种线性缩放的实现方式:三角循环学习率(Triangular Cyclic Learning Rate)
-
假设每个循环周期的长度相等都为 2 Δ T 2ΔT 2ΔT,其中前 Δ T ΔT ΔT步为学习率线性增大阶段,后 Δ T ΔT ΔT步为学习率线性缩小阶段。在第t次迭代时,其所在的循环周期数m为
m = ⌊ 1 + t 2 Δ T ⌋ m=\left\lfloor 1+\frac{t}{2 \Delta T}\right\rfloor m=⌊1+2ΔTt⌋
-
第t次迭代的学习率为
α t = α min m + ( α max m − α min m ) ( max ( 0 , 1 − b ) ) \alpha_{t}=\alpha_{\min }^{m}+\left(\alpha_{\max }^{m}-\alpha_{\min }^{m}\right)(\max (0,1-b)) αt=αminm+(αmaxm−αminm)(max(0,1−b))
α max m \alpha_{\max }^{m} αmaxm和 α min m \alpha_{\min }^{m} αminm分别为第m个周期中学习率的上界和下界,可以随着m的增大而逐渐降低b = ∣ t Δ T − 2 m + 1 ∣ b=\left|\frac{t}{\Delta T}-2 m+1\right| b= ΔTt−2m+1
-
带热重启的随机梯度下降
-
学习率每间隔一定周期后重新初始化为某个预先设定值,然后逐渐衰减
-
假设在梯度下降过程中重启 M M M次,第 m m m次重启在上次重启开始第 T m T_m Tm个回合后进行, T m T_m Tm称为重启周期。在第 m m m次重启之前,采用余弦衰减来降低学习率,第 t t t次迭代的学习率为
α t = α min m + 1 2 ( α max m − α min m ) ( 1 + cos ( T c u r T m π ) ) \alpha_{t}=\alpha_{\min }^{m}+\frac{1}{2}\left(\alpha_{\max }^{m}-\alpha_{\min }^{m}\right)\left(1+\cos \left(\frac{T_{c u r}}{T_{m}} \pi\right)\right) αt=αminm+21(αmaxm−αminm)(1+cos(TmTcurπ))
α max m \alpha_{\max }^{m} αmaxm和 α min m \alpha_{\min }^{m} αminm分别为第m个周期中学习率的上界和下界,可以随着m的增大而逐渐降低。 T c u r T_{cur} Tcur为从上次重启之后的Epoch数,可取小数以便在一个Epoch内进行衰减。重启周期 T m T_m Tm可以随着重启次数逐渐增加,例如 T m = T m − 1 × τ , τ ≥ 1 T_{m}=T_{m-1} \times \tau, \tau \geq 1 Tm=Tm−1×τ,τ≥1