摘自莫烦python中关于TensorFlow的讲解
传统的参数更新方式如下,传统的参数 W 的更新是把原始的 W 累加上一个负的学习率(learning rate) 乘以校正值 (dx).这种方法可能会让学习过程曲折无比, 看起来像 喝醉的人回家时, 摇摇晃晃走了很多弯路.
Stochastic Gradient Descent (SGD) 随机梯度下降法
略
Momentum
Momentum 相当于利用了下降的惯性,把这个人从平地上放到了一个斜坡上, 只要他往下坡的方向走一点点, 由于向下的惯性, 他不自觉地就一直往下走, 走的弯路也变少了
AdaGrad
他的作用和 momentum 类似, 不过不是给喝醉酒的人安排另一个下坡, 而是给他一双不好走路的鞋子, 使得他一摇晃着走路就脚疼, 鞋子成为了走弯路的阻力, 逼着他往前直着走.
RMSProp
RMSProp同时具备以上两种方法的优势. 不过 RMSProp 还没把 Momentum合并完全, 还缺少了红框中的一部分. 所以, Adam的方法中补上了这种想法.
Adam
计算m 时有 momentum 下坡的属性, 计算 v 时有 adagrad 阻力的属性, 然后再更新参数时 把 m 和 V 都考虑进去. 实验证明, 大多数时候, 使用 adam 都能又快又好的达到目标, 迅速收敛
Momentum、AdaGrad、RMSProp、Adam都是在学习率上做文章
TensorFlow提供了一下几种优化器: