学习率(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。

相关推荐
chase。17 分钟前
【学习笔记】PointWorld:迈向通用机器人操控的3D世界模型
笔记·学习·机器人
AOwhisky1 小时前
Python 学习笔记(第十三期)——运维自动化(下·前篇):远程命令执行——paramiko基础篇
运维·python·学习·云原生·自动化·运维开发·paramiko
前端世界1 小时前
MySQL 基础入门(学习第4天)——约束与 DML 操作详解
数据库·学习·mysql
dear_bi_MyOnly1 小时前
【SpringBoot配置文件】
java·spring boot·后端·学习·spring·java-ee·学习方法
AOwhisky2 小时前
Python 学习笔记(第十四期)——运维自动化(下·中篇):远程文件传输——paramiko进阶篇
运维·python·学习·云原生·自动化·文件传输·paramiko
math_hongfan2 小时前
鸿蒙Flutter setState机制深入理解
学习·flutter·华为·harmonyos·鸿蒙
其实防守也摸鱼2 小时前
补天SRC新手入门指南:从0到1的漏洞挖掘之路
网络·python·学习·安全·web安全·数据挖掘·挖洞
星恒随风3 小时前
C++ STL 栈详解:stack 的使用、经典题目与简单模拟实现
开发语言·数据结构·c++·笔记·学习
FellAveal4 小时前
【Go语言入门学习笔记】Part13.结构体与接口
笔记·学习·golang
Leekwen5 小时前
认识人与人的大不同
学习·思考·生活·认知高度·审视自己