優化算法-牛頓法


牛頓法(英語:Newton's method)又稱為牛頓-拉弗森方法(英語:Newton-Raphson method),它是一種在實數域和復數域上近似求解方程的方法。方法使用函數f(x)的泰勒級數的前面幾項來尋找方程f(x)=0的根。

一般情況對於f(x)是一元二次的情況直接應用求根公式就可以了,但是對於更高次(在5次方以上),沒有求根公式,於是牛頓想了個近似求解的辦法——牛頓法

首先以一元函數為例來說明牛頓法的具體過程

假設我們要求解函數f(x)=0的根,我們首先把函數在處展開成泰勒級數的形式並取其線性部分:

令g(x)=0,則

g(x)=0的根與f(x)=0的根近似相等,所以我們可以將此次計算看做一次迭代的過程,即:

 

 

看下面的定理:

設f(x)在[a,b]滿足
(1) f(a)·f(b)<0
(2) f(x)∈[a,b],f′(x),f″(x)均存在,且f′(x)與f″( x)的符號均保持不變。
(3) f(x)·f″(x)>0, x∈[a,b] 則方程f(x)=0在[a,b]上有且只有一個實根,由牛頓法迭代公式計算得到的近似解序列收斂於方程 f(x)=0 的根 x*。
 
通俗的說,如果f(x)及其一階、二階導是連續的,並且待求的零點是孤立的,那么在零點周圍存在一個區域,只要初始值位於這個鄰近區域內,那么牛頓法必定收斂。
下面動圖形象演示了牛頓法收斂過程

關於牛頓法和梯度下降法的效率對比:

  從本質上去看,牛頓法是二階收斂,梯度下降是一階收斂,所以牛頓法就更快。如果更通俗地說的話,比如你想找一條最短的路徑走到一個盆地的最底部,梯度下降法每次只從你當前所處位置選一個坡度最大的方向走一步,牛頓法在選擇方向時,不僅會考慮坡度是否夠大,還會考慮你走了一步之后,坡度是否會變得更大。所以,可以說牛頓法比梯度下降法看得更遠一點,能更快地走到最底部。(牛頓法目光更加長遠,所以少走彎路;相對而言,梯度下降法只考慮了局部的最優,沒有全局思想。)

牛頓法應用f(x)求極值的問題中就是將求f(x)的極值可以轉化為求的解,這時我們會用到f(x)泰勒展開式中的二階偏導數,對於多元函數,其泰勒展開式中的二階項可以寫成如下形式:

其中H(f)是海森矩陣,其形式為

假設我們要求解f(x)在多元條件下的極值

首先需要求

f(x)在處的包含二階項的泰勒展開式(省去高階無窮小)為

可得:

解得

所以多元函數的梯度更新公式

牛頓法的優缺點總結:

  優點:二階收斂,收斂速度快;

  缺點:牛頓法是一種迭代算法,每一步都需要求解目標函數的Hessian矩陣的逆矩陣,計算比較復雜。


免責聲明!

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



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