优化器

神经网络最终是一个 最优化问题 , 在经过 前向计算和反向传播 后, Optimizer 使用反向传播梯度,优化神经网络中的参数。

1. Adam

Adam 的优化器是一种自适应调整学习率的方法, 适用于大多 非凸优化 、大数据集和高维空间的场景。在实际应用中,Adam 是最为常用的一种优化方法。

API Reference 请参考 cn_api_paddle_optimizer_Adam

2. SGD

SGD 是实现 随机梯度下降 的一个 Optimizer 子类,是 梯度下降 大类中的一种方法。 当需要训练大量样本的时候,往往选择 SGD 来使损失函数更快的收敛。

API Reference 请参考 cn_api_paddle_optimizer_SGD

3. Momentum

Momentum 优化器在 SGD 基础上引入动量,减少了随机梯度下降过程中存在的噪声问题。 用户在使用时可以将 use_nesterov 参数设置为 False 或 True ,分别对应传统 Momentum(论文 4.1 节) 算法和 Nesterov accelerated gradient(论文 4.2 节) 算法。

API Reference 请参考 cn_api_paddle_optimizer_Momentum

4. AdamW

AdamW 优化器是 Adam 的改进版本,通过解耦权重衰减(正则化)和梯度更新,解决了 Adam 中 L2 正则化失效的问题。

API Reference 请参考 cn_api_paddle_optimizer_AdamW

5. Adagrad

Adagrad 优化器可以针对不同参数样本数不平均的问题,自适应地为各个参数分配不同的学习率。

API Reference 请参考 cn_api_paddle_optimizer_Adagrad

6. RMSProp

RMSProp 优化器是一种自适应调整学习率的方法, 主要解决使用 Adagrad 后,模型训练中后期学习率急剧下降的问题。

API Reference 请参考 cn_api_paddle_optimizer_RMSProp

7. Adamax

AdamaxAdam 算法的一个变种,对学习率的上限提供了一个更简单的范围,使学习率更新的算法更加稳定和简单。

API Reference 请参考 cn_api_paddle_optimizer_Adamax

8. Lamb

Lamb 旨在不降低精度的前提下增大训练的批量大小,支持自适应逐元素更新和精确的分层校正。

API Reference 请参考 cn_api_paddle_optimizer_Lamb

9. NAdam

NAdam 优化器基于 Adam 实现,结合了 Nesterov 动量和 Adam 自适应学习率的优点。

API Reference 请参考 cn_api_paddle_optimizer_NAdam

10. RAdam

RAdam 优化器是对 Adam 的改进,通过自适应学习率的热身 (warmup) 策略提高训练的稳定性。

API Reference 请参考 cn_api_paddle_optimizer_RAdam

11. ASGD

ASGD 优化器,是 SGD 以空间换时间的策略版本,是一种轨迹平均的随机优化方法。 ASGDSGD 的基础上,增加了历史参数的平均值度量,让下降方向噪音的方差呈递减趋势下降,从而使得算法最终会以线性速度收敛于最优值。

API Reference 请参考 cn_api_paddle_optimizer_ASGD

12. Rprop

Rprop 优化器考虑到不同权值参数的梯度的数量级可能相差很大,很难找到一个全局的学习步长。因此创新性地提出靠参数梯度的符号,动态的调节学习步长以加速优化过程的方法。

API Reference 请参考 cn_api_paddle_optimizer_Rprop

13. LBFGS

LBFGS 采用有限内存 BFGS 方法,通过近似海森矩阵的逆更新参数。

API Reference 请参考 cn_api_paddle_optimizer_LBFGS

14. Adadelta

Adadelta 优化器是 Adagrad 的改进版本,通过指数移动平均调整学习率,缓解 Adagrad 后期学习率过快下降的问题,提升训练稳定性。

API Reference 请参考 cn_api_paddle_optimizer_Adadelta