当前位置: 首页 > news >正文

深度学习(八):学习率

在深度学习训练中,学习率(Learning Rate, LR)是最关键的超参数之一,它决定了模型参数更新的步长大小,从而直接影响训练的速度和收敛质量。学习率设置得合适,可以让模型快速收敛到全局或局部最优;学习率过大,则可能导致训练不稳定甚至发散;学习率过小,则训练收敛过慢,容易陷入局部最优。

学习率的定义

在梯度下降(Gradient Descent)或其变种优化器中,学习率控制模型参数 θ 的更新幅度:

在这里插入图片描述

其中:

  • θ 为第 t 次迭代的参数;
  • η 为学习率;
  • ∇θL(θt) 为损失函数关于参数的梯度。

简单理解:

  • 学习率越大:每次更新幅度大,训练快速但可能震荡或发散;
  • 学习率越小:每次更新幅度小,训练稳定但收敛慢。

学习率的重要性

学习率对训练过程的影响主要体现在以下几个方面:

  1. 收敛速度
    • 高学习率可以快速接近最优,但过大可能跳过最优点。
    • 低学习率训练稳定,但需要更多迭代次数。
  2. 训练稳定性
    • 学习率过大时,梯度更新过强,会导致损失震荡甚至 NaN。
    • 学习率过小可能导致参数更新缓慢,训练停滞。
  3. 模型泛化能力
    • 适当的学习率和衰减策略可以让模型找到“平坦最优”,提升泛化。
    • 学习率过高容易让模型在训练集上震荡,难以泛化。

学习率的类型

固定学习率

最简单的策略,整个训练过程中使用一个固定值。优点是简单,但缺点明显:

  • 训练初期可能太慢;
  • 后期可能无法收敛到最优解。

学习率衰减

随着训练进行,逐渐减小学习率,提高训练稳定性。常用方法:

  1. 阶梯衰减(Step Decay)
    每隔固定步数或 epoch,将学习率降低一个比例:

    在这里插入图片描述

    其中 γ<1 为衰减系数,T 为衰减间隔。

  2. 指数衰减(Exponential Decay)
    学习率按指数函数衰减:

    在这里插入图片描述

    λ 为衰减速率,衰减平滑。

  3. 余弦衰减(Cosine Annealing)
    先大后小,呈余弦曲线变化:

    在这里插入图片描述

  4. 学习率热重启(SGDR, Cosine Annealing with Restarts)
    定期将学习率重置到较高值,模拟多次训练轮次,提高逃脱局部最优能力。

自适应学习率

一些优化器会根据梯度自动调整每个参数的学习率:

  • AdaGrad:对稀疏梯度有效,历史梯度平方和增加,学习率逐渐减小。
  • RMSProp:在 AdaGrad 基础上增加指数加权平均,适合非平稳目标。
  • Adam/AdamW:结合动量和 RMSProp,训练效果稳定,常用默认学习率 0.001。
  • AdaBound、Ranger:进一步改进自适应优化器,兼顾收敛速度和泛化。

学习率调节技巧

学习率预热(Warm-up)

  • 训练初期使用较小学习率,逐渐升至目标值。
  • 避免初始化梯度过大导致训练不稳定。
  • 常用于大规模模型(如 Transformer、BERT)训练。

循环学习率(Cyclic LR)

  • 在一定区间内周期性调整学习率:
    • 上升阶段快速探索;
    • 下降阶段收敛。
  • 有助于逃离局部最优。

自动学习率搜索

  • 使用工具自动调整最优初始学习率:
    • LR range test(Leslie Smith 方法):线性增加学习率,观察 loss 曲线选择最佳。
    • 调度器 + 回调:训练过程中自动降低学习率,例如 Keras 的 ReduceLROnPlateau

实际经验与建议

  1. 初始值选择
    • SGD 常用 0.01~0.1;
    • Adam 常用 0.001;
    • 大模型通常需要学习率预热。
  2. 衰减策略
    • 对大多数任务,采用阶梯或余弦衰减效果较好。
    • 小数据集或精调任务,可考虑指数衰减。
  3. 观察指标
    • 训练损失:学习率过大时损失震荡;
    • 验证损失:监控泛化,避免过早降低学习率。
  4. 自适应优化器
    • Adam/AdamW 初学者推荐,可节省调参时间。
    • SGD + Momentum 对大规模训练和泛化能力更优,但需要调参。
  5. 批量大小与学习率关系
    • 大批量训练通常需要更大学习率;
    • 可使用 线性缩放法则

总结

  • 学习率是深度学习中最关键的超参数之一,决定训练速度和稳定性。
  • 常用策略:固定、衰减(阶梯、指数、余弦)、自适应、循环和预热。
  • 调节学习率需要结合优化器、数据集大小和模型复杂度。
  • 实际训练中,通常使用预热 + 衰减 + 自适应优化器的组合,既保证收敛速度,又能提升泛化能力。
  • 通过观察损失曲线和验证指标,可以动态调整学习率,实现高效训练。

文章转载自:

http://9UlMNAP0.ssmhn.cn
http://RuxUUgtE.ssmhn.cn
http://FxR37vKS.ssmhn.cn
http://YieR5X0d.ssmhn.cn
http://rXLaZfZg.ssmhn.cn
http://6oL1rHBs.ssmhn.cn
http://gZgZWKO3.ssmhn.cn
http://QZuDeiHj.ssmhn.cn
http://4h0281Qw.ssmhn.cn
http://nMKTtgE8.ssmhn.cn
http://LlfumSIY.ssmhn.cn
http://C97AxdWX.ssmhn.cn
http://mhiyGq1U.ssmhn.cn
http://xT0rqpWr.ssmhn.cn
http://22kSzUnW.ssmhn.cn
http://sqMehXF7.ssmhn.cn
http://LY3AR0Ed.ssmhn.cn
http://lqCB4GOe.ssmhn.cn
http://9904rfT1.ssmhn.cn
http://c5XtDlBF.ssmhn.cn
http://giEsfe7G.ssmhn.cn
http://YShzQN7X.ssmhn.cn
http://AxgO7gT8.ssmhn.cn
http://qbQai2vS.ssmhn.cn
http://D3Kendx1.ssmhn.cn
http://6tl0Yr7I.ssmhn.cn
http://cnzSpUWN.ssmhn.cn
http://fmxAC7TV.ssmhn.cn
http://VigNP3bm.ssmhn.cn
http://wGvJvNQf.ssmhn.cn
http://www.dtcms.com/a/383669.html

相关文章:

  • VSCode使用prettier插件进行格式化配置
  • 前后端分离项目如何解决跨域问题
  • IDEA使用Maven和MyBatis简化数据库连接(实现篇)
  • 【Pywinauto库】12.2 pywinauto.element_info 后端内部实施模块
  • 正向代理与反向代理的异同
  • 从ENIAC到Linux:计算机技术与商业模式的协同演进——开源生态的崛起与重构
  • RTC驱动原理
  • MyBatis 的“魔法”:Mapper 接口是如何找到并执行 SQL 的?
  • 构建日志采集和分析平台
  • 《Unity+腾讯云TRTC故障排查指南:从日志盲区到线程死锁的全链路解析》
  • 笔记25.9.14(QueryWrapper,Builder ,Stream流处理,forEach)
  • 深入理解MySQL主从架构中的Seconds_Behind_Master指标
  • systemverilog如何解决不能使用变量索引来进行位选择的范围指定
  • 多语言编码Agent解决方案(1)-项目概述与架构
  • 【深度学习踩坑实录】从 Checkpoint 报错到 TrainingArguments 精通:QNLI 任务微调全流程复盘
  • 【愚公系列】《人工智能70年》019-语音识别的历史性突破(铲平技术高门槛)
  • webpack 配置文件中 mode 有哪些模式?
  • AI推理范式:从CoT到ReAct再到ToT的进化之路
  • webpack和Module Federation区别分析
  • Knockout.js Virtual Elements 详解
  • 【JavaSE五天速通|第三篇】常用API与日期类篇
  • JavaWeb-Session和ServletContext
  • HTML 编码规范
  • 深度学习(九):逻辑回归
  • 【LeetCode 每日一题】36. 有效的数独
  • 单表查询要点概述
  • 【Trans2025】计算机视觉|即插即用|WSC:即插即用!WSC模块,高光谱图像分类新SOTA!
  • Java面试小册(3)
  • 微服务项目测试接口一次成功一次失败解决办法
  • GPIO 之 EMIO 按键控制 LED 实验