深度学习:学习率衰减(Learning Rate Decay)

✅ 一、什么是学习率衰减?

学习率衰减(Learning Rate Decay) 是一种在训练过程中逐步降低学习率的技术。其核心思想是:

🔍 "先快后慢":

  • 初期用较大的学习率快速逼近最优解;
  • 后期用较小的学习率精细调整,避免震荡或跳过最小值。

✅ 二、为什么需要学习率衰减?

2.1 学习率过大 → 震荡

  • 在接近最优解时,大步长会导致模型"来回跳动",无法收敛;
  • 类比:爬山时最后几步太大,会从山顶滑下去。

2.2 学习率过小 → 收敛慢

  • 初期更新太慢,浪费训练时间;
  • 类比:刚开始走得太小心,效率低下。

✅ 因此,动态调整学习率是提升训练效果的关键策略。


✅ 三、常见学习率衰减方法

3.1 分段常数衰减(Piecewise Constant Decay)

  • 将训练过程分为多个阶段,每个阶段使用不同的固定学习率;

  • 常用于实验中手动调参。

    示例:每 10 epochs 降一次

    lr = [0.1, 0.05, 0.01, 0.001] # 每个阶段的 learning rate

✅ 优点:简单直观;

❌ 缺点:不够灵活,需人工设定。


3.2 指数衰减(Exponential Decay)

  • 学习率按指数函数下降:或

其中:

  • :初始学习率;
  • :当前训练步数;
  • :衰减系数。

✅ 优点:平滑下降,适合大多数任务。


3.3 自然指数衰减(Natural Exponential Decay)

  • 更常用的变体:其中 ( T ) 是总训练步数。

✅ 特点:前期下降快,后期趋于平稳。


3ا4 多项式衰减(Polynomial Decay)

  • 使用多项式函数控制学习率下降:其中:
    • :幂次(通常取 0.5~1.0);
    • :总训练步数。

✅ 优点:可定制衰减曲线形状;

❌ 缺点:对超参数敏感。


3.5 余弦退火(Cosine Annealing)

  • 使用余弦函数模拟学习率变化:

  • 可结合周期性重启(Cyclic LR),实现"热重启"策略。

✅ 优点:能有效逃出局部极小值;

⭐ 常见于现代优化器(如 PyTorch 的 CosineAnnealingLR)。


3.6 余弦衰减(Cosine Decay)

  • 类似余弦退火,但不重启:

✅ 优点:平滑过渡到最小学习率。


✅ 四、实际应用建议

方法 适用场景 推荐程度
分段常数 手动调参、调试阶段 ⭐⭐
指数衰减 通用任务 ⭐⭐⭐
多项式衰减 需要精细控制 ⭐⭐⭐
余弦退火 复杂模型、大规模训练 ⭐⭐⭐⭐

💡 经验法则:

  • 初始学习率:0.001 ~ 0.01;
  • 衰减方式:优先尝试余弦退火或指数衰减;
  • 结合早停(Early Stopping)防止过拟合。

✅ 五、代码示例(PyTorch)

复制代码
import torch
import torch.optim as optim
from torch.optim.lr_scheduler import StepLR, ExponentialLR, CosineAnnealingLR

model = torch.nn.Linear(10, 1)
optimizer = optim.SGD(model.parameters(), lr=0.01)

# 1. 分段衰减
scheduler = StepLR(optimizer, step_size=10, gamma=0.5)  # 每10步乘0.5

# 2. 指数衰减
scheduler = ExponentialLR(optimizer, gamma=0.95)  # 每步乘0.95

# 3. 余弦退火
scheduler = CosineAnnealingLR(optimizer, T_max=100)  # 总步数100

for epoch in range(num_epochs):
    for batch in dataloader:
        optimizer.zero_grad()
        loss = model(batch)
        loss.backward()
        optimizer.step()
    
    scheduler.step()  # 更新学习率

✅ 六、总结

🌟 学习率衰减是提升模型收敛速度与稳定性的关键技术

它让训练过程像"登山"一样:先大步前进,再小步精调。

  • 分段衰减:简单直接;
  • 指数/多项式衰减:平滑可控;
  • 余弦退火:最先进,推荐使用。

💡 一句话记住 :
"学习率不是越大越好,而是越'聪明'越好。"

相关推荐
haliu2 分钟前
【FHE 同态加密】我们如何实现同态加密推理(十四):为什么 `RESULT=PASS` 不是判据(纯 C11 · 零依赖)
人工智能·嵌入式·c·fhe·推理引擎·c11·边缘推理·同态加密推理
pjj198544 分钟前
NLP-情感分析项目(四):训练评估 + 主函数
人工智能·深度学习·机器学习
微三云生态系统架构师-彭丹9 分钟前
微团AI红包风控与反作弊引擎:设备指纹与红包池熔断架构
人工智能·架构
FPGA信号处理16 分钟前
【信号检测与估计】第四节课:非高斯噪声下的 BLUE、极大似然与 EM 算法
人工智能·算法·机器学习
IT大白鼠18 分钟前
彭大帅的AI运维助手——自然语言管理 Linux 集群与网络设备——第 2 篇 · 安全守规矩的 AI:分级安全管控是灵魂
linux·运维·人工智能
闭包不眠20 分钟前
端侧AI能省多少服务器钱:把账换成字节算
运维·服务器·图像处理·人工智能·计算机视觉
IT_陈寒23 分钟前
Java的HashMap线程安全问题让我深夜掉光了头发
前端·人工智能·后端
CHENKONG_CK25 分钟前
恶劣工况下 RFID 赋能喷涂产线自动化分拣与作业
运维·网络·人工智能·自动化·汽车·rfid·rfid
计算机源码社28 分钟前
【27届大数据毕设】基于Spark的TikTok短视频属性分享与互动比率可视化分析系统 基于机器学习的TikTok短视频认证属性与互动效能关联分析
大数据·hadoop·python·机器学习·spark·毕业设计·课程设计