高斯牛顿法

    求最优估计$x^{*}$,使得误差(残差)向量的$\epsilon=f(x^{*})-z$的平方和$S(x)=\epsilon^{T}\epsilon$最小,即求

\begin{equation}
x^{*}=\arg\min_{x}\epsilon^{T}\epsilon=\arg\min_{x}S(x)=\arg\min_{x}\|f(x)-z\|_{2}^{2}\label{eq:gen_opt}
\end{equation}


    最理想的情况,误差$\epsilon=0$,此时$f(x^{*})=z$,故最优化问题\eqref{eq:gen_opt}等价于“解方程”问题:
\begin{equation}
f(x)=z\label{eq:gen_opt_eqform}
\end{equation}


   大部分非线性最优化算法需要迭代求解
\[
x:=x+\delta
\]
若已有初值$x$,每次迭代需要求解一个最优增量$\delta$,使得迭代后的“预测输出”$f(x+\delta)$与实际的观测值$z$的误差$\|f(x+\delta)-z\|$最小。

对误差向量线性化,有
\[
f(x+\delta)-z\approx f(x)+J\delta-z
\]
其中,$J=\frac{\partial f(x)}{\partial x}$为$f(x)$的雅克比矩阵。令上式为$0$,就变成了解线性方程问题
\[
J\delta=\epsilon,\:\epsilon=z-f(x)
\]

    实际应用中,上式往往是超定的,故用线性最小二乘法求解,
\begin{equation}
J^{T}J\delta=J^{T}\epsilon\:\Leftrightarrow\:\delta^{*}=\arg\min_{\delta}\|J\delta-\epsilon\|_{2}^{2}\label{eq:gen_opt_lin2}
\end{equation}
故非线性最优化问题变成了迭代求解线性方程的问题。上述算法又称为\emph{高斯牛顿法}。

    如果已知观测$z$的协方差的矩阵$\Sigma$,应该对指标函数按方差$\Sigma$加权,方差大的观测分量权重小,对结果的影响小。引入方差加权后,\eqref{eq:gen_opt}中的优化问题变成
\begin{equation}
x^{*}=\arg\min_{x}S(x)=\arg\min_{x}\epsilon^{T}\Sigma^{-1}\epsilon=\arg\min_{x}\|f(x)-z\|_{\Sigma^{-1}}^{2}\label{eq:gen_opt-1}
\end{equation}


    要解决上述问题,则在每一次迭代过程中求解
\begin{equation}
\delta^{*}=\arg\min_{\delta}\|J\delta-\epsilon\|_{\Sigma^{-1}}^{2}\label{eq:gen_opt_lin3}
\end{equation}


    设信息矩阵$\Sigma^{-1}$有Cholesky分解
\begin{equation}
\Sigma^{-1}=A^{T}A\label{eq:gen_opt_chol}
\end{equation}
则\eqref{eq:gen_opt_lin3}的指标函数可以改写成
\begin{equation}
\|J\delta-\epsilon\|_{\Sigma^{-1}}^{2}=(J\delta-\epsilon)^{T}A^{T}A(J\delta-\epsilon)=\|(AJ)\delta-A\epsilon\|_{2}^{2}\label{eq:gen_opt_lin4}
\end{equation}
只需令$\tilde{J}=AJ$,$\tilde{\epsilon}=A\epsilon$,\eqref{eq:gen_opt_lin4}变成$\|\tilde{J}\delta-\tilde{\epsilon}\|_{2}^{2}$,故加权问题\eqref{eq:gen_opt_lin3}可以转化为非加权问题\eqref{eq:gen_opt_lin2}。利用\eqref{eq:gen_opt_lin2}中“$\Leftrightarrow$”左右两侧的等价关系,问题\eqref{eq:gen_opt_lin3}中最优增量$\delta$由下式确定:
\begin{equation}
J^{T}\Sigma^{-1}J\delta=J^{T}\Sigma^{-1}\epsilon\label{eq:gen_opt_lin_weighted}
\end{equation}
   在实际操作中,不需要进行Cholesky分解\eqref{eq:gen_opt_chol},只需在每一次迭代过程中求解\eqref{eq:gen_opt_lin_weighted}即可。

   可以证明,\eqref{eq:gen_opt_lin_weighted}中$J^{T}\Sigma^{-1}J$为能量函数$S(x)$的Hessian矩阵;$J^{T}\Sigma^{-1}$为能量函数的梯度。

 

posted on 2012-12-21 14:19  rongyilin  阅读(6785)  评论(2编辑  收藏  举报

导航