转载自:https://zhuanlan.zhihu.com/p/78185057
梯度法和牛顿法都是优化中常用的算法,一般来说机器学习和深度学习中用到的优化方法中梯度法是较多的,以及它的改进的算法,如adagrad, adadelta, rmsprop, adam等。回到本问题上来。
梯度下降法的公式如下:
牛顿法的公式如下:
可以看到梯度法要求的是一阶导数,牛顿法要求二阶导数且求海塞矩阵的逆,因此来说比较耗时。
总的来说,梯度法和牛顿法有如下区别:
- 梯度下降法是一阶优化算法,牛顿法是二阶优化算法
- 牛顿法的收敛速度相比梯度下降法常常较快,但是计算开销大,实际中常用拟牛顿法
- 牛顿法对初始值有一定要求,在非凸优化问题中(如神经网络训练),牛顿法很容易陷入鞍点(牛顿法步长会越来越小),而梯度下降法则很容易逃离鞍点(因此在神经网络训练中一般使用梯度下降法,高维空间的神经网络中存在大量鞍点)
- 梯度下降法在靠近最优点时会震荡,因此步长调整在梯度下降法中是必要的,具体有adagrad, adadelta, rmsprop, adam等一系列自适应学习率的方法
参考文献:
Eureka:梯度下降法、牛顿法和拟牛顿法
https://blog.csdn.net/qq_39852676/article/details/86529995
常见的几种最优化方法(梯度下降法、牛顿法、拟牛顿法、共轭梯度法等) - 蓝鲸王子 - 博客园