牛頓法求解無約束最優化問題

 記泰勒公式

\small f\left ( x \right )=\frac{f\left ( a \right )}{0!}+\frac{f^{1}\left ( a \right )}{1!}\cdot \left ( x-a \right )+\frac {f^{2}\left ( a \right )}{2!}\cdot \left ( x-a \right )^{2}+...+\frac{f^{n}\left( a\right )}{n!}\cdot \left(x-a \right )^n+R\left(n \right )

捨去高階項

\small f\left ( x \right )\approx \frac{f\left ( a \right )}{0!}+\frac{f^{1}\left ( a \right )}{1!}\cdot \left ( x-a \right )+\frac {f^{2}\left ( a \right )}{2!}\cdot \left ( x-a \right )^{2}

\small f\left(x\right)在導數爲0時候取得極值,令\small f^{1}\left(x \right ) = 0,以上式子可以變形爲

\small f^{1}\left ( a \right )+f^{2}\left ( a \right )\cdot \left ( x-a \right ) = 0

繼續整理可以得到

\small x=\frac{-f^{1}\left(a \right )+f^{2}\left(a \right )\cdot a}{f^{2}\left(a \right )}

通過觀察上式,我們可以發現,當給出一個初始點a的時候,我們可以通過泰勒公式用a點的一階導數與二階導數還有a的值近似的表達出使\small f\left(x \right )=0的點x。但是我們的這個近似是通過捨去泰勒公式中的高階項實現的,因此我們要保證高階項的捨棄對x的求值影響較小,也就是說初始點a的取值不能離x點太遠,否則會出現較大的誤差,從而導致最終的求值無法收斂。對於以上算法還可以擴展到多變量函數中,推導過程如下:

\small f\left(X \right )\approx f\left(a \right )+f^{1}\left(a \right )\cdot \left(X-a \right )+\frac{1}{2}\cdot \left(X-a \right )^{T}\cdot f^{2}\left( a \right ) \cdot \left(X-a \right )

求導後得到等式

\small f^{2}\left(a \right )\cdot \left(X-a\right)+f^{1}\left(a \right ) = 0

\small f^{2}(a)是正定矩陣,因此可逆,進而求得

\small X=a-inv\left(f^{2}\left(a) \right )\cdot f^{1}\left(a \right )

通過觀察算法的推到過程我們能看出來,實際上牛頓法就是使用一條與初始點a相關的曲線去近似的代替原來的曲線,然後求取新曲線的一階導數爲零的點,因爲新曲線是對舊曲線的一個近似,因此新曲線的0一階導數點就可以近似的認爲是原曲線的0一階導數點,因此就得到了原曲線的極值。但是如上面一段所講的那樣,這條曲線的近似依賴於a點的選取,當a點選的不恰當時候,捨去的高階項的影響就無法被忽略,因此新曲線將會與原曲線有較大的差異,這樣求出的新曲線的0一階導數點也就跟原曲線的一階導數點不再相近,這樣用此牛頓法就無法求出原曲線上的極值點了。

最後總結一句話,牛頓法雖然收斂速度快,但是對a點的選取有比較苛刻的要求,因此要使用牛頓法,必須對問題做一些預處理,比如先用最速下降法求出一個與極值點相近的點,然後再從這個相近的點開始用牛頓法最終求出極值點。

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