@songying
2018-09-30T17:13:40.000000Z
字数 2736
阅读 1011
综述类论文
虽然梯度下降优化算法越来越受欢迎,但通常作为黑盒优化器使用,因此很难对其优点和缺点的进行实际的解释。本文旨在让读者对不同的算法有直观的认识,以帮助读者使用这些算法。在本综述中,我们介绍梯度下降的不同变形形式,总结这些算法面临的挑战,介绍最常用的优化算法,回顾并行和分布式架构,以及调研用于优化梯度下降的其他的策略。
本文旨在让读者对不同的优化梯度下降的算法有直观的认识,以帮助读者使用这些算法。
- 在第二章中,我们首先介绍梯度下降的几种变体。
- 在第三章中,我们简要总结在训练过程中所面临的挑战。
- 在第四章中,介绍最常用的优化算法
- 第5章中, 我们将简单讨论在并行和分布式环境中优化梯度下降的算法和框架
- 在第6部分,我们将思考对优化梯度下降有用的一些其他策略。
梯度下降法有三种变体,它们之间的区别为我们在计算目标函数的梯度时使用到多少数据。根据数据量的不同,我们在参数更新的精度和更新过程中所需要的时间两个方面做出权衡。
SGD在每次计算梯度的时候, 梯度的方向是不同的, 这可能导致一种震荡现象, 这种震荡现象减慢了梯度下降法的速度,这也导致你无法使用更大的学习率, 如果你使用较大的学习率, 这也可能导致震荡更大, 收敛更慢。
SGD很难通过陡谷,即在一个维度上的表面弯曲程度远大于其他维度的区域[19],这种情况通常出现在局部最优点附近。在这种情况下,SGD摇摆地通过陡谷的斜坡,同时,沿着底部到局部最优点的路径上只是缓慢地前进。
从本质上说,动量法,就像我们从山上推下一个球,球在滚下来的过程中累积动量,变得越来越快(直到达到终极速度,如果有空气阻力的存在,则)。同样的事情也发生在参数的更新过程中:对于在梯度点处具有相同的方向的维度,其动量项增大,对于在梯度点处改变方向的维度,其动量项减小。因此,我们可以得到更快的收敛速度,同时可以减少摇摆。
https://zhuanlan.zhihu.com/p/22810533
博士论文: http://www.cs.utoronto.ca/~ilya/pubs/ilya_sutskever_phd_thesis.pdf
对比两个公式,我们发现, 主要区别在于 的更新,具体来说是后一项的不同。 我们来分析一下区别:
思想: 让学习率适应参数,对于出现次数较少的特征,我们对其采用更大的学习率,对于出现次数较多的特征,我们对其采用较小的学习率。
Adagrad非常适合处理稀疏数据
t 表示每一次迭代, 一般是一个极小值,目的是防止分母为0一般取值为 。 是一个对角矩阵, 每个对角线位置的值累加到 t 次迭代的对应参数 梯度平方和, 表示前t步参数梯度的累加。
Adagrad算法的优点: 消除了手动调整 learning rate,大多数实现使用 learning rate = 0.01 。
Adagrad 主要的缺点在于它的分母项的积累: 由于每个附加项都是正数,因此累积总和在训练期间不断增长。这反过来导致学习速率缩小并最终变得无限小,此时算法不再能够获得额外的知识。