LM算法是介于牛顿法与梯度下降法之间的一种非线性优化方法,对于过参数化问题不敏感,能有效处理冗余参数问题,使代价函数陷入局部极小值的机会大大减小,这些特性使得LM算法在计算机视觉等领域得到广泛应用。
正规方程NΔ=JTJΔ=JTϵNΔ=JTJΔ=JTϵ被增量正规方程NΔ=JTϵNΔ=JTϵ,其中N′ii=(1+λ)NiiNii′=(1+λ)Nii而且当i≠ji≠j时,N′ij=NijNij′=Nij
分析
当λλ较小时,同牛顿迭代法
当λλ较大时,JTJJTJ的第jj个对角元素是。可以忽略非对角元素。
令ViVi表示ϑY/ϑxiϑY/ϑxi,则JTJJTJ的第jj个对角元素是。忽略非对角元,ϑxi=(1+λ)−1(VTiϵ)/||Vi||2ϑxi=(1+λ)−1(ViTϵ)/||Vi||2
注意,ϵϵ是我们希望f(X)f(X)移动的方向。对于参数xixi,VTiViT是梯度方向,说明xixi增加单位距离,f(X)f(X)向VTiViT方向移动。VTiϵViTϵ大于0,说明,方向是靠谱的,可以增加xixi。VTiϵViTϵ小于0,说明,方向是反的,应该减少xixi。(1+λ)−1(VTiϵ)/||Vi||2(1+λ)−1(ViTϵ)/||Vi||2的方向由VTiϵViTϵ调控,大小由其他参数调控。除以||Vi||2||Vi||2使得梯度小的可以变化大一些,梯度大的要变化小一些。防止沿一个方向移动通过参数pipi的增量,事实上是在方向ViVi上移动。为什么不用牛顿法呢?当用牛顿法不能下降的时候,说明已经非常靠近极值点了。牛顿法是一阶近似,这个一阶导数在短距离是有效的,但是较大的时候无效。所以,应该减少步长。而(1+λ)−1(1+λ)−1就起到了减少步长的作用