牛頓法和牛頓迭代法


牛頓法,大致的思想是用泰勒公式的前幾項來代替原來的函數,然后對函數進行求解和優化。牛頓法應用於最優化的牛頓法稍微有些差別。

牛頓法

牛頓法用來迭代的求解一個方程的解,原理如下:
對於一個函數f(x),它的泰勒級數展開式是這樣的

\[f(x) = f(x_0) + f'(x_0)(x-x_0) + \frac{1}{2} f''(x_0)(x-x_0)^2 + ...+\frac{1}{n!}f^{n}(x_0)(x-x_0)^n \]

當使用牛頓法來求一個方程解的時候,它使用泰勒級數前兩項來代替這個函數,即用\(\phi(x)代替f(x)\),其中:

\[\phi(x) = f(x_0) + f'(x_0)(x-x_0) \]

\(\phi(x) = 0\),則 \(x = x_0 - \frac{f(x_0)}{ f'(x_0)}\)
所以,牛頓法的迭代公式是\(x_{n+1} = x_n - \frac{f(x_n)}{ f'(x_n)}\)

牛頓法求解n的平方根

求解n的平方根,其實是求方程\(x^2 -n = 0\)的解
利用上面的公式可以得到:\(x_{i+1} = x_i - \frac{x_i^2 - n}{2 x_i} = (x_i + \frac{n}{x_i} ) /2\)
編程的時候核心的代碼是:x = (x + n/x)/2

應用於最優化的牛頓法

應用於最優化的牛頓法是以迭代的方式來求解一個函數的最優解,常用的優化方法還有梯度下降法。
取泰勒展開式的二次項,即用\(\phi(x)\)來代替\(f(x)\)

\[\phi(x) = f(x_0) + f'(x_0)(x-x_0) + \frac{1}{2} f''(x_0)(x-x_0)^2 \]

最優點的選擇是\(\phi'(x)=0\)的點,對上式求導

\[\phi'(x) =f'(x_0) + f''(x_0)(x-x_0) \]

\(\phi'(x) = 0\),則\(x = x_0 - \frac{f'(x_0)}{f''(x_0)}\)
所以,最優化的牛頓迭代公式是

\[x_{n+1} = x_n - \frac{f'(x_n)}{f''(x_n)} \]

高維下的牛頓優化方法

在高維下

\[\phi(x) = f(x_0) + \nabla f(x_0)^T (x-x_0) + \frac{1}{2} (x-x_0)^T \nabla^2 f(x_0)(x-x_0) \]

\(\nabla \phi(x)\),並令它等於0,則公式變為了

\[\nabla f(x_0) + \nabla^2 f(x_0)(x-x_0) =0 \]

\[x = x_0 - {\nabla ^2 f(x_0) }^{-1} \nabla f(x_0) \]

所以,迭代公式變為

\[x_{n+1} = x_{n} - {\nabla ^2 f(x_n) }^{-1} \nabla f(x_n) \]

其中:
\(x_{n+1} ,x_n\)都是N*1維的矢量。
\(\nabla^2 f(x_n)\)是Hessien矩陣,\({\nabla ^2 f(x_n) }^{-1}\)是Hessien矩陣的逆矩陣,它們都是是N*N維的。
\(\nabla f(x_n)\)\(f(x)\)的導數,是N*1維的。

和梯度下降法相比,在使用牛頓迭代法進行優化的時候,需要求Hessien矩陣的逆矩陣,這個開銷是很大的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM