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

深度学习优化器详解:SGD、Adam与AdamW

在这里插入图片描述

优化算法详解:SGD、Adam与AdamW

一、SGD(随机梯度下降)

1.1 核心思想

SGD是最基础的优化算法,每次迭代仅使用单个样本小批量样本计算梯度并更新参数。其核心公式为:
θ = θ - η * ∇θ J(θ; x_i)
其中η是学习率,∇θ J是损失函数对参数的梯度。

1.2 特点与局限

  • 优点:计算效率高,适合大规模数据集;通过随机性可能跳出局部极小值。
  • 缺点
    • 学习率固定,需手动调整;
    • 梯度更新方向震荡严重,收敛速度慢;
    • 对稀疏特征不友好。

二、Adam(自适应矩估计)

2.1 核心思想

Adam结合了动量法(Momentum)RMSProp思想,通过动态调整每个参数的学习率实现自适应优化。其关键步骤如下:

  1. 一阶动量(均值)m_t = β₁m_{t-1} + (1-β₁)g_t
  2. 二阶动量(方差)v_t = β₂v_{t-1} + (1-β₂)g_t²
  3. 偏差修正m̂_t = m_t/(1-β₁^t), v̂_t = v_t/(1-β₂^t)
  4. 参数更新θ_t = θ_{t-1} - η * m̂_t/(√v̂_t + ε)
    其中β₁≈0.9,β₂≈0.999,ε防止除零。

2.2 优势与不足

  • 优点
    • 自适应学习率,减少超参数调优;
    • 适合非平稳目标和非凸优化问题;
    • 对内存需求低。
  • 缺点
    • 权重衰减实现方式可能导致参数收缩不足;
    • 某些场景下泛化性能不如SGD。

三、AdamW(解耦权重衰减的Adam)

3.1 改进核心

AdamW将权重衰减(L2正则化)梯度更新解耦,解决了Adam中权重衰减与自适应学习率耦合导致的优化偏差问题。其更新公式为:
θ_t = θ_{t-1} - η * (m̂_t/(√v̂_t + ε) + λθ_{t-1})
其中λ是独立的权重衰减系数。

3.2 关键改进点

  1. 权重衰减独立作用于参数更新,而非混入梯度计算;
  2. 提升模型泛化能力,尤其在深度网络中表现更优;
  3. 学习率调整更稳定,适合大规模预训练模型。

四、三者的核心区别

维度SGDAdamAdamW
更新机制纯梯度方向动量+自适应学习率Adam+解耦权重衰减
学习率调整固定或手动衰减自动按参数维度调整同Adam,但衰减独立
正则化方式通常需额外L2正则化L2耦合在梯度中L2独立作用于参数
计算复杂度O(1)O(1)(但需维护动量变量)同Adam
适用场景小数据集/简单模型大多数深度学习任务大规模预训练/需强正则化任务

五、实践建议

  1. SGD:适合数据量小、模型简单的场景,需配合学习率调度器;
  2. Adam:默认选择,快速收敛且调参简单,但需注意可能过拟合;
  3. AdamW:推荐用于Transformer、大语言模型等需要精细正则化控制的场景。
http://www.xdnf.cn/news/46351.html

相关文章:

  • C#/.NET/.NET Core技术前沿周刊 | 第 35 期(2025年4.14-4.20)
  • docker 安装 MySQL
  • 【Oracle专栏】函数中SQL拼接参数 报错处理
  • 【网络原理】TCP协议如何实现可靠传输(确认应答和超时重传机制)
  • Vue3 + TypeScript,关于item[key]的报错处理方法
  • Cherry Studio配置MCP服务全流程解析
  • AIGC通信架构深度优化指南
  • C++在VR/AR图形处理开发中的实战应用
  • 02【初体验】安装、配置与 Hello Cargo:踏出 Rust 开发第一步
  • Lora 微调自定义device_map
  • 【Linux】Rhcsa复习5
  • 阿里云 dataworks maxcompute创建python脚本实现列转行 脚本demo示例。
  • 06 GE Modifier
  • AUTOSAR图解==>AUTOSAR_RS_BSWModuleDescriptionTemplate
  • 19. git reflog
  • 力扣每日打卡16 781. 森林中的兔子(中等)
  • C++项目 —— 基于多设计模式下的同步异步日志系统(4)(双缓冲区异步任务处理器(AsyncLooper)设计)
  • 家庭电脑隐身后台自动截屏软件,可远程查看
  • Spring Data MongoDB 精华:给新手的核心注解指南
  • 从内核到用户态:Linux信号内核结构、保存与处理全链路剖析
  • 图论基础:图存+记忆化搜索
  • 基于论文的大模型应用:基于SmartETL的arXiv论文数据接入与预处理(三)
  • 嵌入式---零点漂移(Zero Drift)
  • go+mysql+cocos实现游戏搭建
  • jetpack之LiveData的原理解析
  • 【25软考网工】第二章(8)差错控制、奇偶校验、CRC、海明码
  • Doris + Iceberg 构建冷热分层数据湖架构:架构设计与实战指南
  • Linux驱动开发--异步通知与异步I/O
  • 深度学习方向急出成果,是先广泛调研还是边做实验边优化?
  • ES6 第一讲 变量定义 堆与栈 字符串的扩展和数值型的扩展