机器学习中的数学——牛顿迭代法(Newton‘s Method)
分類目錄:《機器學習中的數(shù)學》總目錄
相關文章:
· 梯度下降法(Gradient Descent)
· 隨機梯度下降(Stochastic Gradient Descent, SGD)
· 牛頓迭代法(Newton‘s Method)
· 擬牛頓法(Quasi-Newton Methods)
· Momentum(Gradient Descent with Momentum, GDM)
· Nesterov Momentum
· AdaGrad
· RMSProp
· Adam(Adaptive Moments)
· 共軛梯度法(Conjugate Gradient)
· 遺傳算法(Genetic Algorithm)
· 粒子群算法
\qquad· 基礎知識
\qquad· 帶慣性權重的粒子群算法
\qquad· 改進的粒子群算法
· 模擬退火算法(Simulated Annealing,SA)
牛頓迭代法(Newton’s Method)又稱為牛頓-拉夫遜(拉弗森)方法(Newton-Raphson Method),它是牛頓在17世紀提出的一種在實數(shù)域和復數(shù)域上近似求解方程的方法。與一階方法相比,二階方法使用二階導數(shù)改進了優(yōu)化,其中最廣泛使用的二階方法是牛頓法。
考慮無約束最優(yōu)化問題:
min?θ∈Rnf(θ)\min_{\theta\in R^n}f(\theta)θ∈Rnmin?f(θ)
其中θ?\theta^*θ?為目標函數(shù)的極小點,假設f(θ)f(\theta)f(θ)具有二階連續(xù)偏導數(shù),若第kkk次迭代值為θ(k)\theta^{(k)}θ(k),則可將f(θ)f(\theta)f(θ)在θ(k)\theta^{(k)}θ(k)附近進行二階泰勒展開:
f(θ)=f(θ(k))+gkT(θ?θ(k))+12(θ?θ(k))TH(θ(k))(θ?θ(k))f(\theta)=f(\theta^{(k)})+g_k^T(\theta-\theta^{(k)})+\frac{1}{2}(\theta-\theta^{(k)})^TH(\theta^{(k)})(\theta-\theta^{(k)})f(θ)=f(θ(k))+gkT?(θ?θ(k))+21?(θ?θ(k))TH(θ(k))(θ?θ(k))
這里,gk=g(θ(k))=?f(θ(k))g_k=g(\theta^{(k)})=\nabla f(\theta^{(k)})gk?=g(θ(k))=?f(θ(k))是f(θ)f(\theta)f(θ)的梯度向量在點θ(k)\theta^{(k)}θ(k)的值,H(θ(k))H(\theta^{(k)})H(θ(k))是f(θ)f(\theta)f(θ)的Hessian矩陣:
H(θ)=[?2f?θi?θj]m×nH(\theta)=[\frac{\partial^2f}{\partial \theta_i\partial \theta_j}]_{m\times n}H(θ)=[?θi??θj??2f?]m×n?
在點θ(k)\theta^{(k)}θ(k)的值。函數(shù)f(θ)f(\theta)f(θ)有極值的必要條件是在極值點處一階導數(shù)為0,即梯度向量為0,特別是當H(θ)H(\theta)H(θ)是正定矩陣時,函數(shù)f(θ)f(\theta)f(θ)的極值為極小值。牛頓法利用極小點的必要條件:
?f(θ)=0\nabla f(\theta)=0?f(θ)=0
每次迭代中從點θ(k)\theta^{(k)}θ(k)開始,求目標函數(shù)的極小點,作為第k+1k+1k+1次迭代值θ(k+1)\theta^{(k+1)}θ(k+1)。具體地,假設θ(k+1)\theta^{(k+1)}θ(k+1)滿足:
?f(θ(k+1))=0\nabla f(\theta^{(k+1)})=0?f(θ(k+1))=0
則有:
?f(θ)=gk+Hk(θ?θ(k))\nabla f(\theta)=g_k+H_k(\theta-\theta^{(k)})?f(θ)=gk?+Hk?(θ?θ(k))
其中Hk=H(θ(k))H_k=H(\theta^{(k)})Hk?=H(θ(k))。這樣,我們可以得:
gk+Hk(θ(k+1)?θ(k))=0g_k+H_k(\theta^{(k+1)}-\theta^{(k)})=0gk?+Hk?(θ(k+1)?θ(k))=0
則:
θ(k+1)=θ(k)?Hk?1gk=θ(k)+pk\theta^{(k+1)}=\theta^{(k)}-H_k^{-1}g_k=\theta^{(k)}+p_kθ(k+1)=θ(k)?Hk?1?gk?=θ(k)+pk?
這就是牛頓迭代法。
牛頓迭代法
輸入:目標函數(shù)f(θ)f(\theta)f(θ);Hessian矩陣H(θ)H(\theta)H(θ);精度要求?\epsilon?
輸出:f(θ)f(\theta)f(θ)的極小值點θ?\theta^*θ?
(1) 取初始點θ(0)\theta^{(0)}θ(0)并置k=0k=0k=0
(2) 計算gk=g(θ(0))=?f(θ(0))g_k=g(\theta^{(0)})=\nabla f(\theta^{(0)})gk?=g(θ(0))=?f(θ(0))
(3) while∣∣gk∣∣>?\quad||g_k||>\epsilon∣∣gk?∣∣>?
(4) Hk=H(θ(k))\quad H_k=H(\theta^{(k)})Hk?=H(θ(k))
(5) θ(k+1)=θ(k)?Hk?1gk\quad \theta^{(k+1)}=\theta^{(k)}-H_k^{-1}g_kθ(k+1)=θ(k)?Hk?1?gk?
(6) gk=g(θ(0))=?f(θ(0))\quad g_k=g(\theta^{(0)})=\nabla f(\theta^{(0)})gk?=g(θ(0))=?f(θ(0))
(7) k=k+1\quad k=k+1k=k+1
(8) returnθ?=θ(k)\quad \theta^*=\theta^{(k)}θ?=θ(k)
迭代過程可參考下圖:
在《優(yōu)化技術:深度學習優(yōu)化的挑戰(zhàn)-[高原、鞍點和其他平坦區(qū)域]》我們討論了牛頓法只適用于Hessian矩陣是正定的情況。在深度學習中,目標函數(shù)的表面通常非凸(有很多特征),如鞍點。因此使用牛頓法是有問題的。如果Hessian矩陣的特征值并不都是正的,例如,靠近鞍點處,牛頓法實際上會導致更新朝錯誤的方向移動。這種情況可以通過正則化Hessian矩陣來避免。常用的正則化策略包括在Hessian矩陣對角線上增加常數(shù)α\alphaα。正則化更新變?yōu)?#xff1a;
θ?=θ0?[H(f(θ0))+αI]?1?θf(θ0)\theta^*=\theta_0-[H(f(\theta_0))+\alpha I]^{-1}\nabla_\theta f(\theta_0)θ?=θ0??[H(f(θ0?))+αI]?1?θ?f(θ0?)
這個正則化策略用于牛頓法的近似,例如Levenberg-Marquardt算,只要Hessian矩陣的負特征值仍然相對接近零,效果就會很好。在曲率方向更極端的情況下,α\alphaα的值必須足夠大,以抵消負特征值。然而,如果α\alphaα持續(xù)增加,Hessian矩陣會變得由對角矩陣αI\alpha IαI主導,通過牛頓法所選擇的方向會收斂到普通梯度除以α\alphaα。當很強的負曲率存在時,α可能需要特別大,以至于牛頓法比選擇合適學習率的梯度下降的步長更小。
除了目標函數(shù)的某些特征帶來的挑戰(zhàn),如鞍點,牛頓法用于訓練大型神經(jīng)網(wǎng)絡還受限于其顯著的計算負擔。Hessian矩陣中元素數(shù)目是參數(shù)數(shù)量的平方,因此,如果參數(shù)數(shù)目為kkk(甚至是在非常小的神經(jīng)網(wǎng)絡中kkk也可能是百萬級別),牛頓法需要計算k×kk\times kk×k矩陣的逆,計算復雜度為O(k3)O(k^3)O(k3)。另外,由于參數(shù)將每次更新都會改變,每次訓練迭代都需要計算Hessian矩陣的逆。其結果是,只有參數(shù)很少的網(wǎng)絡才能在實際中用牛頓法訓練。在本節(jié)的剩余部分,我們將討論一些試圖保持牛頓法優(yōu)點,同時避免計算障礙的替代算法。
總結
以上是生活随笔為你收集整理的机器学习中的数学——牛顿迭代法(Newton‘s Method)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言——指针(进阶版)
- 下一篇: 【经典智力题】1024! 末尾有多少个0