深度学习几种优化算法的笔记-一句话理解各种优化算法

深度学习最全优化方法总结比较
这篇文章已经比较清楚了, 这篇笔记主要帮助理解和记忆各种算法, 无数学公式。


以前经常觉得, 优化算法名字好难记, 所以顺便把自己理解的名字的组合也写进来。

:) 我承认标题党了, 今天正好又要看一遍优化算法, 所以干脆沉下心来, 尽可能记住这几种优化算法, 最好的方式就是用一句话来表达出这些优化算法。

SGD

没什么好说的

Momentum

如其名, 动量, 把历史改变作为动量累加到当前梯度上。
动量+梯度

Nesterov

也是动量, 先动量, 根据动量后的值计算梯度更新。
先动量, 求跳跃后的梯度

Adagrad

用所有梯度平方和后开根号除当前梯度, 来反向调节更新

我猜是为了防止更新率过大的时候, 防止震荡;更新率过小的时候, 让梯度加速, 当然也看的出来很多问题, 至少不该使用所有的以前的梯度, 这样, 越训练到后面, 越慢, 到最后, 受到以前梯度平方的影响, 更新就非常慢了

adapt + gradient descent
适合处理稀疏梯度

Adadelta

以前的梯度平方衰减后累加开根号后来除现在的梯度

证明了我对adagrad的理解, 无衰减累加梯度**2会过多的影响现在的取值, 加上衰减后, 以前的梯度的影响会渐渐消失, 越近的梯度对现在的影响越大。

Adagrad delta版本
现在的默认参数, 估计针对是归一化数据的, 所以也证明了, 对数据归一化非常重要, 不然咋个以前的梯度都较大的话, 现在还是训练越来越慢。

  • 训练初中期,加速效果不错,很快
  • 训练后期,反复在局部最小值附近抖动

RMSprop

Adadelta的变体

其实没咋个看懂变体后公式中E的含义, 猜测主要简化了计算, 并且只计算最近一次的梯度变化么?

RMS均方根的意思

  • RMSprop算是Adagrad的一种发展,和Adadelta的变体,效果趋于二者之间
  • 适合处理非平稳目标 - 对于RNN效果很好

Adam

带有动量项的RMSprop

  • 适用于大数据集和高维空间

Ada + Momentum

Adamax

带有学习率上限的Adam

Nadam

带有Nesterov动量项的Adam

  • 一般而言,在想使用带动量的RMSprop,或者Adam的地方,大多可以使用Nadam取得更好的效果。

记录下《[深度学习最全优化方法总结比较]https://zhuanlan.zhihu.com/p/22252270)
》一文中作者的经验:

  • Adadelta,RMSprop,Adam是比较相近的算法,在相似的情况下表现差不多。
  • 在想使用带动量的RMSprop,或者Adam的地方,大多可以使用Nadam取得更好的效果

你可能感兴趣的:(深度学习几种优化算法的笔记-一句话理解各种优化算法)