牛頓法 與 Hessian矩陣
阿新 • • 發佈:2018-12-25
牛頓法 主要有兩方面的應用:
求方程的根;
求解最優化方法;
一. 為什麼要用牛頓法求方程的根?
假設 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矩陣的關係
以上只針對單變數進行討論,如果對多變數就要引入雅克比矩陣和海森矩陣
簡單介紹一下二者,雅克比矩陣為函式對各自變數的一階導數,海森矩陣為函式對自變數的二次微分。形式分別如下: