梯度下降法和牛顿法

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

  梯度下降法 牛顿法
迭代公式 \[{w^{(k + 1)}} = {w^{(k)}} - \alpha \nabla J({w^{(k)}})\] \[{w^{(k + 1)}} = {w^{(k)}} - {H^{ - 1}}({w^{(k)}})\nabla 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平面的交点。

posted @ 2015-05-18 16:07  snen  阅读(2469)  评论(0编辑  收藏  举报