梯度下降法和牛顿法

一.梯度下降法:

  1. 梯度下降是用于求函数最小值的算法,其步骤为:
    a.随机选择一个参数组合,计算损失函数。
    b.通过方向和补仓,对参数进行更新,找下一个能够让损失函数值更低的参数组合。
    c.持续迭代直至寻找到一个局部最小值。
    因为没有尝试所有的参数组合,所以不能保证寻找到的局部最小值就是全局最小值。
  2. 梯度下降的分类:
    a.批量梯度下降(BGD):在梯度下降的每一步中,我们都用到了所有的训练样本,需要进行求和运算
    b.随机梯度下降(SGD):SGD和BGD相反,SGD每次更新参数仅用一个样本进行,而BGD是用所有样本。
    c.小批量梯度下降(MBGD):是BGD和SGD的中和,每次参数迭代用大于一小于所有的样本。其优点为:比SGD精度高,但可能需要的时间比较长。

SGD和BGD的比较:
训练速度上:SGD因仅对一个样本进行迭代参数,速度上会比BGD快很多。
准确度上:BGD更高,因为SGD仅对一个样本进行迭代,得到的最小值很可能是局部最小值。
收敛速度上:SGD因一次一个样本,迭代方向变化很大,需要绕很久的弯才能收敛到局部最优解。

二. 牛顿法:

牛顿法是求函数值为0时的自变量取值方法,其实质是对损失函数进行求导,寻找能使得损失函数导数为0的解,当损失函数导数为0时,也便找到了最优解(极值点)。
其迭代过程是在当前位置x0求该函数的切线,该切线和x轴的交点x1,作为新的x0,重复这个过程,直到交点和函数的零点重合。此时的参数值就是使得目标函数取得极值的参数值。

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

在收敛速度上,牛顿法要比梯度下降法更快,因为其参数更新的步长会比较大,在接近最优解时,梯度下降法也容易因步长比较大而产生来回震荡的效果,从而降低了收敛速度。
但是在运行过程中,牛顿法的计算量要远大于梯度下降,因为牛顿法要对多个值进行求导运算,而梯度下降仅需要得出方向和步长便能更新参数。

你可能感兴趣的:(数据分析及挖掘,梯度下降,牛顿法)