学习率(Learning Rate)到底怎么调?

学习率调整的核心方法

学习率是深度学习模型训练中最重要的超参数之一,直接影响模型收敛速度和最终性能。以下是几种有效的调整策略:

初始值选择

  • 常见范围在0.1到1e-6之间,具体取决于模型结构和任务复杂度
  • 图像分类任务常用0.1或0.01作为初始值
  • 预训练模型微调时建议更小的值(1e-4到1e-5)

学习率预热(Warmup) 小批量数据在初期可能导致梯度估计不稳定,逐步增加学习率可缓解此问题 线性预热:在前5-10个epoch从0线性增加到目标学习率 余弦预热:结合余弦退火策略效果更佳

周期性调整策略 余弦退火:按余弦函数周期性调整学习率,公式为: η_t = η_min + 0.5(η_max - η_min)(1 + cos(π mod(t-1, T)/T)) 其中T为周期长度,η_max/min为学习率上下界

自适应优化器调整 Adam优化器默认学习率常设为3e-4 RMSProp适合0.001到0.1范围 对于SGD with momentum,学习率通常比Adam高10倍

实践验证技巧

学习率范围测试 在初始训练阶段进行扫描测试(如1e-7到1e1) 记录损失下降曲线,选择损失下降最快但稳定的区间 PyTorch Lightning提供lr_finder工具自动化此过程

监控训练动态 验证集损失停止下降时考虑降低学习率 训练损失剧烈波动表明学习率可能过高 使用TensorBoard或WandB可视化学习曲线

经典衰减方案 Step衰减:每N个epoch乘以γ(如γ=0.1) Exponential衰减:η_t = η_0 * γ^t 1/t衰减:η_t = η_0/(1 + γt)

高级调整策略

分层学习率 不同网络层使用不同学习率 卷积层通常比全连接层设置更小的学习率 预训练模型的特征提取层学习率常设为新加层的1/10

课程学习策略 随训练进程动态调整学习率 配合数据难度渐进使用,简单样本阶段用较大学习率 可结合样本重加权技术

超参数优化方法 贝叶斯优化搜索最优学习率 遗传算法进行多代进化 网格搜索配合早停机制

实际应用中,学习率需要与batch size协调调整,大batch size通常对应更大的学习率。ResNet论文提出线性缩放规则:当batch size乘以k时,学习率也应乘以k。

相关推荐
久邦科技7 分钟前
20个免费电子书下载网站,实现电子书自由(2025持续更新)
学习
Gain_chance22 分钟前
34-学习笔记尚硅谷数仓搭建-DWS层最近一日汇总表建表语句汇总
数据仓库·hive·笔记·学习·datagrip
Gain_chance2 小时前
36-学习笔记尚硅谷数仓搭建-DWS层数据装载脚本
大数据·数据仓库·笔记·学习
XH华2 小时前
备战蓝桥杯,第九章:结构体和类
学习·蓝桥杯
Gain_chance2 小时前
35-学习笔记尚硅谷数仓搭建-DWS层最近n日汇总表及历史至今汇总表建表语句
数据库·数据仓库·hive·笔记·学习
Ziky学习记录4 小时前
从零到实战:React Router 学习与总结
前端·学习·react.js
sensen_kiss4 小时前
INT303 Coursework1 爬取影视网站数据(如何爬虫网站数据)
爬虫·python·学习
red_redemption5 小时前
自由学习记录(116)
学习
r i c k6 小时前
数据库系统学习笔记
数据库·笔记·学习
野犬寒鸦6 小时前
从零起步学习JVM || 第一章:类加载器与双亲委派机制模型详解
java·jvm·数据库·后端·学习