牛顿法理解

1. 牛顿法

牛顿法(Newton's method)是一种近似求解方程的方法,它使用函数$f(x)$的泰勒级数的前面几项来寻找方程$f(x)=0$的根,后来由于最优化研究兴起后,将其应用在了最优化领域。

牛顿法梯度下降法的目标一样,都是通过迭代法寻找导数为0的点,核心思想是在迭代点用二次函数(泰勒级数)来逼近目标函数,得到导数为0的方程,求解该方程,得到下一个迭代点,就这样不断迭代,直到到达导数为0的点处。

2. 牛顿法的代数方法理解

我们同样先用易懂的代数方法进行描述,然后再理解矩阵方法的描述

如有有同学不太了解泰勒级数,可以先看维基百科-泰勒级数对其有个大致的了解就可以了。

假设目标函数$f(x)$, 我们对其在$x_0$处做泰勒展开,其公式如下:

$$
f(x) = f(x_0) + f’(x_0)(x-x_0) + \frac{1}{2} f’’(x_0)(x-x_0)^2 + \ldots + \frac{1}{n!}f^{(n)}(x_0)(x-x_0)^n
$$

我们忽略那些高阶无穷小的项,在这里也就是二次以上的项,也就是

$$
f(x) = f(x_0) + f’(x_0)(x-x_0) + \frac{1}{2} f’’(x_0)(x-x_0)^2
$$

现在再对等式两边其进行求导,并令其为0,即

$$
\begin{split}
f’(x) &= 0 + f’(x_0) + \frac{1}{2} f’’(x_0) * (2(x-x_0)) \\\
&= f’(x_0) + f’’(x_0)(x-x_0)
\end{split}
$$

令左式为0,即得

$$
0 = f’(x_0) + f’’(x_0)(x-x_0)
$$

可得

$$
x = x_0 - \frac{f’(x_0)}{f’’(x_0)}
$$

这样我们就得倒了下一个迭代点,只要重复这个过程直到是导数为0的点,这样我们就有了代数方法的牛顿迭代公式,如下

$$
x_{i+1} \leftarrow x_i - \frac{f’(x_i)}{f’’(x_i)}
$$

2.2 牛顿法的矩阵方法理解

在实际应用中我们主要面对向量和矩阵的情况。便于理解,在矩阵方法中会需要矩阵微分的基础知识,网上有很多相关资料,推荐wikipedia-Matrix_calculus

2.2.1 泰勒展开

首先我们先看二元函数在点$x^0即(x^0_1, x^0_2)$处的泰勒展开(只展开到二级):

$$
\begin{split}
f(x_1, x_2) = &f(x^0_1, x^0_2) \\\
&+(x_1-x^0_1)f’_{x_1}(x^0_1, x^0_2) + (x_2-x^0_2)f’_{x_2}(x^0_1, x^0_2) \\\
&+\frac{1}{2!}(x_1-x^0_1)^2f’’_{x_1x_1}(x^0_1, x^0_2) + \frac{1}{2!}(x_1-x^0_1)(x_2-x^0_2)f’’_{x_1x_2}(x^0_1, x^0_2) \\\
&+\frac{1}{2!}(x_2-x^0_2)(x_1-x^0_1)f’’_{x_2x_1}(x^0_1, x^0_2) + \frac{1}{2!}(x_2-x^0_2)^2f’’_{x_2x_2}(x^0_1, x^0_2)\\\
&+o^n
\end{split}
$$

下面对N元函数在$x^0即(x^0_1, x^0_2, \ldots, x^0_n)$处进行展开,也只展开到二级,如下:

$$
\begin{split}
f(x_1, x_2, \ldots, x_n) = &f(x^0_1, x^0_2, \ldots, x^0_n) \\\
& + \sum_{i=1}^{n} (x_i - x^0_i)f’_{x_i}(x^0_1, x^0_2, \ldots, x^0_n) \\\
& + \frac{1}{2!}\sum_{i,j=1}^{n}(x_i-x^0_i)(x_j-x^0_j)f’’_{x_ix_j}(x^0_1, x^0_2, \ldots, x^0_n) \\\
& + o^n
\end{split}
$$

好了,现在我们将其写成矩阵形式,在$\mathbf{x}^0$处展开,其中$\mathbf{x}^0=[x^0_1, x^0_2, \ldots, x^0_n]^T$,即为:

$$
\begin{split}
f(\mathbf{x})=f(\mathbf{x}^0) + [\nabla f(\mathbf{x}^0)]^T(\mathbf{x}-\mathbf{x}^0) + \frac{1}{2!}[\mathbf{x}-\mathbf{x}^0]^T\nabla^2f(\mathbf{x}^0)(\mathbf{x}-\mathbf{x}^0) + o^n
\end{split}
$$

其中:

$$
\nabla^2f(\mathbf{x}^0) =
\begin{bmatrix}
\frac{\partial^2f(\mathbf{x}^0)}{(\partial x_1)^2} & \frac{\partial^2f(\mathbf{x}^0)}{\partial x_1 \partial x_2} & \cdots & \frac{\partial^2f(\mathbf{x}^0)}{\partial x_1 \partial x_n} \\\
\frac{\partial^2f(\mathbf{x}^0)}{\partial x_2 \partial x_1} & \frac{\partial^2f(\mathbf{x}^0)}{(\partial x_2)^2} & \cdots & \frac{\partial^2f(\mathbf{x}^0)}{\partial x_2 \partial x_n} \\\
\vdots & \vdots & \ddots & \vdots \\\
\frac{\partial^2f(\mathbf{x}^0)}{\partial x_n \partial x_1} & \frac{\partial^2f(\mathbf{x}^0)}{\partial x_n \partial x_1} & \cdots & \frac{\partial^2f(\mathbf{x}^0)}{(\partial x_n)^2} \\\
\end{bmatrix}
$$

这种矩阵也称之为Hessian 矩阵,wikipedia-Hessian_matrix

如果对上面还有不太理解的,可以先用二元自己尝试转换成矩阵形式来类推N元。

2.2.2 迭代求解

我们对矩阵形式的泰勒展开忽略二次以上的项,即为:

$$
\begin{split}
f(\mathbf{x})=f(\mathbf{x}^0) + [\nabla f(\mathbf{x}^0)]^T(\mathbf{x}-\mathbf{x}^0) + \frac{1}{2!}[\mathbf{x}-\mathbf{x}^0]^T\nabla^2f(\mathbf{x}^0)(\mathbf{x}-\mathbf{x}^0)
\end{split}
$$

对其两边同时求梯度,我们可以得到:

$$
\nabla f(\mathbf{x})= \nabla f(\mathbf{x}^0) + \nabla^2f(\mathbf{x}^0)(\mathbf{x}-\mathbf{x}^0)
$$

其中 $\nabla^2f(\mathbf{x}^0)$ 为Hessian 矩阵, 我们将其写为$\mathbf{H}$, 令函数的梯度为0,则有:

$$
\begin{split}
0 &= \nabla f(\mathbf{x}^0) + \nabla^2f(\mathbf{x}^0)(\mathbf{x}-\mathbf{x}^0) \\\
\Rightarrow \mathbf{x} &= \mathbf{x}^0 - [\nabla^2f(\mathbf{x}^0)]^{-1} \nabla f(\mathbf{x}^0) \\\
&= \mathbf{x}^0 - \mathbf{H}^{-1} \nabla f(\mathbf{x}^0)
\end{split}
$$

从$\mathbf{x}^0$处开始,反复计算函数在处的Hessian矩阵和梯度向量,然后用下述公式进行迭代:

$$
\mathbf{x}^{i+1} \leftarrow \mathbf{x}^i - \mathbf{H}_i^{-1} \nabla f(\mathbf{x}^i)
$$

最终会达到最优的点,其中$- \mathbf{H}_i^{-1} \nabla f(\mathbf{x}^i)$ 称之为牛顿方向,迭代终止的条件是梯度的模接近于0,或者函数值下降小于指定阈值。

3. 优缺点

主题 内容
优点 1. 充分接近极小点时,牛顿法具有二阶收敛速度
缺点 1. 和梯度下降法相比,在使用牛顿迭代法进行优化的时候,需要求Hessien矩阵的逆矩阵,这个开销是很大的。

2. 牛顿法不是整体收敛的。

参考文档

  1. 维基百科-泰勒级数
  2. wikipedia-Matrix_calculus
  3. wikipedia-Hessian_matrix
  4. 理解牛顿法
  5. 多元函数的泰勒展开式
  6. 再谈 牛顿法/Newton’s Method In Optimization

   转载规则


《牛顿法理解》 王聪颖 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
机器学习性能评价指标汇总 机器学习性能评价指标汇总
1 分类1.1 混淆矩阵 True Positive(真正, TP):将正类预测为正类数. True Negative(真负 , TN):将负类预测为负类数. False Positive(假正, FP):将负类预测为正类数 → 误报 (T
2019-10-30
下一篇 
最优化算法之Momentum 最优化算法之Momentum
1 Momentum Momentum 中文为:动量法 虽然随机梯度下降仍然是非常受欢迎的优化方法,但其学习过程有时会很慢,并且有的时候对于比较的复杂的模型,我们很难得到global minima, 当然他们的梯度在这些地方也是0,所以就
2019-10-08
  目录