牛顿法求极值

最近在做两幅图像间单应性矩阵估计的研究,遇到LM(Levenberg-Marquardt)算法求极值,在查找资料的过程中发现它兼具梯度下降、与牛顿法的特点,遂逐层抽丝剥茧,现总结牛顿法。

  • 一维牛顿法解方程
    求函数f(x)的根。复杂方程的根很难直接求得,最开始用牛顿法迭代来求方程的根。
    方法是给一个初值x1,在x1处用一阶泰勒展式(为什么用一阶泰勒展式这里需要弄懂泰勒展式之后再来解释???)来近似表示函数f(x)见公式(1)。
    f(x) = f(x1) + f’(x1)(x – x1) (1)
    将f(x) = 0带入公式(1),求得交点x = x1 – f(x1)/f’(x1),这个x点并不是函数f(x)的根,但是距离真正的根更近了一点,如图1所示。
    将上一步所求的x值作为x2值,在x2值处用一阶泰勒展式见公式(2)。
    f(x) = f(x2) + f’(x2)(x – x2) (2)
    将f(x) = 0带入公式(2),求得交点x = x2 – f(x2)/f’(x2),依次迭代进而推出公式(3)。
    x(n+1)=x(n)-f(x(n))/f’(x(n)) (3)
    最终求得的x值变化小于一个阈值就认为这个x值是函数f(x)的近似根。

  • 一维牛顿法求极值
    牛顿法用于求函数极值。对于f(x)的极值点也就是求f’(x)的根,那么也就是如上面介绍的求f’(x)=0的根。给定初值x1,在x1处用二阶泰勒展式见公式(4)。
    f(x) = f(x1) + f’(x1)(x – x1) + 1/2f’’(x1)(x-x1)^2 (4)
    对f(x)求导,令f’(x) = 0, 得x = x1 – f’(x1)/f’’(x1),依次迭代得
    x(n+1)= x(n) – f’(x(n) )/f’’(x(n) )。

  • 多维牛顿法求根
    以上讨论的都是二维向量的情况,下面介绍当因变量X=(x1,x2,x3 … xn)一个向量时的求解,对多维向量进行泰勒展式:
    《牛顿法求极值》
    令一阶泰勒为0得到:
    《牛顿法求极值》
    整理:
    《牛顿法求极值》
    假定方程组由一系列方程{f1=0, f2=0, …, fn=0}组成,可以将上式整理为矩阵形式:
    《牛顿法求极值》
    n个未知数所以有n组方程才能求得n个未知数。
    上式中的n*n矩阵为雅可比矩阵(Jacobian Matrix),简记为J(F)。同时,将自变量(x1,…,xn)记为X,将(t1,…,tn)记为T,将(f1,…,fn)记为F,则有:
    《牛顿法求极值》
    化简后可得:
    《牛顿法求极值》
    将方程组的解写为迭代形式,即可得到适用于方程组求解的牛顿法迭代公式:
    《牛顿法求极值》

  • 多维牛顿法求极值

  • 参考

    原文作者:cuihang5528
    原文地址: https://blog.csdn.net/cuihang5528/article/details/97560529
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞