UTF8gbsn
一元求根
首先從最簡單的牛頓法應用開始.牛頓法最簡單的一個應用是去求一個函數的根.其實原理很簡單.就是一個迭代.當然這些結論也是凸函數纔會成立.
xn+1=xn−f′(xn)f(xn)
比如我們來求y=x2的根.如果出發點爲x=2.0.那麼其表現在函數圖象上爲.
一元求極值
那麼我們怎麼來求極值?怎麼用牛頓的方法來求極值?其實很簡單.極值存在的點,就是函數二次導爲0的點.也就是說,我們可以把求極值的問題迴歸到求根的問題.比如對於函數
y=1+(x−1)2+(x+1)4
畫出它的函數圖象
請看它的導數的函數圖象 y=2(x−1)+4(x+1)3
由此可見原函數的極值出現在,導數的根,也就是導數爲0的地方.所以我們回到求根的牛頓法得出下面的迭代函數.
xn+1=xn−f′′(xn)f′(xn) 畫出迭代的圖象可得
這是一個一元函數的解法.下面我們來看看針對多元函數又怎麼利用牛頓法來求極值呢?
多元函數求極值
我們先描述一下多元函數的牛頓法極值的算法步驟.
-
Compute the Newton step and decrement.
Δxnt:=−∇2f(x)−1∇f(x);λ2:=∇f(x)T∇2f(x)−1∇f(x)
-
Stopping criterion. quit if λ2/2⩽ϵ
-
Line search. Choose step size t by backtracking line search.
-
Update x:=x+tΔxnt
首先,我們需要分析的前提是函數f(x)是一個凸函數.因爲如果不是凸函數.那麼分析的結論將不會成立.所以我們下面的討論都限制在f(x)是凸函數的基礎上.
牛頓法
如何來理解多元函數的牛頓法?
其實有幾種理解的思路.而我們這裏主要採用其中一種.也就是二階泰勒展開.
f(x+v)=f(x)+∇f(x)Tv+21vT∇2f(x)v
值得注意的是符號∇2f(x)是hessian矩陣. ⎝⎜⎜⎜⎜⎜⎛∂x12∂2f∂x2∂x1∂2f⋮∂xn∂x1∂2f∂x1∂x2∂2f∂x22∂2f⋮∂xn∂x2∂2f⋯⋯⋱⋯∂x1∂xn∂2f∂x2∂xn∂2f⋮∂xn2∂2f⎠⎟⎟⎟⎟⎟⎞
如果函數f(x)是一個凸函數,那麼∇2f(x)就是半正定的.既然這個函數是半正定的.那麼
f(x+v)=f(x)+∇f(x)Tv+21vT∇2f(x)v,v=−∇2f(x)−1∇f(x)
就會減小.因爲
∇f(x)T(−∇2f(x)−1∇f(x))=−∇f(x)T∇2f(x)−1∇f(x)
21(−∇2f(x)−1∇f(x))T∇2f(x)(−∇2f(x)−1∇f(x))=21(−∇Tf(x)(∇2f(x)−1)T)∇2f(x)(−∇2f(x)−1∇f(x))
=21∇Tf(x)(∇2f(x)−1)T∇f(x)=21∇Tf(x)∇2f(x)−1∇f(x)
因爲∇2f(x)是一個實對稱矩陣,所以∇2f(x)−1也是一個實對稱矩陣.於是
f(v)=f(x)−21∇Tf(x)∇2f(x)−1∇f(x)
因爲∇2f(x)是半正定的,所以∇Tf(x)∇2f(x)−1∇f(x)⩾0,顧而f(x)減小.如此以來可以證明牛頓法是可以求得極值的.當然我們略去了很多細節.只是粗略的闡述了牛頓法成立的邏輯.還有更多的一些邏輯.我希望留在綜合比較,梯度下降,共軛梯度下降和牛頓法這三個算法上面來闡述.