美文网首页
基于梯度的优化方法总结

基于梯度的优化方法总结

作者: LuDon | 来源:发表于2019-07-15 17:01 被阅读0次

    引言

    梯度下降法的核心是在最小化目标函数时,每次迭代中,对每个变量,按照目标函数在该变量梯度的相反方向更新对应的参数值。也就是,在目标函数的超平面上,沿着斜率下降的方向前进,直到遇到最小值(这个最小值不一定是全局最小值)。

    梯度下降法

    梯度下降推导

    一元函数的泰勒展开如下:



    只去右边的前两项,则有:





    我们的目标是在迭代的过程中, 函数值逐渐变小,即



    则我们构造

    此时,

    则迭代形式为:

    在使用梯度下降时,需要进行调优:

    • 1、算法步长的选择。
    • 2、算法参数的初始值选择。
    • 3、归一化。

    牛顿法

    对泰勒展开取前两项,有



    两边取导数得



    根据微积分性质,当取最小值时导数为0,则有


    则牛顿法的参数迭代更新公式为:



    函数有极值的必要条件是在极值点处的一阶导数为0,即梯度向量为0。当海森矩阵是正定是,函数的极值为极小值。

    梯度下降法和牛顿法虽然都可以根据泰勒展开来推导,但是所依托的思想是不一样的。梯度下降法是梯度求解,牛顿法是用二阶的海森矩阵的逆矩阵求解。相对而言,使用牛顿法收敛更快,但是每次迭代时间较长。

    拟牛顿法

    在牛顿法中,需要计算二阶海森矩阵的逆矩阵,因此使用近似的矩阵代替逆矩阵。

    梯度下降优化算法

    SGD中,\Delta x = \alpha g_t ,其中\Delta x是参数的变化量,g_t是梯度。
    SGD存在的问题:因为参数更新比较频繁,会造成cost function有严重的震荡,最终停留在局部最小。
    改进方法:
    1、加入一阶动量,即在梯度下降过程中加入惯性,使梯度方向不变的维度上速度更快,梯度方向有所改变的维度上的速度变慢,这样可以加速收敛并较小震荡。


    一阶动量是移动平均值,参数取经验值0.9,也就是说t时刻的主要下降方向是由t-1时刻的下降方向再加上一点点t时刻的偏向决定的。
    2、加入二阶动量

    梯度为
    3、由于二阶动量会不断积累,导致变化量急剧较少,使用滑动窗口加权平均二阶动量

    Adam = 自适应+动量,继承了一阶动量和二阶动量

    相关文章

      网友评论

          本文标题:基于梯度的优化方法总结

          本文链接:https://www.haomeiwen.com/subject/aujnkctx.html