日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习中的数学——牛顿迭代法(Newton‘s Method)

發(fā)布時間:2024/1/1 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习中的数学——牛顿迭代法(Newton‘s Method) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

分類目錄:《機(jī)器學(xué)習(xí)中的數(shù)學(xué)》總目錄
相關(guān)文章:
· 梯度下降法(Gradient Descent)
· 隨機(jī)梯度下降(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· 基礎(chǔ)知識
\qquad· 帶慣性權(quán)重的粒子群算法
\qquad· 改進(jìn)的粒子群算法
· 模擬退火算法(Simulated Annealing,SA)


牛頓迭代法(Newton’s Method)又稱為牛頓-拉夫遜(拉弗森)方法(Newton-Raphson Method),它是牛頓在17世紀(jì)提出的一種在實(shí)數(shù)域和復(fù)數(shù)域上近似求解方程的方法。與一階方法相比,二階方法使用二階導(dǎo)數(shù)改進(jìn)了優(yōu)化,其中最廣泛使用的二階方法是牛頓法。

考慮無約束最優(yōu)化問題:
min?θ∈Rnf(θ)\min_{\theta\in R^n}f(\theta)θRnmin?f(θ)

其中θ?\theta^*θ?為目標(biāo)函數(shù)的極小點(diǎn),假設(shè)f(θ)f(\theta)f(θ)具有二階連續(xù)偏導(dǎo)數(shù),若第kkk次迭代值為θ(k)\theta^{(k)}θ(k),則可將f(θ)f(\theta)f(θ)θ(k)\theta^{(k)}θ(k)附近進(jìn)行二階泰勒展開:
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(θ)的梯度向量在點(diǎn)θ(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?

在點(diǎn)θ(k)\theta^{(k)}θ(k)的值。函數(shù)f(θ)f(\theta)f(θ)有極值的必要條件是在極值點(diǎn)處一階導(dǎo)數(shù)為0,即梯度向量為0,特別是當(dāng)H(θ)H(\theta)H(θ)是正定矩陣時,函數(shù)f(θ)f(\theta)f(θ)的極值為極小值。牛頓法利用極小點(diǎn)的必要條件:
?f(θ)=0\nabla f(\theta)=0?f(θ)=0

每次迭代中從點(diǎn)θ(k)\theta^{(k)}θ(k)開始,求目標(biāo)函數(shù)的極小點(diǎn),作為第k+1k+1k+1次迭代值θ(k+1)\theta^{(k+1)}θ(k+1)。具體地,假設(shè)θ(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?

這就是牛頓迭代法。

牛頓迭代法
輸入:目標(biāo)函數(shù)f(θ)f(\theta)f(θ);Hessian矩陣H(θ)H(\theta)H(θ);精度要求?\epsilon?
輸出:f(θ)f(\theta)f(θ)的極小值點(diǎn)θ?\theta^*θ?
(1) 取初始點(diǎn)θ(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||>\epsilongk?>?
(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)化技術(shù):深度學(xué)習(xí)優(yōu)化的挑戰(zhàn)-[高原、鞍點(diǎn)和其他平坦區(qū)域]》我們討論了牛頓法只適用于Hessian矩陣是正定的情況。在深度學(xué)習(xí)中,目標(biāo)函數(shù)的表面通常非凸(有很多特征),如鞍點(diǎn)。因此使用牛頓法是有問題的。如果Hessian矩陣的特征值并不都是正的,例如,靠近鞍點(diǎn)處,牛頓法實(shí)際上會導(dǎo)致更新朝錯誤的方向移動。這種情況可以通過正則化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矩陣的負(fù)特征值仍然相對接近零,效果就會很好。在曲率方向更極端的情況下,α\alphaα的值必須足夠大,以抵消負(fù)特征值。然而,如果α\alphaα持續(xù)增加,Hessian矩陣會變得由對角矩陣αI\alpha IαI主導(dǎo),通過牛頓法所選擇的方向會收斂到普通梯度除以α\alphaα。當(dāng)很強(qiáng)的負(fù)曲率存在時,α可能需要特別大,以至于牛頓法比選擇合適學(xué)習(xí)率的梯度下降的步長更小。

除了目標(biāo)函數(shù)的某些特征帶來的挑戰(zhàn),如鞍點(diǎn),牛頓法用于訓(xùn)練大型神經(jīng)網(wǎng)絡(luò)還受限于其顯著的計算負(fù)擔(dān)。Hessian矩陣中元素數(shù)目是參數(shù)數(shù)量的平方,因此,如果參數(shù)數(shù)目為kkk(甚至是在非常小的神經(jīng)網(wǎng)絡(luò)中kkk也可能是百萬級別),牛頓法需要計算k×kk\times kk×k矩陣的逆,計算復(fù)雜度為O(k3)O(k^3)O(k3)。另外,由于參數(shù)將每次更新都會改變,每次訓(xùn)練迭代都需要計算Hessian矩陣的逆。其結(jié)果是,只有參數(shù)很少的網(wǎng)絡(luò)才能在實(shí)際中用牛頓法訓(xùn)練。在本節(jié)的剩余部分,我們將討論一些試圖保持牛頓法優(yōu)點(diǎn),同時避免計算障礙的替代算法。

總結(jié)

以上是生活随笔為你收集整理的机器学习中的数学——牛顿迭代法(Newton‘s Method)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。