优化算法(SGD、Adam等)有什么区别?

常见的优化算法有:
i、随机梯度下降(SGD)

  • 每次只使用一个样本计算梯度
  • 简单直接但效率低下
  • 很容易波动

ii、 Mini-Batch GD

  • 每次使用一个小批次样本计算梯度
  • 效率比SGD高,效果更稳定

iii、Momentum

  • 使用动量项来加速梯度下降
  • 平滑波动,加速收敛

iv、Nesterov Accelerated Gradient (NAG)
改进的Momentum方法,效果更好。

v、AdaGrad

  • 每个参数自适应的选择学习率
  • 适合稀疏特征

vi、RMSProp

  • 赋予近期梯度更高权重,缓和AdaGrad的不足。

vii、Adam

  • 结合Momentum和RMSProp的优点
  • 效果通常较好。

总的来说,各优化算法的主要区别在于:

  • 计算梯度的方式(全量/小批量)
  • 是否加入动量项加速收敛
  • 是否自适应调整学习率
  • 收敛效果(Adam通常较好)

并且存在如下权衡:

  • 精度 vs 速度
  • 收敛速度 vs 波动
  • 简单 vs 复杂

所以需要综合考虑:

  • 优化目标
  • 基准要求
  • 计算资源
  • 数据特征