来源:原始 Jupyter Notebook。内容已转换为网页阅读格式;下载原文件。
牛顿法是一种二阶优化算法,相对于梯度下降算法收敛速度更快。
首先,我们在函数 上选择一个初始点 ,并计算相应的 和切线斜率 ,然后我们计算穿过点 并且斜率为 的直线和 X 轴的交点,也就是求如下方程的解:
我们将新求得的点的坐标命名为 ,通常 会比 更接近 的解。因此我们现在可以利用 开始下一轮迭代,迭代公式可化简为如下所示:
疑惑:不是二阶导数吗?
牛顿法是基于当前位置的切线来确定下一次的位置,所以牛顿法又被很形象地称为是切线法。牛顿法的搜索路径(二维情况)如下图所示:

优缺点
优点
- 相对于梯度下降法,收敛速度更快。
缺点
- 每次计算都需要计算 Hessian 矩阵的逆,因此计算量较大。
- 在多变量的情况下,如果目标矩阵的 Hessain 矩阵非正定,牛顿法确定的搜索方向并不一定是目标函数下降的方向。