Levenberg-Marquardt算法

        设函数f建立了参数向量P\in R^{m}估计的测量向量\hat{x}\in R^{n}的关系.现在有初始的参数估计P_{0}和测量向量x,想找到一个向量P^{+}最好满足函数关系f.即最小化平方距离\epsilon ^{T}\epsilon (\epsilon = x - \hat{x}).

        LM算法的思想是在信赖域内线性逼近f.对于一个小的\left \| \delta _{p} \right \|,泰勒展开得到近似值.

f(P+\delta _{P}) \approx f(P)+J\delta _{P}             [1]

         J是雅克比矩阵\frac{\partial f(P)}{\partial P}.像所有的非线性优化方法一样,LM是迭代的:设置起始点P_{0},产生一系列的P_{1},P_{2},...,最后收敛到f的局部最小值P^{+}.因此,对于每一步,需要找到\delta _{P}最小化\left \| x-f(P+\delta _{P}) \right \|\approx \left \| x-f(P)-J\delta _{P} \right \|= \left \| \epsilon -J \delta _{P}\right \|.被找的\delta _{P}就是线性最小二乘问题的解:当J\delta _{P}-\epsilonJ的列空间正交时获得最小值.得到J^{T}(J\delta _{P}-\epsilon )=0,其中\delta _{P}是正规方程[1]的解.

 J^{T}J\delta _{P}=J^{T}\epsilon                                 [2]

        矩阵J^{T}J是Hessian矩阵的近似.LM方法实际上求解了一个称为增广正态方程的[2]的变体.

N\delta _{P}=J^{T}\epsilon                                       [3]

        其中N的非对角元素与J^{T}J的相应元素相同,对角元素在\mu >0N_{ii}=\mu +\left [ J^{T}J \right ]_{ii}给出.改变J^{T}J的对角元素的策略称为阻尼,\mu被称为阻尼系数.如果被更新的参数向量P+\delta _{P},其中\delta _{P}由方程[3]得到,且使残差\epsilon减小,此次更新可以接受并且减小阻尼系数并重复,否则增加,增广正态方程被再次求解而且迭代到有一个\delta _{P}使残差减小.

       在LM中,阻尼项\mu在每次迭代时进行调整,以确保减少残差.如果阻尼设置为较大值,则矩阵N在等式[3]中,几乎是对角的.此时LM的更新步长\delta _{P}接近最速下降方向.阻尼还可以处理[3]中雅可比矩阵不是满秩,J^{T}J是奇异的的情况.如果阻尼较小,LM步长近似于适用于完全线性问题的精确二次步长.满足以下条件时迭代结束:

(1)\epsilon ^{T}\epsilon梯度的幅值,即等式[2]右侧的J^{T}J,下降到阈值\epsilon _{1}以下

(2)\delta _{P}值的相对变化下降到阈值\epsilon _{2}以下

(3)残差\epsilon ^{T}\epsilon降到阈值\epsilon _{3}以下

(4)最大迭代次数达到

如果x的协方差矩阵\sum \: _{x}可用,可以最小化\sum \: _{x}^{-1},-norm\: \: \: \epsilon ^{T}\sum \: _{x}^{-1}\epsilon.因此,通过求解由加权正态方程定义的加权最小二乘问题

J^{T}\sum\: _{x}^{-1}J\delta _{P}=J^{T}\sum\: _{x}^{-1}\epsilon

 

 

 

你可能感兴趣的:(算法)