Newton法(牛頓法 Newton Method)


           1、牛頓法應用范圍

                         牛頓法主要有兩個應用方向:1、目標函數最優化求解。例:已知 f(x)的表達形式,g(x)=\min\left\|{f(x)}\right\|,求 ming(x),及g(x)取最小值時的 x ?,即

                                                          由於||f(x)||通常為誤差的二范數,此時這個模型也稱為最小二乘模型,即\min\{{f^2}(x)\}

                                                      2、方程的求解(根)。例:求方程的解:g(x) = 0,求 x ?

                    這兩個應用方面都主要是針對g(x)為非線性函數的情況。2中,如果g(x)為線性情況下的求解通常使用最小二乘法求解。

                         牛頓法的核心思想是對函數進行泰勒展開。

           2、牛頓法用於方程求解

                    對f(x)進行一階泰勒公式展開:

                                              g(x){\approx}g({x_k})+g'({x_k})(x-{x_k})   (1)

                    此時,將非線性方程 g(x) = 0 近似為線性方程:

                                              g({x_k})+g'({x_k})(x-{x_k})=0   (2)

                    若 f’(x) != 0,則下一次迭代解為:

                                              {x_{k+1}}={x_k}-\frac{1}{{g'({x_k})}}g({x_k})      (3)

                    牛頓迭代示意圖(因此Newton迭代法也稱為切線法):

                                          1

          3、牛頓法用於函數最優化求解

                     對f(x)進行二階泰勒公式展開:

                                            g(x){\approx}g({x_k})+g'({x_k})(x-{x_k})+\frac{1}{2}g''({x_k}){(x-{x_k})^2}    (4)

                     此時,將非線性優化問題 min f(x) 近似為為二次函數的最優化求解問題:

                                            \min\{g({x_k})+g'({x_k})(x-{x_k})+\frac{1}{2}g''({x_k}){(x-{x_k})^2}\}    (5)

                     對於(5)式的求解,即二次函數(拋物線函數)求最小值,對(5)式中的函數求導:

                                            g'({x_k})+g''({x_k})(x-{x_k})=0    (6)

                                            \Rightarrow{x_{k+1}}={x_k}-\frac{1}{{g''({x_k})}}g'({x_k})   (7)

                     從本質上來講,最優化求解問題的迭代形式都是: {x_{k+1}}={x_k}-kg'({x_k})

                     其中k為系數,g'({x_k})為函數的梯度(即函數值上升的方向),那么-g'({x_k})為下降的方向,

                     最優化問題的標准形式是:求目標函數最小值,只要每次迭代沿着下降的方向迭代那么將逐漸達到最優,

                     而牛頓將每次迭代的步長定為:1/g''({x_k})

            4、補充

                          a、嚴格來講,在“3、牛頓法用於函數最優化求解”中對函數二階泰勒公式展開求最優值的方法稱為:Newton法

                         而在“2、牛頓法用於方程求解”中對函數一階泰勒展開求零點的方法稱為:Guass-Newton(高斯牛頓)法

                     b、在上面的陳述中,如果x是一個向量,那么公式中:

                         g'({x_k})(x-{x_k})應該寫成:g'{({x_k})^T}(x-{x_k})g'({x_k})為Jacobi(雅克比)矩陣。

                         g''({x_k})(x-{x_k})應該寫成:{(x-{x_k})^T}g''({x_k})(x-{x_k})g''(x-{x_k})為Hessian(海森)矩陣。

                     c、牛頓法的優點是收斂速度快,缺點是在用牛頓法進行最優化求解的時候需要求解Hessian矩陣。

                         因此,如果在目標函數的梯度和Hessian矩陣比較好求的時候應使用Newton法。

                         牛頓法在進行編程實現的時候有可能會失敗,具體原因及解決方法見《最優化方法》-張薇 東北大學出版社 第155頁。

           5、Newton法與Guass-Newton法之間的聯系

                        對於優化問題 \min\left\|{f(x)}\right\|,即\min\{{f^2}(x)\},當理論最優值為0時候,這個優化問題就變為了函數求解問題:

                                                              \min\{{f^2}(x)\}{\Rightarrow}{f^2}(x)=0{\Rightarrow}f(x)=0

                          結論:當最優化問題的理論最小值為0時,Newton法求解就可變為Guass-Newton法求解。        

                     另外:對f(x)進行二階泰勒展開:

                                                             f(x)=f({x_k})+J{x_k}+0.5{x_k^'}H{x_k}

                          f(x)乘以f(x)的轉置並忽略二次以上的項:

                                   {f^T}(x)f(x)=\{{f^T}({x_k})+{(J{x_k})^T}+{(0.5{x_k^'}H{x_k})^T}\}

                                                      *\{f({x_k})+J{x_k}+0.5{x_k^'}H{x_k}\}

                                                    {\rm{=}}{f^T}({x_k})f({x_k})+2f({x_k})J{x_k}+x_k^T{J^T}J{x_k}+f({x_k})x_k^TH{x_k}

                                                    ={f^T}({x_k})f({x_k})+2f({x_k})J{x_k}+x_k^T({J^T}J+f({x_k})H){x_k}

                     因此,當{x_k}在最優解附近時,即滿足f({x_k})=0,此時可認為:H={J^T}J

            6、擴展閱讀

                        a、修正牛頓(Newton)法

                    b、共軛方向法與共軛梯度法

                    c、擬牛頓法(避免求解Hessian矩陣):DFP算法、BFGS算法

            自己所有博客匯總


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM