优化算法总结
深度学习优化算法经历了 SGD -> SGDM -> NAG ->AdaGrad -> AdaDelta -> Adam -> Nadam 发展历程. 所有的这些优化算法, 有着相似的形式. 可以使用同一个框架表示.
首先定义符号. w为待优化参数, f(w)为目标函数, α为初始学习率.
在每步t中:
计算目标函数关于当前参数wt的梯度: gt=∇f(wt)
根据历史梯度g1,g2,⋯,gt计算一阶动量和二阶动量: mt=ϕ(g1,g2,⋯,gt); Vt=ψ(g1,g2,⋯,gt)
计算当前时刻的下降梯度: ηt=α⋅mt/Vt
根据下降梯度更新参数: wt+1=wt−ηt
对于各种各样的优化算法, 第三步, 第四步基本是一致的, 主要差别体现在1和2上.
下面是常见的优化算法表现的演示.

上图是各种优化算法在损失函数平面上的表现.

上图是各种优化算法在遭遇鞍点(梯度为0, Hessian矩阵有正的和负的特征值, 不定)时的表现. 鞍点是各种优化算法共同面临的难点.
参考资料
最后更新于