它的思想是将 $F(x)$ 进行二阶的泰勒展开得:
$$ F \left( \boldsymbol { x } _ { k } + \Delta \boldsymbol { x } _ { k } \right) \approx F \left( \boldsymbol { x } _ { k } \right) + \boldsymbol { J } \left( \boldsymbol { x } _ { k } \right) ^ { \mathrm { T } } \Delta \boldsymbol { x } _ { k } + \frac { 1 } { 2 } \Delta \boldsymbol { x } _ { k } ^ { \mathrm { T } } \boldsymbol { H } \left( \boldsymbol { x } _ { k } \right) \Delta \boldsymbol { x } _ { k } $$
求 $\Delta x^$使 $F(x+\Delta x^)$最小:
$$ \Delta \boldsymbol { x } ^ { * } = \arg \min \left( F ( \boldsymbol { x } ) + \boldsymbol { J } ( \boldsymbol { x } ) ^ { \mathrm { T } } \Delta \boldsymbol { x } + \frac { 1 } { 2 } \Delta \boldsymbol { x } ^ { \mathrm { T } } \boldsymbol { H } \Delta \boldsymbol { x } \right) $$
求导并使导数为 $0$ 得:
$$ J + H \Delta x = 0 \Rightarrow \boldsymbol { H } \Delta \boldsymbol { x } = - \boldsymbol { J } $$
如果只是直接沿着一阶梯度的相反反向前进,即可保证函数值下降。这种方法称为最速下降法。 最速下降法过于贪心,容易走出锯齿路线,反而增加了迭代次数。 而牛顿法则需要计算目标函数的 $H$ 矩阵,这在问题规模较大时非常困难,我们通常倾向于避免 $H$ 的计算。对于一般的问题,一些拟牛顿法可以得到较好的结果,而对于最小二乘问题,一般可以采取:高斯牛顿法和列文伯格一马夸尔特方法
Gauss Newton 是最优化算法里面最简单的方法之一。它的思想是将 $f(x)$ 进行一阶的泰勒展开。
$$ f ( \boldsymbol { x } + \Delta \boldsymbol { x } ) \approx f ( \boldsymbol { x } ) + \boldsymbol { J } ( \boldsymbol { x } )^T \Delta \boldsymbol { x } $$
这里 $J(x)^T$ 为 $f(x)$ 关于 $x$ 的导数。根据前面的框架,当前的目标是为了寻找下降矢量 $∆x$,使得 $∥f (x + ∆x)∥^2$ 达到最小。为了求 $∆x$,我们需要解一个线性的最小二乘问题:
$$ \Delta \boldsymbol { x } ^ { * } = \arg \min _ { \Delta \boldsymbol { x } } \frac { 1 } { 2 } \| f ( \boldsymbol { x } ) + \boldsymbol { J } ( \boldsymbol { x } )^T \Delta \boldsymbol { x } \| ^ { 2 } $$
展开得:
$$ \begin{aligned} \frac { 1 } { 2 } \| f ( \boldsymbol { x } ) + \boldsymbol { J }^T ( \boldsymbol { x } ) \Delta \boldsymbol { x } \| ^ { 2 } & = \frac { 1 } { 2 } ( f ( \boldsymbol { x } ) + \boldsymbol { J } ( \boldsymbol { x } )^T \Delta \boldsymbol { x } ) ^ { T } ( f ( \boldsymbol { x } ) + \boldsymbol { J } ( \boldsymbol { x } )^T \Delta \boldsymbol { x } ) \\ & = \frac { 1 } { 2 } \left( \| f ( \boldsymbol { x } ) \| _ { 2 } ^ { 2 } + 2 \Delta \boldsymbol { x } ^T \boldsymbol { J } ( \boldsymbol { x } ) f ( \boldsymbol { x } ) + \Delta \boldsymbol { x } ^ { T } \boldsymbol { J } ( \boldsymbol { x } ) \boldsymbol { J } ( \boldsymbol { x } ) ^T\Delta \boldsymbol { x } \right) \end{aligned} $$
求上式关于 $∆x$ 的导数,并令其为零:
$$ 2 \boldsymbol { J } ( \boldsymbol { x } ) f ( \boldsymbol { x } ) + 2 \boldsymbol { J } ( \boldsymbol { x } ) \boldsymbol { J } ( \boldsymbol { x } )^T \Delta \boldsymbol { x } = \mathbf { 0 } $$
可以得到如下方程组:
$$ \boldsymbol { J } ( \boldsymbol { x } ) \boldsymbol { J } ( \boldsymbol { x } ) ^T\Delta \boldsymbol { x } = - \boldsymbol { J } ( \boldsymbol { x } ) f ( \boldsymbol { x } ) $$
注意,我们要求解的变量是 $∆x$,因此这是一个线性方程组,我们称它为增量方程,也可以称为高斯牛顿方程 (Gauss Newton equations) 或者正规方程 (Normal equations)。我们把左边的系数定义为 $H$,右边定义为 $g$,那么上式变为: