A-03 牛頓法和擬牛頓法

[TOC] 更新、更全的《機器學習》的更新網站,更有python、go、數據結構與算法、爬蟲、人工智能教學等着你:<a target="_blank" href="https://www.cnblogs.com/nickchen121/p/11686958.html">http://www.javashuo.com/article/p-vozphyqp-cm.html</a>html

牛頓法和擬牛頓法

牛頓法(Newton method)和擬牛頓法(quasi-Newton method)和梯度降低法同樣也是求解最優化問題的經常使用方法,可是他們的收斂速度比梯度降低法快。牛頓法是迭代算法,每一步都須要求目標函數的海森矩陣的逆矩陣,計算複雜;擬牛頓法經過正定矩陣近似海森矩陣的逆矩陣,簡化這個計算過程。python

1、牛頓法詳解

1.1 無約束最優化問題

對於一個約束問題 $$ \underbrace{min}_{x\in{R^n}}f(x) $$ 其中$x^*$爲目標函數的極小點。算法

1.2 牛頓法迭代公式

假設$f(x)$具備二階連續偏導數,若是第$k$次迭代值爲$x^{(k)}$,則能夠把$f(x)$在$x^{(k)}$附近使用二階泰勒展開 $$ f(x)=f(x^{(k)})+g_k^T(x-x^{(k)})+\frac{1}{2}(x-x^{(k)})^TH(x^{(k)})(x-x^{(k)}) $$ 其中$g_k=g(x^{(k)})=\nabla{f(x^{(k)})}$是$f(x)$的梯度向量在點$x^{(k)}$的值,$H(x^{(k)})$是$f(x)$的海森矩陣 $$ H(x)=[\frac{\partial^2f}{\partial{x_i}\partial{x_j}}]_{m*n} $$ 在點$x^{(k)}$的值。函數$f(x)$有極值的必要條件是在極值點處一階導數爲0,即梯度向量爲0。特別是當$H(x^{(k)})$是正定矩陣的時候,函數$f(x)$的極值爲極小值。 牛頓法利用極小點的必要條件 $$ \nabla{f(x)}=0 $$ 每次迭代中從點$x^{(k)}$開始,求目標函數的極小點,做爲第$k+1$次迭代值$x^{(k+1)}$,即假設$x^{(k+1)}$知足 $$ \nabla{f(x^{(k+1)}}=0 $$ 經過泰勒二階展開式便可得 $$ \nabla{f(x)}=g_k+H_k(x-x^{(k)}) $$ 其中$H_k=H(x^{(k)})$,由此$\nabla{f(x^{(k+1)}}=0$變成 $$ g_k+H_k(x^{(k+1)}-x^{(k)}) = 0 $$ 所以 $$ x^{(k+1)}=x^{(k)}-H_k^{-1}g_k $$ 或 $$ x^{(k+1)}=x^{(k)}+p_k $$ 其中 $$ \begin{align} & x^{(k+1)}=x^{(k)}-H_k^{-1}g_k=x^{(k)}+p_k \ & -H_k^{-1}g_k=p_k \ & H_kp_k=-g_k \end{align} $$ 使用$x^{(k+1)}=x^{(k)}-H_k^{-1}g_k$做爲迭代公式的算法就是牛頓法。數據結構

1.3 牛頓法和梯度降低法

從本質上去看,牛頓法是二階收斂,梯度降低是一階收斂,因此牛頓法更快。若是更通俗地說的話,好比你想找一條最短的路徑走到一個盆地的最底部,梯度降低法每次只從你當前所處位置選一個坡度最大的方向走一步,牛頓法在選擇方向時,不只會考慮坡度是否夠大,還會考慮你走了一步以後,坡度是否會變得更大。因此,能夠說牛頓法比梯度降低法看得更遠一點,能更快地走到最底部。機器學習

雖然牛頓法看起來比梯度降低法好不少,可是別忘記了牛頓法迭代過程當中須要計算海森矩陣的逆矩陣,若是數據量較大的話,牛頓法的計算開銷將遠遠大於梯度降低法。函數

2、牛頓法流程

2.1 輸入

目標函數$f(x)$,梯度$g(x)=\nabla{f(x)}$,海森矩陣$H(x)$,精度要求$\epsilon$學習

2.2 輸出

$f(x)$的極小點$x^*$優化

2.3 流程

  1. 取初始點$x^{(0)}$,而且讓$k=0$
  2. 計算$g_k=g(x^{(k)})$
  3. 若是$||g_k||\leq\epsilon$,中止計算,獲得近似解$x^*=x^{(k)}$
  4. 計算$H_k=H(x^{(k)})$,並求出$p_k$ $$ H_kp_k=-g_k $$
  5. 讓$x^{(k+1)}=x^{(k)}+p_k$
  6. 讓$k=k+1$,轉到第2步

在第4步求$p_k$的時候,$p_k=-H_k^{-1}g_k$,要求求海森矩陣的逆矩陣$H_k^{-1}$,計算會比較複雜。網站

3、擬牛頓法簡介

在牛頓法的迭代中,須要計算海森矩陣的逆矩陣$H^{-1}$,這個過程是比較複雜的,而擬牛頓法則使用了一個$n$階矩陣$G_k=G(x^{(k)})$近似替代$H_k^{-1}=H^{-1}(x^{(k)})$,此處很少贅述。人工智能

相關文章
相關標籤/搜索