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

常见优化器总结(附原理、公式与优缺点)

优化器(Optimizer)是深度学习模型训练的核心组件之一,它决定了如何根据损失函数对模型参数进行更新。本文将总结目前常见的优化器,包括 SGD、Momentum、Adagrad、RMSprop、Adam 等,并介绍其核心思想、数学公式及优缺点。


1. SGD(随机梯度下降)

核心思想:
每次迭代只使用一小批数据(mini-batch)来更新参数,计算速度快。

更新公式:
θ t + 1 = θ t − η ⋅ ∇ θ J ( θ ) \theta_{t+1} = \theta_t - \eta \cdot \nabla_{\theta}J(\theta) θt+1=θtηθJ(θ)

优点:

  • 简单高效
  • 占用内存少

缺点:

  • 容易陷入局部最优
  • 收敛慢,对学习率敏感

2. SGD + Momentum(动量法)

核心思想:
在 SGD 基础上引入“动量”思想,模拟惯性加速收敛,减少震荡。

更新公式:
v t + 1 = γ v t + η ∇ θ J ( θ ) θ t + 1 = θ t − v t + 1 v_{t+1} = \gamma v_t + \eta \nabla_{\theta}J(\theta) \\ \theta_{t+1} = \theta_t - v_{t+1} vt+1=γvt+ηθJ(θ)θt+1=θtvt+1

其中 γ \gamma γ 是动量因子,常取 0.9。

优点:

  • 加快收敛速度
  • 降低震荡

缺点:

  • 参数调节(如 γ \gamma γ)较复杂

3. Adagrad

核心思想:
对每个参数采用自适应学习率,训练初期快、后期慢。

更新公式:
G t = G t − 1 + ∇ θ J ( θ ) 2 θ t + 1 = θ t − η G t + ϵ ∇ θ J ( θ ) G_t = G_{t-1} + \nabla_{\theta}J(\theta)^2 \\ \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{G_t + \epsilon}} \nabla_{\theta}J(\theta) Gt=Gt1+θJ(θ)2θt+1=θtGt+ϵ ηθJ(θ)

优点:

  • 自适应学习率
  • 适合稀疏数据(如 NLP)

缺点:

  • 学习率不断减小,容易提前停止学习

4. RMSprop

核心思想:
改进 Adagrad,对历史梯度平方进行指数加权平均,避免学习率过快减小。

更新公式:
E [ g 2 ] t = γ E [ g 2 ] t − 1 + ( 1 − γ ) ∇ θ J ( θ ) 2 θ t + 1 = θ t − η E [ g 2 ] t + ϵ ∇ θ J ( θ ) E[g^2]_t = \gamma E[g^2]_{t-1} + (1 - \gamma) \nabla_{\theta}J(\theta)^2 \\ \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{E[g^2]_t + \epsilon}} \nabla_{\theta}J(\theta) E[g2]t=γE[g2]t1+(1γ)θJ(θ)2θt+1=θtE[g2]t+ϵ ηθJ(θ)

优点:

  • 收敛快
  • 能应对非平稳目标

缺点:

  • 需要调节超参数(如 γ \gamma γ

5. Adam(Adaptive Moment Estimation,自适应矩估计)

核心思想:
结合 Momentum 和 RMSprop,分别估计一阶与二阶矩。

更新公式:
m t = β 1 m t − 1 + ( 1 − β 1 ) ∇ θ J ( θ ) v t = β 2 v t − 1 + ( 1 − β 2 ) ( ∇ θ J ( θ ) ) 2 m ^ t = m t 1 − β 1 t , v ^ t = v t 1 − β 2 t θ t + 1 = θ t − η v ^ t + ϵ m ^ t m_t = \beta_1 m_{t-1} + (1 - \beta_1)\nabla_{\theta}J(\theta) \\ v_t = \beta_2 v_{t-1} + (1 - \beta_2)(\nabla_{\theta}J(\theta))^2 \\ \hat{m}_t = \frac{m_t}{1 - \beta_1^t},\quad \hat{v}_t = \frac{v_t}{1 - \beta_2^t} \\ \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \hat{m}_t mt=β1mt1+(1β1)θJ(θ)vt=β2vt1+(1β2)(θJ(θ))2m^t=1β1tmt,v^t=1β2tvtθt+1=θtv^t +ϵηm^t

优点:

  • 学习率自适应
  • 收敛快,鲁棒性好
  • 参数调节较少

缺点:

  • 在某些任务中可能不如 SGD 泛化好

🧪 6. AdamW(带权重衰减的 Adam)

核心思想:
改进 Adam 正则化方式,直接对权重衰减,效果更稳定。

更新公式:
θ t + 1 = θ t − η ( m ^ t v ^ t + ϵ + λ θ t ) \theta_{t+1} = \theta_t - \eta \left( \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} + \lambda \theta_t \right) θt+1=θtη(v^t +ϵm^t+λθt)

优点:

  • 提升 Adam 在 Transformer、BERT 中的性能
  • 更合理的权重衰减方式

缺点:

  • 训练速度略慢于 Adam

📈 对比总结表

优化器学习率自适应动量机制收敛速度参数调节适用场景
SGD简单通用基础
SGD+Momentum收敛困难时可用
Adagrad前快后慢简单稀疏数据(NLP)
RMSprop需调 γ \gamma γ非平稳目标
Adam稳定大多数深度模型
AdamW稳定Transformer/BERT

📌 小结建议

  • 小模型 / 简单任务:SGD + Momentum
  • 稀疏特征 / NLP:Adagrad / Adam
  • 图像 / Transformer 系列模型:AdamW
  • 对训练速度敏感:Adam / RMSprop

💬 如果你觉得本文对你有帮助,欢迎点赞、收藏、转发支持!

相关文章:

  • Windows安装 PHP 8 和mysql9,win下使用phpcustom安装php8.4.5和mysql9
  • YOLOv8——模型训练后生成的文件和图表分析
  • xLua的Lua调用C#的2,3,4
  • 玄机-应急响应-webshell查杀
  • Flutter之页面布局二
  • Vue2 组件切换方式
  • 【备赛】蓝桥杯嵌入式实现led闪烁
  • Django中使用不同种类缓存的完整案例
  • 实验:IS-IS认证。
  • C++语言的测试覆盖率
  • freertos韦东山---事件组以及实验
  • 在Ubuntu内网环境中为Gogs配置HTTPS访问(通过Apache反向代理使用IP地址)
  • 使用NVM管理nodejs
  • Redis 在 Java 中的使用
  • C++假期练习
  • 批量改CAD图层颜色——CAD c#二次开发
  • Rocketmq2
  • 250207-MacOS修改Ollama模型下载及运行的路径
  • DHCP Snooping各种场景实验案例
  • 国外注册的商标如何在中国获得保护!
  • 网站备案要什么/18款禁用软件黄app免费
  • 游戏开发 网站开发/sem竞价是什么
  • 手机网站宽度多少合适/东莞网络推广公司
  • 马鞍山网站建设/百度关键词排名靠前
  • html5网站价格/郴州seo快速排名
  • 北京网站建设 优化/六种常见的网站类型