梯度下降法和牛顿法

梯度下降法和牛顿法是最常见的两个模型训练算法了,现在对这两个算法做一个比较:

  梯度下降法 牛顿法
迭代公式 [{w^{(k + 1)}} = {w^{(k)}} - alpha abla J({w^{(k)}})] [{w^{(k + 1)}} = {w^{(k)}} - {H^{ - 1}}({w^{(k)}}) abla J({w^{(k)}})]
物理意义

 1. 搜寻函数的最低点

2.搜索方向是损失函数一阶导数的方向

3. 每次迭代步长有参数(alpha )决定

 1. 搜索损失函数一阶导数=0的点

2. 搜索方向是损失函数二阶导数(一阶导数在当前点的切线)

3.每次迭代都在搜索方向上找与y=0平面的交点,无步长参数

单次迭代时间复杂度  只需计算1阶导数,时间复杂度低,为(O(n))  需要计算Hessian矩阵及其逆矩阵,时间复杂度高,为(O(n^3))
收敛速度 收敛慢,迭代次数大 收敛快,迭代次数小
参数选择  需要选择步长[alpha ]  无需选择参数
适用范围 适用feature维度较大的场景,如feature数>1000 使用feature数较小的场景

牛顿法的物理意义可以从下面两个方面理解:

1. 损失函数在当前搜索点泰勒展开,丢弃二阶以上的函数项,下一个搜索点为展开后的最小值

2. 搜寻损失函数一阶导数与y=0平面的交点,搜索方式类似与梯度下降,即计算一阶导数的导数为搜索方向,下一个搜索点是当前点切线与y=0平面的交点。

原文地址:https://www.cnblogs.com/richqian/p/4512118.html