0%

Optimization Algorithms

优化算法

机器学习中的优化算法是训练模型的核心工具,不同算法在收敛速度内存效率超参数敏感性等方面各有优势。


1. 梯度下降法(Gradient Descent, GD)

原理:沿负梯度方向更新参数: $\theta_{t+1} = \theta_t - \eta \nabla_\theta J(\theta)$

优势

  • 理论成熟:适用于凸优化问题,保证全局收敛。
  • 简单易实现

缺点

  • 计算所有样本的梯度,内存消耗大(不适合大规模数据)。
  • 容易陷入局部最优(非凸问题)。

2. 随机梯度下降(Stochastic Gradient Descent, SGD)

原理:每次随机选一个样本计算梯度。

优势

  • 内存高效:适合大规模数据。
  • 逃离局部最优:随机性可能帮助跳出局部极小值。

缺点

  • 高方差:更新方向波动大,收敛不稳定。
  • 需手动调整学习率(如学习率衰减)。

改进版:Mini-batch SGD:折中方案,用小批量样本计算梯度(常用)。


3. 动量法(Momentum)

原理:引入动量项积累历史梯度: $v_t = \gamma v_{t-1} + \eta \nabla_\theta J(\theta) \ \theta_{t+1} = \theta_t - v_t$

优势

  • 加速收敛:在梯度方向一致的维度上累积速度。
  • 减少震荡,尤其适合高曲率或稀疏梯度问题。

4. Nesterov 加速梯度(NAG)

原理:动量法的改进,先按动量方向预测下一步梯度: $v_t = \gamma v_{t-1} + \eta \nabla_\theta J(\theta - \gamma v_{t-1}) \ \theta_{t+1} = \theta_t - v_t$

优势:比Momentum更精准地调整方向,减少振荡。


5. 自适应学习率算法

(1) AdaGrad

原理:为每个参数自适应调整学习率:$\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{G_t + \epsilon}} \nabla_\theta J(\theta)$ (GtG_tGt 为历史梯度平方和)

优势:适合稀疏数据(如NLP),对低频特征更新更大。

缺点:学习率单调下降,可能过早停止学习。

(2) RMSProp

原理:引入衰减系数($\beta$)平滑:$G_t = \beta G_{t-1} + (1-\beta) \nabla_\theta J(\theta)^2$

优势:解决AdaGrad学习率消失问题,适合非凸优化。

(3) Adam(Adaptive Moment Estimation)

原理:结合动量和自适应学习率: $m_t = \beta_1 m_{t-1} + (1-\beta_1) \nabla_\theta J(\theta) \quad \text{(一阶矩)} \ v_t = \beta_2 v_{t-1} + (1-\beta_2) \nabla_\theta J(\theta)^2 \quad \text{(二阶矩)} \ \theta_{t+1} = \theta_t - \frac{\eta \cdot m_t}{\sqrt{v_t} + \epsilon}$

优势

  • 默认首选:适应不同数据分布,收敛快且稳定。
  • 对超参数(如初始学习率)鲁棒性强。

(4) AdaDelta

原理:无需设置初始学习率,动态调整步长。

优势:对学习率不敏感,适合调参困难场景。


6. 二阶优化算法

(1) 牛顿法(Newton’s Method)

原理:使用Hessian矩阵(二阶导数)更新参数: $\theta_{t+1} = \theta_t - H^{-1} \nabla_\theta J(\theta)$

优势:收敛速度超线性(远快于一阶方法)。

缺点:计算Hessian矩阵及其逆的复杂度高($O(n^3)$)。

(2) 拟牛顿法(BFGS/L-BFGS)

原理:用近似矩阵替代Hessian矩阵。

优势:降低计算量(L-BFGS适合中等规模数据)。

缺点:仍需要存储近似矩阵,内存消耗较大。


对比总结

算法 优势 适用场景
SGD 内存高效,简单 大规模数据,简单模型
Momentum 加速收敛,减少振荡 高维稀疏梯度问题
Adam 自适应学习率,鲁棒性强 深度学习默认选择
AdaGrad 适合稀疏特征 NLP、推荐系统
L-BFGS 二阶收敛快 中小规模凸优化问题

如何选择?

  1. 深度学习:优先尝试 AdamAdamW(带权重衰减的Adam)。
  2. 稀疏数据AdaGradRMSProp
  3. 资源受限SGD + Momentum(需调学习率)。
  4. 理论最优解L-BFGS(若问题规模允许)。
-------------结束啦感谢阅读-------------
Coffee = Code Fuel. Want to donate a cup?