各种优化算法总结(区别及联系)SGD Momentum NAG Aadagrad RMSprop AadaDelta Adam Nadam

文章是最近整理的一些深度学习优化算法总结,具体参考文献见文章末尾:
刚刚开始接触优化算法,林林总总,认识总是很浅薄,但是当你拿过来看的时候,发现从刚刚开始的SGD到现在的adam、Nadam等,原理上其实是相通的。

文章目录

    • 算法基本框架
    • 梯度下降
      • BGD
      • SGD
      • MBGD
    • 一阶动量
      • 指数加权移动平均值
      • Momentum
      • NAG
    • 二阶动量(自适应学习率)
      • AdaGrad
      • RMSProp
      • AdaDelta
    • 同时引入一阶二阶动量
      • Adam
      • Nadam

算法基本框架

各种优化算法总结(区别及联系)SGD Momentum NAG Aadagrad RMSprop AadaDelta Adam Nadam_第1张图片
图中的一阶动量和二阶动量分别是历史梯度的一阶导数函数和二阶导数函数。

梯度下降

随机梯度下降,作为最为基础的优化算法,以样本数据的负梯度方向作为优化方向,在深度学习中梯度下降算法可以分为:

  1. 批量梯度下降(Batch Gradient Descent,BGD)
  2. 随机梯度下降(Stochastic Gradient Descent,SGD)
  3. 小批量随机梯度下降(Mini Batch Gradient Descent,MBGD)

三者的区别是选择样本作为优化方向的规模,

BGD

使用全部数据的梯度方向作为优化方向,显而易见,对于凸函数可以收敛到全局极小值,对于非凸函数可以收敛到局部极小值,但是随之而来的是计算量的提升,每次迭代更新都需要全部的数据,优化速度缓慢。

SGD

则是使用每个样本对参数进行更新,缺点是SGD的噪音较BGD要多,使得SGD并不是每次迭代都向着整体最优化方向。所以虽然训练速度快,但是准确度下降,并不是全局最优。虽然包含一定的随机性,但是从期望上来看,它是正确的导数的。SGD 因为更新比较频繁,会造成 cost function 有严重的震荡。BGD 可以收敛到局部极小值,当然 SGD 的震荡可能会跳到更好的局部极小值处。
当我们稍微减小 learning rate,SGD 和 BGD 的收敛性是一样的。

MBGD

每一次利用一小批(Batch)样本,即 n 个样本进行计算,这样可以降低参数更新时的方差,收敛更稳定,另一方面可以充分地利用深度学习库中高度优化的矩阵操作来进行更有效的梯度计算。属于SGD和BGD的折中方案。
SGD参数更新:
各种优化算法总结(区别及联系)SGD Momentum NAG Aadagrad RMSprop AadaDelta Adam Nadam_第2张图片
梯度下降的天然不足,无法对鞍点进行处理,关于鞍点的表述鞍点,即当一阶导数为0,二阶hessian阵为不定阵。从而无法到达最优值。
改进策略及算法

  1. 引入历史梯度的一阶动量,代表算法有:Momentum、NAG
  2. 引入历史梯度的二阶动量(自适应),代表算法有:AdaGrad、RMSProp、AdaDelta
  3. 同时引入历史梯度的一阶动量及二阶动量,代表算法有:Adam、Nadam

一阶动量

指数加权移动平均值

各种优化算法总结(区别及联系)SGD Momentum NAG Aadagrad RMSprop AadaDelta Adam Nadam_第3张图片
beta=0.9时往前看10步,不必使用全部的梯度动量值。
各种优化算法总结(区别及联系)SGD Momentum NAG Aadagrad RMSprop AadaDelta Adam Nadam_第4张图片
引入修正因子,Adam会有涉及。
各种优化算法总结(区别及联系)SGD Momentum NAG Aadagrad RMSprop AadaDelta Adam Nadam_第5张图片

Momentum

Momentum中对指数加权移动平均值进行变形,但是原理不变、
各种优化算法总结(区别及联系)SGD Momentum NAG Aadagrad RMSprop AadaDelta Adam Nadam_第6张图片

NAG

NAG利用未来梯度的方向,向前多看一步!
各种优化算法总结(区别及联系)SGD Momentum NAG Aadagrad RMSprop AadaDelta Adam Nadam_第7张图片

二阶动量(自适应学习率)

各种优化算法总结(区别及联系)SGD Momentum NAG Aadagrad RMSprop AadaDelta Adam Nadam_第8张图片

AdaGrad

累计梯度平方和
各种优化算法总结(区别及联系)SGD Momentum NAG Aadagrad RMSprop AadaDelta Adam Nadam_第9张图片
各种优化算法总结(区别及联系)SGD Momentum NAG Aadagrad RMSprop AadaDelta Adam Nadam_第10张图片
**缺点:**随着时间步的拉长,历史累计梯度平方和会越来越大,这样会使得所有维度参数的学习率都不断减小(单调递减),无论更新幅度如何。

RMSProp

对梯度累加进行改进,引入指数加权移动平均值,只使用有限步的梯度进行梯度累加。
各种优化算法总结(区别及联系)SGD Momentum NAG Aadagrad RMSprop AadaDelta Adam Nadam_第11张图片

AdaDelta

除了对二阶动量进行移动加权平均之外,对学习率也计算一个移动加权平均。
各种优化算法总结(区别及联系)SGD Momentum NAG Aadagrad RMSprop AadaDelta Adam Nadam_第12张图片
各种优化算法总结(区别及联系)SGD Momentum NAG Aadagrad RMSprop AadaDelta Adam Nadam_第13张图片

同时引入一阶二阶动量

Adam

分别对一阶二阶动量,进行移动加权平均,然后添加修正因子。

各种优化算法总结(区别及联系)SGD Momentum NAG Aadagrad RMSprop AadaDelta Adam Nadam_第14张图片
各种优化算法总结(区别及联系)SGD Momentum NAG Aadagrad RMSprop AadaDelta Adam Nadam_第15张图片

Nadam

Nadam = Nesterov + Adam。核心在于计算当前时刻的梯度时使用了未来梯度。
各种优化算法总结(区别及联系)SGD Momentum NAG Aadagrad RMSprop AadaDelta Adam Nadam_第16张图片
各种优化算法总结(区别及联系)SGD Momentum NAG Aadagrad RMSprop AadaDelta Adam Nadam_第17张图片
参考文献:

  1. https://mp.weixin.qq.com/s/2wolhiTrWVeaSHxOpalUZg
  2. https://www.cnblogs.com/guoyaohua/p/8542554.html

你可能感兴趣的:(深度学习,机器学习,神经网络)