盐山做网站的网络营销的成功案例有哪些
优化器(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=θt−vt+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=Gt−1+∇θJ(θ)2θt+1=θt−Gt+ϵη∇θ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]t−1+(1−γ)∇θJ(θ)2θt+1=θt−E[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=β1mt−1+(1−β1)∇θJ(θ)vt=β2vt−1+(1−β2)(∇θJ(θ))2m^t=1−β1tmt,v^t=1−β2tvtθt+1=θt−v^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
💬 如果你觉得本文对你有帮助,欢迎点赞、收藏、转发支持!