Newton's Method 牛顿法求极值.
UTF8gbsn
一元求根
首先從最簡單的牛頓法應用開始.牛頓法最簡單的一個應用是去求一個函數的根.其實原理很簡單.就是一個迭代.當然這些結論也是凸函數才會成立.
xn+1=xn?f(xn)f′(xn)x_{n+1}=x_n-\frac{f(x_n)}{f^{'}(x_n)}xn+1?=xn??f′(xn?)f(xn?)?
比如我們來求y=x2y=x^2y=x2的根.如果出發點為x=2.0x=2.0x=2.0.那么其表現在函數圖象上為.
一元求極值
那么我們怎么來求極值?怎么用牛頓的方法來求極值?其實很簡單.極值存在的點,就是函數二次導為0的點.也就是說,我們可以把求極值的問題回歸到求根的問題.比如對于函數
 y=1+(x?1)2+(x+1)4y=1+(x-1)^2+(x+1)^4y=1+(x?1)2+(x+1)4
畫出它的函數圖象
請看它的導數的函數圖象 y=2(x?1)+4(x+1)3y=2(x-1)+4(x+1)^3y=2(x?1)+4(x+1)3
 由此可見原函數的極值出現在,導數的根,也就是導數為0的地方.所以我們回到求根的牛頓法得出下面的迭代函數.
xn+1=xn?f′(xn)f′′(xn)x_{n+1}=x_{n}-\frac{f^{'}(x_n)}{f^{''}(x_n)}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)\Delta x_{\mathrm{nt}}:=-\nabla^{2} f(x)^{-1} \nabla f(x) ; \quad \lambda^{2}:=\nabla f(x)^{T} \nabla^{2} f(x)^{-1} \nabla f(x)Δxnt?:=??2f(x)?1?f(x);λ2:=?f(x)T?2f(x)?1?f(x)
-  Stopping criterion. quit if λ2/2??\lambda^2/2\leqslant \epsilonλ2/2?? 
-  Line search. Choose step size t by backtracking line search. 
-  Update x:=x+tΔxntx:=x+t \Delta x_{\mathrm{nt}}x:=x+tΔxnt? 
首先,我們需要分析的前提是函數f(x)f(x)f(x)是一個凸函數.因為如果不是凸函數.那么分析的結論將不會成立.所以我們下面的討論都限制在f(x)f(x)f(x)是凸函數的基礎上.
牛頓法
如何來理解多元函數的牛頓法?
 其實有幾種理解的思路.而我們這里主要采用其中一種.也就是二階泰勒展開.
f^(x+v)=f(x)+?f(x)Tv+12vT?2f(x)v\widehat{f}(x+v)=f(x)+\nabla f(x)^{T} v+\frac{1}{2} v^{T} \nabla^{2} f(x) vf?(x+v)=f(x)+?f(x)Tv+21?vT?2f(x)v
值得注意的是符號?2f(x)\nabla^2f(x)?2f(x)是hessian矩陣. (?2f?x12?2f?x1?x2??2f?x1?xn?2f?x2?x1?2f?x22??2f?x2?xn?????2f?xn?x1?2f?xn?x2??2f?xn2)\left( \begin{array}{cccc} \frac{\partial^2 f}{\partial x_1^2} & \frac{\partial^2 f}{\partial x_1\partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_1\partial x_n} \\ \frac{\partial^2 f}{\partial x_2\partial x_1} & \frac{\partial^2 f}{\partial x_2^2} & \cdots & \frac{\partial^2 f}{\partial x_2\partial x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial^2 f}{\partial x_n\partial x_1} & \frac{\partial^2 f}{\partial x_n\partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_n^2} \end{array} \right)?????????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)f(x)f(x)是一個凸函數,那么?2f(x)\nabla^2 f(x)?2f(x)就是半正定的.既然這個函數是半正定的.那么
f^(x+v)=f(x)+?f(x)Tv+12vT?2f(x)v,v=??2f(x)?1?f(x)\widehat{f}(x+v)=f(x)+\nabla f(x)^{T} v+\frac{1}{2} v^{T} \nabla^{2} f(x) v, v = -\nabla^{2} f(x)^{-1} \nabla f(x)f?(x+v)=f(x)+?f(x)Tv+21?vT?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)\nabla f(x)^T (- \nabla^2f(x)^{-1}\nabla f(x))=-\nabla f(x)^T \nabla^2f(x)^{-1}\nabla f(x)?f(x)T(??2f(x)?1?f(x))=??f(x)T?2f(x)?1?f(x)
 12(??2f(x)?1?f(x))T?2f(x)(??2f(x)?1?f(x))=12(??Tf(x)(?2f(x)?1)T)?2f(x)(??2f(x)?1?f(x))\frac{1}{2} (- \nabla^2f(x)^{-1}\nabla f(x))^{T} \nabla^{2} f(x) (- \nabla^2f(x)^{-1}\nabla f(x))=\frac{1}{2} (- \nabla^T f(x)(\nabla^2f(x)^{-1})^{T}) \nabla^{2} f(x) (- \nabla^2f(x)^{-1}\nabla 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))
 =12?Tf(x)(?2f(x)?1)T?f(x)=12?Tf(x)?2f(x)?1?f(x)=\frac{1}{2}\nabla^Tf(x)(\nabla^2f(x)^{-1})^T\nabla f(x)=\frac{1}{2}\nabla^Tf(x)\nabla^2f(x)^{-1}\nabla f(x)=21??Tf(x)(?2f(x)?1)T?f(x)=21??Tf(x)?2f(x)?1?f(x)
 因為?2f(x)\nabla^2f(x)?2f(x)是一個實對稱矩陣,所以?2f(x)?1\nabla^2f(x)^{-1}?2f(x)?1也是一個實對稱矩陣.于是
 f^(v)=f(x)?12?Tf(x)?2f(x)?1?f(x)\widehat{f}(v) = f(x)-\frac{1}{2}\nabla^Tf(x)\nabla^2f(x)^{-1}\nabla f(x)f?(v)=f(x)?21??Tf(x)?2f(x)?1?f(x)
 因為?2f(x)\nabla^2f(x)?2f(x)是半正定的,所以?Tf(x)?2f(x)?1?f(x)?0\nabla^Tf(x)\nabla^2f(x)^{-1}\nabla f(x)\geqslant 0?Tf(x)?2f(x)?1?f(x)?0,顧而f(x)f(x)f(x)減小.如此以來可以證明牛頓法是可以求得極值的.當然我們略去了很多細節.只是粗略的闡述了牛頓法成立的邏輯.還有更多的一些邏輯.我希望留在綜合比較,梯度下降,共軛梯度下降和牛頓法這三個算法上面來闡述.
總結
以上是生活随笔為你收集整理的Newton's Method 牛顿法求极值.的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: CF 221 C Circling Ro
- 下一篇: 【软考】系统集成项目管理工程师(一)信息
