文章

23 学习率衰减(Learning Rate Decay)

23 学习率衰减(Learning Rate Decay)

一、为什么要使用学习率衰减?

  在使用 Mini-batch 梯度下降法 时:

  • Mini-batch 的样本数量较小(如 64 或 128),导致梯度估计存在 噪声(noise)
  • 若使用 固定学习率 $\alpha$,优化过程会在最优值附近 持续震荡,无法精确收敛;
  • 如果 随训练进程逐渐减小学习率,初期快速下降,后期精细调整,可使参数更稳定地收敛到最小值附近。

核心思想
初期用较大的学习率快速逼近最优区域,后期用较小的学习率精细微调,减少震荡。


二、什么是“一代”(Epoch)?

  • 1 个 epoch = 完整遍历一次整个训练集;
  • 若将训练集划分为多个 mini-batch,则一个 epoch 包含若干次参数更新;
  • 学习率衰减通常以 epoch 数($\text{epoch_num}$)为自变量进行调整。

三、常用的学习率衰减策略(公式汇总)

1. 分式衰减(Inverse Time Decay)

\[\alpha = \frac{1}{1 + \text{decay\_rate} \cdot \text{epoch\_num}} \cdot \alpha_0\]
  • $\alpha_0$:初始学习率;
  • $\text{decay_rate}$:衰减率(超参数);
  • 随 epoch 增加,学习率单调递减。

📌 示例:若 $\alpha_0 = 0.2$,$\text{decay_rate} = 1$,则:

  • epoch 1: $\alpha = \frac{1}{1+1} \cdot 0.2 = 0.1$
  • epoch 2: $\alpha = \frac{1}{1+2} \cdot 0.2 \approx 0.067$

2. 指数衰减(Exponential Decay)

\[\alpha = \alpha_0 \cdot \beta^{\text{epoch\_num}}\]
  • 其中 $0 < \beta < 1$(如 $\beta = 0.95$);
  • 学习率呈指数级下降,初期下降快,后期趋缓。

3. 平方根衰减(Square Root Decay)

  有两种常见形式:

  • 基于 epoch:

    \[\alpha = \frac{k}{\sqrt{\text{epoch\_num}}} \cdot \alpha_0\]
  • 基于迭代步数 $t$(即 mini-batch 的更新次数):

    \[\alpha = \frac{k}{\sqrt{t}} \cdot \alpha_0\]
  • $k$ 为常数超参数;
  • 衰减速度比指数衰减慢,适用于某些理论保证的优化场景(如凸优化)。

4. 阶梯式衰减(Step Decay / Discrete Staircase)

  • 在预设的 epoch 节点(如每 10 个 epoch)将学习率 乘以一个因子(如 0.5);
  • 例如:

    \[\alpha = \begin{cases} \alpha_0, & \text{if epoch} < 10 \\ 0.5 \alpha_0, & \text{if } 10 \leq \text{epoch} < 20 \\ 0.25 \alpha_0, & \text{if } 20 \leq \text{epoch} < 30 \\ \dots \end{cases}\]
  • 实践中非常常用,尤其在计算机视觉任务中。

5. 手动衰减(Manual Decay)

  • 在长时间训练中(如数天),人工观察损失曲线,手动调低学习率
  • 适用于单模型精细调优,但不可扩展,不适合自动化或大规模实验。

四、实践建议

  • 学习率衰减 不是首要尝试的技巧
  • 优先 固定学习率 + 良好调参(如通过验证集选择 $\alpha_0$)往往已有显著效果;
  • 衰减策略和超参数($\alpha_0$, decay_rate, $\beta$, $k$ 等)需通过 超参数调优(如网格搜索、随机搜索、贝叶斯优化)确定;
  • 下一节将介绍 系统化的超参数调优方法

五、关键总结

要点说明
动机减少 mini-batch 噪声引起的震荡,提升收敛稳定性
核心机制初期大步快跑,后期小步微调
常用策略分式衰减、指数衰减、平方根衰减、阶梯衰减、手动调整
超参数$\alpha_0$(初始学习率)、decay_rate、$\beta$、$k$ 等
工程建议先固定学习率调好基础模型,再考虑引入衰减
本文由作者按照 CC BY 4.0 进行授权