深度学习中的学习率衰减方法全集

深度学习常用学习率衰减方法全解

扫盲

什么是学习率?
想象 X 2 X^2 X2图像,学习率就是下降找最优解的步长(从左边或者右边下山的步幅)
在这里插入图片描述

步子太大(学习率高)→ 可能会跳过宝藏
步子太小(学习率低)→ 找得很慢
越到底部我们可以发现如果步长不变的话,会左右震荡
所以,我们需要学习率衰减,开始大步找,后来慢慢小步调整

一、基础衰减方法

1. 固定步长衰减 (StepLR)

公式
η t = η 0 × γ ⌊ t / s ⌋ \eta_t = \eta_0 \times \gamma^{\lfloor t/s \rfloor} ηt=η0×γt/s
参数

  • step_size:衰减周期(每s个epoch衰减一次)
  • gamma:衰减系数(通常0.1-0.5)
    特点
  • 简单易用
  • 呈阶梯式下降
    适用场景
  • 初步训练阶段
  • 需要稳定降低学习率的任务

怎么用:每走5步,步子减半
例子:

开始步子:1米
第5层后:0.5米
第10层后:0.25米

1步:1米 → 第2步:1米 → ... → 第5步:1米  
第6步:0.5米 → 第7步:0.5米 → ...

2. 多步长衰减 (MultiStepLR)

公式
η t = η 0 × γ ∑ m 1 ( t ≥ m ) \eta_t = \eta_0 \times \gamma^{\sum_{m} \mathbf{1}(t \geq m)} ηt=η0×γm1(tm)
参数

  • milestones:预设衰减节点列表(如[30,60,90])
    特点
  • 允许非均匀间隔衰减
  • 更灵活的阶段控制
    适用场景
  • 分阶段训练(如预训练+微调)
  • 复杂学习率调度需求
方法名称公式/原理优点缺点适用场景
固定步长衰减lr = lr * γ (每N步衰减γ倍)简单易实现需手动设置衰减点基础分类任务
指数衰减lr = lr₀ * e^(-kt)平滑连续变化对初始参数敏感收敛稳定性要求高的任务
时间衰减lr = lr₀ / (1 + kt)初期衰减快后期平缓需调优衰减系数k大规模数据集训练
阶梯衰减lr = lr₀ * γ^floor(t/N)离散式分段调整学习率突变可能破坏收敛典型CV任务(如ResNet)

二、自适应衰减方法

3. 指数衰减 (ExponentialLR)

公式
η t = η 0 × γ t \eta_t = \eta_0 \times \gamma^{t} ηt=η0×γt
特点

  • 连续指数下降
  • 需要谨慎选择γ(通常0.95-0.99)
    适用场景
  • 需要平滑衰减的任务
  • 长时间训练任务

怎么用:每次训练都让学习率像雪球融化一样变小一点
例子:

开始:大雪球(学习率1.0)
每次融化10%:
第1次:0.9
第2次:0.81
第3次:0.729

☃️ 1.00.90.810.729...
(每次都乘0.9

4. 余弦衰减 (CosineAnnealingLR)

公式
η t = η m i n + 1 2 ( η 0 − η m i n ) ( 1 + cos ⁡ ( t T π ) ) \eta_t = \eta_{min} + \frac{1}{2}(\eta_0 - \eta_{min})(1 + \cos(\frac{t}{T}\pi)) ηt=ηmin+21(η0ηmin)(1+cos(Ttπ))
参数

  • T_max:半周期长度
  • eta_min:最小学习率(通常0)
    特点
  • 模拟余弦曲线下降
  • 允许周期性重启
    适用场景
  • 图像分类任务
  • 需要跳出局部最优的场景
方法名称核心机制关键参数优势领域
余弦退火lr = lr_min + ½(lr_max-lr_min)(1+cos(T_cur/T))T_max(周期长度)NLP微调、GAN训练
带重启余弦退火周期性重置学习率最大值T_mult(周期倍增)逃离局部最优
OneCycle先升后降的三角策略pct_start(上升段)快速收敛的小数据集
CLR(三角循环)在上下界间周期性震荡step_size探索最优学习率范围

怎么用:像滑滑梯一样,开始快,后来慢,滑到底又爬回去
例子:

开始:滑得超快(学习率1.0)
中间:速度变慢
到底部:最慢(0.1)
突然!又回到高处重新滑

🎢 滑梯形状:高 → 低 → 高 → 低...
学习率变化:1.00.50.10.50.1...

三、动态调整方法

5. 按指标衰减 (ReduceLROnPlateau)

机制
监控验证指标(如loss/accuracy),当指标停止改进时衰减
参数

  • factor:衰减系数(0.1-0.5)
  • patience:等待epoch数
  • mode:min(loss)/max(accuracy)
    特点
  • 依赖验证集表现
  • 需要选择合适监控指标
    适用场景
  • 验证指标波动较大的任务
  • 需要自动适应训练动态的任务

怎么用:老师看你成绩没进步,就让你更仔细检查
例子:

连续3次考试分数一样 → 学习率减半
连续5次没进步 → 再减半

6. 线性衰减 (LinearLR)

公式
η t = η 0 × ( 1 − t T ) \eta_t = \eta_0 \times (1 - \frac{t}{T}) ηt=η0×(1Tt)
特点

  • 线性递减到0
  • 需要预设总步数T
    适用场景
  • 需要稳定收敛的优化任务
  • 联合其他衰减方法使用
方法名称调节依据数学形式适用场景
ReduceLROnPlateau验证指标停滞时衰减lr *= γ (当指标不提升)验证集可靠的场景
GradNorm根据梯度幅值动态调整lr ∝ ‖∇L‖多任务学习
AdaDelta自适应调整学习率(二阶动量)自动计算无需手动设置非凸优化问题

四、高级调度策略

7. 带重启余弦衰减 (CosineWarmRestarts)

公式
η t = η m i n + 1 2 ( η 0 − η m i n ) ( 1 + cos ⁡ ( t c u r T i π ) ) \eta_t = \eta_{min} + \frac{1}{2}(\eta_0 - \eta_{min})(1 + \cos(\frac{t_{cur}}{T_i}\pi)) ηt=ηmin+21(η0ηmin)(1+cos(Titcurπ))
参数

  • T_0:初始周期长度
  • T_mult:周期倍增因子
    特点
  • 周期性重启学习率
  • 逐步延长周期长度
    适用场景
  • 小批量数据训练
  • 需要跳出局部最优的任务

8. 循环学习率 (CyclicLR)

机制
在预设范围内周期震荡调整学习率
参数

  • base_lr:下限学习率
  • max_lr:上限学习率
  • step_size:半周期步数
    特点
  • 促进参数空间探索
  • 需要更大batch size
    适用场景
  • 损失曲面复杂任务
  • 需要避开尖锐最小值的情况
方法名称创新点典型应用效果提升
SGDR带热重启的余弦退火小样本学习收敛速度↑30%
Super-Convergence超高速学习率训练图像分类训练时间↓50%
Linear Warmup初始阶段线性增加学习率大Batch训练稳定性↑40%
Polynomial Decay多项式衰减 lr = (lr₀ - lr_end)(1-t/T)^p + lr_end语音识别最终精度↑1-2%

五、方法对比与选型指南

方法训练速度超参数数适用任务类型典型场景
StepLR2基础分类任务ResNet/CIFAR10
CosineAnnealing2图像分类Transformer/ImageNet
ReduceLROnPlateau3指标波动任务GAN训练
CyclicLR4复杂优化任务对抗训练
OneCycleLR最快5快速收敛需求小样本学习

使用建议

  1. 初期实验:从StepLR或Cosine开始
  2. 精细调优:尝试ReduceOnPlateau+Cosine组合
  3. 快速收敛:使用OneCycle策略
  4. 不稳定训练:配合Warmup使用线性增长

注:实际应用中常组合多种策略,如Warmup+CosineLinear+Plateau

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

六月五日

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值