基于梯度的优化方法总结

引言

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

梯度下降法

梯度下降推导

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



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





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



则我们构造

此时,

则迭代形式为:

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

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

牛顿法

对泰勒展开取前两项,有



两边取导数得



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


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



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

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

拟牛顿法

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

梯度下降优化算法

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


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

梯度为

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

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

你可能感兴趣的:(基于梯度的优化方法总结)