梯度下降法和牛顿法的比较

在机器学习的优化问题中,梯度下降法和牛顿法是常用的两种凸函数求极值的方法,他们都是为了求得目标函数的近似解。在逻辑斯蒂回归模型的参数求解中,一般用改良的梯度下降法,也可以用牛顿法。由于两种方法有些相似,特地拿来简单地对比一下。

目录

    • 一.梯度下降法
      • 1.梯度下降的思想
          • 1.1.批量梯度下降法
          • 1.2.随机梯度下降法
          • 1.3.随机梯度下降和梯度下降的比较
    • 二.牛顿法
    • 三.牛顿法和梯度下降法的比较
      • 1.牛顿法
      • 2.梯度下降法

一.梯度下降法

1.梯度下降的思想

通过搜索方向和步长来对参数进行更新。其中搜索方向是目标函数在当前位置的负梯度方向。因为这个方向是最快的下降方向。步长确定了沿着这个搜索方向下降的大小。

迭代的过程就像是在不断的下坡,最终到达坡地。
梯度下降法和牛顿法的比较_第1张图片
在二维图中,梯度就相当于凸函数切线的斜率,横坐标就是每次迭代的参数,纵坐标是目标函数的取值。每次迭代的过程是这样:

  • 首先计算目标函数在当前参数值的斜率(梯度),然后乘以步长因子后带入更新公式,如图点所在位置(极值点右边),此时斜率为正,那么更新参数后参数减小,更接近极小值对应的参数。
  • 如果更新参数后,当前参数值仍然在极值点右边,那么继续上面更新,效果一样。
  • 如果更新参数后,当前参数值到了极值点的左边,然后计算斜率会发现是负的,这样经过再一次更新后就会又向着极值点的方向更新。
  • 根据这个过程我们发现,每一步走的距离在极值点附近非常重要,如果走的步子过大,容易在极值点附近震荡而无法收敛。解决办法:将alpha设定为随着迭代次数而不断减小的变量,但是也不能完全减为零。

接下来的目标函数以线性回归的目标函数为例:
    梯度下降法和牛顿法的比较_第2张图片
    梯度下降法和牛顿法的比较_第3张图片

1.1.批量梯度下降法

梯度下降法和牛顿法的比较_第4张图片
梯度下降法和牛顿法的比较_第5张图片
参数更新是要用到全部样本。如上式中的m

1.2.随机梯度下降法

梯度下降法和牛顿法的比较_第6张图片
在这里插入图片描述
参数的更新只用到某一个样本。而不是全部的样本。批量梯度下降公式中的m变为了1

1.3.随机梯度下降和梯度下降的比较
  • 批量梯度下降:
  1. 是最小化所有样本的损失函数,最终得到全局最优解。
  2. 由于每次更新参数需要重新训练一次全部的样本,代价比较大,适用于小规模样本训练的情况。
  • 随机梯度下降:
  1. 是最优化每个样本的损失函数。每一次迭代得到的损失函数不是,每次每次向着全局最优的方向,但是大体是向着全局最优,最终的结果往往是在最优解的附近。
  2. 当目标函数是凸函数的时候,结果一定是全局最优解。
  3. 适合大规模样本训练的情况。
  • 小批量梯度下降法
    将上述两种方法作结合。每次利用一小部分数据更新迭代参数。即样本在1和m之间。

二.牛顿法

首先牛顿法是求解函数值为0时的自变量取值的方法。

利用牛顿法求解目标函数的最小值其实是转化成求使目标函数的一阶导为0的参数值。这一转换的理论依据是,函数的极值点处的一阶导数为0.

其迭代过程是在当前位置x0求该函数的切线,该切线和x轴的交点x1,作为新的x0,重复这个过程,直到交点和函数的零点重合。此时的参数值就是使得目标函数取得极值的参数值。

其迭代过程如下:
  梯度下降法和牛顿法的比较_第7张图片
当应用于求解最大似然估计的值时,变成ℓ′(θ)=0的问题。这个与梯度下降不同,梯度下降的目的是直接求解目标函数极小值,而牛顿法则变相地通过求解目标函数一阶导为零的参数值,进而求得目标函数最小值。那么迭代公式写作:
在这里插入图片描述
当θ是向量时,牛顿法可以使用下面式子表示:
在这里插入图片描述
其中H叫做海森矩阵,其实就是目标函数对参数θ的二阶导数。

三.牛顿法和梯度下降法的比较

1.牛顿法

是通过求解目标函数的一阶导数为0时的参数,进而求出目标函数最小值时的参数。

收敛速度很快。

海森矩阵的逆在迭代过程中不断减小,可以起到逐步减小步长的效果。

缺点:海森矩阵的逆计算复杂,代价比较大,因此有了拟牛顿法。

2.梯度下降法

是通过梯度方向和步长,直接求解目标函数的最小值时的参数。

越接近最优值时,步长应该不断减小,否则会在最优值附近来回震荡。 

你可能感兴趣的:(梯度下降法和牛顿法的比较)