1. 程式人生 > >牛頓法 與 Hessian矩陣

牛頓法 與 Hessian矩陣

牛頓法 主要有兩方面的應用:

  1. 求方程的根;

  2. 求解最優化方法;


一. 為什麼要用牛頓法求方程的根?

假設 f(x) = 0 為待求解方程,利用傳統方法求解,牛頓法求解方程的公式:

f(X0+Δx) = f(X0) + f(X0) ΔX

即 f(X) = f(X0) + f(X0) (X-X0)

這個公式就是一階泰勒展式,f′(X0) 表示 f(X) 在 X0 點的斜率 ,當X方向增量(Δx)比較小時,Y方向增量(Δy)可以近似表示為 斜率(導數)*X方向增量(f′(x0) Δx) ,令 f(x) = 0,我們能夠得到 迭代公式:

X = X0 - f(X0)
/ f(X0) =>
Xn+1 = Xn - f(Xn) / f′(Xn)

通過逐次迭代,牛頓法 將逐步逼近最優值,也就是方程的解。

二. 最優化問題

針對上面問題進行擴充套件:

解決 f(x) = 0 的問題,我們用了一階泰勒展開:

f(x) = f(x0) + f'(x0)*(x-x0) + o( (x-x0)^2 )

去掉末位高階展開項,代入x = x0+Δx,得到:

f(x) = f(x0+Δx) = f(x0) + f(x0) Δx

那麼 要解決 f′(x) = 0 的問題,我們就需要二階泰勒展開:

f(x) = f(x0) + f'(x0)*(x-x0) + 0.5*f''
(x0)*(x-x0)^2 + o( (x-x0)^3 )

去掉末位高階展開項,代入x = x0+Δx,得到:

f(x) = f(x0+Δx) = f(x0) + f(x0)Δx + 0.5 * f′′(x0) (Δx)^2

求導計算:對Δx求導,所以得到:

0 = f′(x0) +  f′′(x0) (Δx)
==>
0 = f′(x0) +  f′′(x0) (x−x0)

整理:

f′(x0) + f′′(x0)(x−x0) = 0
=>
x - x0 = − f′(x0) / f′′(x0)
=>
x = x0 − f′(x0) / f′′(x0)   
=>  
進一步得到:

Xn+1 = Xn - f'(Xn) / f'
'(Xn)

三. 牛頓法 與 Hessian矩陣的關係

以上只針對單變數進行討論,如果對多變數就要引入雅克比矩陣和海森矩陣

簡單介紹一下二者,雅克比矩陣為函式對各自變數的一階導數,海森矩陣為函式對自變數的二次微分。形式分別如下:

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述