Newton's Method 牛頓法求極值.

UTF8gbsn

一元求根

首先從最簡單的牛頓法應用開始.牛頓法最簡單的一個應用是去求一個函數的根.其實原理很簡單.就是一個迭代.當然這些結論也是凸函數纔會成立.

xn+1=xnf(xn)f(xn)x_{n+1}=x_n-\frac{f(x_n)}{f^{'}(x_n)}

比如我們來求y=x2y=x^2的根.如果出發點爲x=2.0x=2.0.那麼其表現在函數圖象上爲.

在這裏插入圖片描述

一元求極值

那麼我們怎麼來求極值?怎麼用牛頓的方法來求極值?其實很簡單.極值存在的點,就是函數二次導爲0的點.也就是說,我們可以把求極值的問題迴歸到求根的問題.比如對於函數
y=1+(x1)2+(x+1)4y=1+(x-1)^2+(x+1)^4

畫出它的函數圖象

在這裏插入圖片描述

請看它的導數的函數圖象 y=2(x1)+4(x+1)3y=2(x-1)+4(x+1)^3

在這裏插入圖片描述
由此可見原函數的極值出現在,導數的根,也就是導數爲0的地方.所以我們回到求根的牛頓法得出下面的迭代函數.

xn+1=xnf(xn)f(xn)x_{n+1}=x_{n}-\frac{f^{'}(x_n)}{f^{''}(x_n)} 畫出迭代的圖象可得

在這裏插入圖片描述

這是一個一元函數的解法.下面我們來看看針對多元函數又怎麼利用牛頓法來求極值呢?

多元函數求極值

我們先描述一下多元函數的牛頓法極值的算法步驟.

  • Compute the Newton step and decrement.
    Δxnt:=2f(x)1f(x);λ2:=f(x)T2f(x)1f(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)

  • Stopping criterion. quit if λ2/2ϵ\lambda^2/2\leqslant \epsilon

  • Line search. Choose step size t by backtracking line search.

  • Update x:=x+tΔxntx:=x+t \Delta x_{\mathrm{nt}}

首先,我們需要分析的前提是函數f(x)f(x)是一個凸函數.因爲如果不是凸函數.那麼分析的結論將不會成立.所以我們下面的討論都限制在f(x)f(x)是凸函數的基礎上.

牛頓法

如何來理解多元函數的牛頓法?
其實有幾種理解的思路.而我們這裏主要採用其中一種.也就是二階泰勒展開.

f^(x+v)=f(x)+f(x)Tv+12vT2f(x)v\widehat{f}(x+v)=f(x)+\nabla f(x)^{T} v+\frac{1}{2} v^{T} \nabla^{2} f(x) v

值得注意的是符號2f(x)\nabla^2f(x)是hessian矩陣. (2fx122fx1x22fx1xn2fx2x12fx222fx2xn2fxnx12fxnx22fxn2)\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)

如果函數f(x)f(x)是一個凸函數,那麼2f(x)\nabla^2 f(x)就是半正定的.既然這個函數是半正定的.那麼

f^(x+v)=f(x)+f(x)Tv+12vT2f(x)v,v=2f(x)1f(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)T(2f(x)1f(x))=f(x)T2f(x)1f(x)\nabla f(x)^T (- \nabla^2f(x)^{-1}\nabla f(x))=-\nabla f(x)^T \nabla^2f(x)^{-1}\nabla f(x)
12(2f(x)1f(x))T2f(x)(2f(x)1f(x))=12(Tf(x)(2f(x)1)T)2f(x)(2f(x)1f(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))
=12Tf(x)(2f(x)1)Tf(x)=12Tf(x)2f(x)1f(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)
因爲2f(x)\nabla^2f(x)是一個實對稱矩陣,所以2f(x)1\nabla^2f(x)^{-1}也是一個實對稱矩陣.於是
f^(v)=f(x)12Tf(x)2f(x)1f(x)\widehat{f}(v) = f(x)-\frac{1}{2}\nabla^Tf(x)\nabla^2f(x)^{-1}\nabla f(x)
因爲2f(x)\nabla^2f(x)是半正定的,所以Tf(x)2f(x)1f(x)0\nabla^Tf(x)\nabla^2f(x)^{-1}\nabla f(x)\geqslant 0,顧而f(x)f(x)減小.如此以來可以證明牛頓法是可以求得極值的.當然我們略去了很多細節.只是粗略的闡述了牛頓法成立的邏輯.還有更多的一些邏輯.我希望留在綜合比較,梯度下降,共軛梯度下降和牛頓法這三個算法上面來闡述.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章