常见的优化算法有:
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 复杂
所以需要综合考虑:
- 优化目标
- 基准要求
- 计算资源
- 数据特征