優化算法-牛頓法

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

通常狀況對於f(x)是一元二次的狀況直接應用求根公式就能夠了,可是對於更高次(在5次方以上),沒有求根公式,因而牛頓想了個近似求解的辦法——牛頓法函數

首先以一元函數爲例來講明牛頓法的具體過程3d

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

令g(x)=0,則class

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)及其一階、二階導是連續的,而且待求的零點是孤立的,那麼在零點周圍存在一個區域,只要初始值位於這個鄰近區域內,那麼牛頓法一定收斂。
下面動圖形象演示了牛頓法收斂過程

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

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

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

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

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

首先須要求

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

可得:

解得

因此多元函數的梯度更新公式

牛頓法的優缺點總結:

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

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

相關文章
相關標籤/搜索