0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

神經(jīng)網(wǎng)絡(luò)模型使用什么樣的優(yōu)化算法?

zhKF_jqr_AI ? 來(lái)源:未知 ? 作者:李倩 ? 2018-07-23 08:37 ? 次閱讀

編者按:DataScience+作者Anish Singh Walia概覽了常用的神經(jīng)網(wǎng)絡(luò)優(yōu)化算法。

你是否曾經(jīng)思考過(guò)該為自己的神經(jīng)網(wǎng)絡(luò)模型使用什么樣的優(yōu)化算法?我們應(yīng)該使用梯度下降還是隨機(jī)梯度下降還是Adam?

什么是優(yōu)化算法?

優(yōu)化算法幫助我們最小化(或最大化)一個(gè)目標(biāo)函數(shù)(誤差函數(shù)的另一個(gè)名字)E(x),該函數(shù)不過(guò)是一個(gè)取決于模型的內(nèi)部可學(xué)習(xí)參數(shù)的數(shù)學(xué)函數(shù),內(nèi)部可學(xué)習(xí)參數(shù)用來(lái)根據(jù)一組輸入(X)計(jì)算預(yù)測(cè)目標(biāo)值(Y)。例如,神經(jīng)網(wǎng)絡(luò)的權(quán)重(W)和偏置(b)被我們稱(chēng)為神經(jīng)網(wǎng)絡(luò)的內(nèi)部可學(xué)習(xí)參數(shù),這些參數(shù)用于計(jì)算輸出值,并在優(yōu)化方案的方向上學(xué)習(xí)和更新,即在網(wǎng)絡(luò)訓(xùn)練過(guò)程中最小化損失。

模型的內(nèi)部參數(shù)在訓(xùn)練網(wǎng)絡(luò)產(chǎn)生精確結(jié)果的效果和效率方面起著極為重要的作用,它們影響我們模型的學(xué)習(xí)過(guò)程和模型的輸出。這正是我們使用多種優(yōu)化策略和算法來(lái)更新、計(jì)算這些模型參數(shù)的恰當(dāng)?shù)淖顑?yōu)值的原因。

優(yōu)化算法的類(lèi)型

優(yōu)化算法可分為兩大類(lèi):

一階優(yōu)化算法(First Order Optimization Algorithms)

這些算法基于損失函數(shù)在參數(shù)上的梯度值,最小化或最大化損失函數(shù)E(x)。使用最廣泛的一階優(yōu)化算法是梯度下降。一階導(dǎo)數(shù)告訴我們?cè)谀骋惶囟c(diǎn)上函數(shù)是下降還是上升?;旧?,一階導(dǎo)數(shù)提供正切于誤差平面上一點(diǎn)的一條直線。

什么是函數(shù)的梯度?

梯度不過(guò)是一個(gè)向量,該向量是導(dǎo)數(shù)(dy/dx)的多元推廣。導(dǎo)數(shù)(dy/dx)則是y相對(duì)于x的即時(shí)變化率。主要的區(qū)別在于,梯度用于計(jì)算多元函數(shù)的導(dǎo)數(shù),通過(guò)偏導(dǎo)數(shù)計(jì)算。另一個(gè)主要的區(qū)別是,函數(shù)的梯度生成向量場(chǎng)。

梯度由雅可比矩陣表示——一個(gè)包含一階偏導(dǎo)數(shù)(梯度)的矩陣。

簡(jiǎn)單來(lái)說(shuō),導(dǎo)數(shù)定義在單元函數(shù)上,而梯度定義在多元函數(shù)上。我們就不討論更多關(guān)于微積分和物理的內(nèi)容了。

二階優(yōu)化算法(Second Order Optimization Algorithms)

二階方法使用二階導(dǎo)數(shù)最小化或最大化損失函數(shù)。二階方法使用海森矩陣——一個(gè)包含二階偏導(dǎo)數(shù)的矩陣。由于計(jì)算二階導(dǎo)數(shù)開(kāi)銷(xiāo)較大,二階方法不如一階方法常用。二階導(dǎo)數(shù)告訴我們一階導(dǎo)數(shù)是上升還是下降,這提示了函數(shù)的曲率。二階導(dǎo)數(shù)提供了一個(gè)擬合誤差平面曲率的二次平面。

盡管二階導(dǎo)數(shù)計(jì)算起來(lái)開(kāi)銷(xiāo)較大,但二階優(yōu)化算法的優(yōu)勢(shì)在于它沒(méi)有忽略誤差平面的曲率。另外,就每一步的表現(xiàn)而言,二階優(yōu)化算法要比一階優(yōu)化算法更好。

了解更多關(guān)于二階優(yōu)化算法的內(nèi)容:https://web.stanford.edu/class/msande311/lecture13.pdf

應(yīng)該使用哪類(lèi)優(yōu)化算法?

目前而言,一階優(yōu)化技術(shù)更容易計(jì)算,花費(fèi)時(shí)間更少,在大型數(shù)據(jù)集上收斂得相當(dāng)快。

僅當(dāng)二階導(dǎo)數(shù)已知時(shí),二階技術(shù)更快,否則這類(lèi)方法總是更慢,并且計(jì)算的開(kāi)銷(xiāo)更大(無(wú)論是時(shí)間還是內(nèi)存)。

不過(guò),有時(shí)牛頓二階優(yōu)化算法能超過(guò)一階梯度下降,因?yàn)槎A技術(shù)不會(huì)陷入鞍點(diǎn)附近的緩慢收斂路徑,而梯度下降有時(shí)會(huì)陷進(jìn)去,無(wú)法收斂。

知道哪類(lèi)算法收斂更快的最好辦法是自己親自嘗試。

梯度下降

梯度下降是訓(xùn)練和優(yōu)化智能系統(tǒng)的基礎(chǔ)和最重要技術(shù)。

哦,梯度下降——找到最小值,控制方差,接著更新模型的參數(shù),最終帶領(lǐng)我們走向收斂

θ=θ?η??J(θ)是參數(shù)更新的公式,其中η為學(xué)習(xí)率,?J(θ)為損失函數(shù)J(θ)在參數(shù)θ上的梯度。

梯度下降是優(yōu)化神經(jīng)網(wǎng)絡(luò)的最流行算法,主要用于更新神經(jīng)網(wǎng)絡(luò)模型的權(quán)重,也就是以某個(gè)方向更新、調(diào)整模型參數(shù),以便最小化損失函數(shù)。

我們都知道訓(xùn)練神經(jīng)網(wǎng)絡(luò)基于一種稱(chēng)為反向傳播的著名技術(shù)。在神經(jīng)網(wǎng)絡(luò)的訓(xùn)練中,我們首先進(jìn)行前向傳播,計(jì)算輸入信號(hào)和相應(yīng)權(quán)重的點(diǎn)積,接著應(yīng)用激活函數(shù),激活函數(shù)在將輸入信號(hào)轉(zhuǎn)換為輸出信號(hào)的過(guò)程中引入了非線性,這對(duì)模型而言非常重要,使得模型幾乎能夠?qū)W習(xí)任意函數(shù)映射。在此之后,我們反向傳播網(wǎng)絡(luò)的誤差,基于梯度下降更新權(quán)重值,也就是說(shuō),我們計(jì)算誤差函數(shù)(E)在權(quán)重(W)也就是參數(shù)上的梯度,然后以損失函數(shù)的梯度的相反方向更新參數(shù)(這里是權(quán)重)。

權(quán)重在梯度的反方向上更新

上圖中,U型曲線是梯度(坡度)。如你所見(jiàn),如果權(quán)重(W)值過(guò)小或過(guò)大,那么我們會(huì)有較大誤差,所以我們想要更新和優(yōu)化權(quán)重使其既不過(guò)小又不過(guò)大,所以我們沿著梯度的反方向下降,直到找到局部極小值。

梯度下降的變體

傳統(tǒng)的梯度下降將為整個(gè)數(shù)據(jù)集計(jì)算梯度,但僅僅進(jìn)行一次更新,因此它非常慢,而在大到內(nèi)存放不下的數(shù)據(jù)集上更是困難重重。更新的大小由學(xué)習(xí)率η決定,同時(shí)保證能夠在凸誤差平面上收斂到全局最小值,在非凸誤差平面上收斂到局部極小值。另外,標(biāo)準(zhǔn)的梯度下降在大型數(shù)據(jù)集上計(jì)算冗余的更新。

以上標(biāo)準(zhǔn)梯度下降的問(wèn)題在隨機(jī)梯度下降中得到了修正。

1. 隨機(jī)梯度下降

隨機(jī)梯度下降(SGD)則為每一個(gè)訓(xùn)練樣本進(jìn)行參數(shù)更新。通常它是一個(gè)快得多的技術(shù)。它每次進(jìn)行一項(xiàng)更新。

θ=θ?η??J(θ;x(i);y(i))

由于這些頻繁的更新,參數(shù)更新具有高方差,從而導(dǎo)致?lián)p失函數(shù)劇烈波動(dòng)。這實(shí)際上是一件好事,因?yàn)樗鼛椭覀儼l(fā)現(xiàn)新的可能更好的局部極小值,而標(biāo)準(zhǔn)隨機(jī)梯度下降則如前所述,僅僅收斂至盆地(basin)的極小值。

然而,SGD的問(wèn)題在于,由于頻繁的更新和波動(dòng),它最終復(fù)雜化了收斂過(guò)程,因頻繁的波動(dòng)而會(huì)不斷越過(guò)頭。

不過(guò),如果我們緩慢降低學(xué)習(xí)率η,SGD展現(xiàn)出和標(biāo)準(zhǔn)梯度下降一樣的收斂模式。

損失函數(shù)劇烈波動(dòng)導(dǎo)致我們可能無(wú)法得到最小化損失值的參數(shù)

高方差參數(shù)更新和不穩(wěn)定收斂在另一個(gè)稱(chēng)為小批量梯度下降(Mini-Batch Gradient Descent)的變體中得到了修正。

2. 小批量梯度下降

想要避免SGD和標(biāo)準(zhǔn)梯度下降的所有問(wèn)題和短處,可以使用小批量梯度下降,它吸收了兩種技術(shù)的長(zhǎng)處,每次進(jìn)行批量更新。

使用小批量梯度下降的優(yōu)勢(shì)在于:

降低了參數(shù)更新的方差,最終導(dǎo)向更好、更穩(wěn)定的收斂。

可以利用當(dāng)前最先進(jìn)的深度學(xué)習(xí)庫(kù)中常見(jiàn)的高度優(yōu)化的矩陣操作,極為高效地計(jì)算小批量梯度。

常用的Mini-batch大小為50到256,不過(guò)可能因?yàn)閼?yīng)用和問(wèn)題的不同而不同。

小批量梯度下降是今時(shí)今日訓(xùn)練神經(jīng)網(wǎng)絡(luò)的典型選擇。

P.S. 實(shí)際上,很多時(shí)候SGD指的就是小批量梯度下降。

梯度下降及其變體面臨的挑戰(zhàn)

選擇合適的學(xué)習(xí)率可能很難。過(guò)小的學(xué)習(xí)率導(dǎo)致慢到讓人懷疑人生的收斂,在尋找最小化損失的最優(yōu)參數(shù)值時(shí)邁著嬰兒般的小步,直接影響總訓(xùn)練時(shí)長(zhǎng),使其過(guò)于漫長(zhǎng)。而過(guò)大的學(xué)習(xí)率可能阻礙收斂,導(dǎo)致?lián)p失函數(shù)在極小值周?chē)▌?dòng),甚至走上發(fā)散的不歸路。

此外,同樣的學(xué)習(xí)率應(yīng)用于所有參數(shù)更新。如果我們的數(shù)據(jù)是稀疏的,我們的特征有非常不同的頻率,我們可能不想以同等程度更新所有特征,而是想在很少出現(xiàn)的特征上進(jìn)行較大的更新。

最小化神經(jīng)網(wǎng)絡(luò)中常見(jiàn)的高度非凸誤差函數(shù)的另一項(xiàng)關(guān)鍵挑戰(zhàn)是避免陷入眾多的次優(yōu)局部極小值。事實(shí)上,困難不僅在于局部極小值,更在于鞍點(diǎn),即一個(gè)維度的坡度上升,另一個(gè)維度的坡度下降的點(diǎn)。這些鞍點(diǎn)通常被誤差相等的高原環(huán)繞,眾所周知,這讓SGD難以逃離,因?yàn)樵谒芯S度上,梯度都接近零。

優(yōu)化梯度下降

現(xiàn)在我們將討論進(jìn)一步優(yōu)化梯度下降的多種算法。

動(dòng)量

SGD的高方差振蕩使其難以收斂,所以人們發(fā)明了一項(xiàng)稱(chēng)為動(dòng)量(Momentum)的技術(shù),通過(guò)在相關(guān)方向上導(dǎo)航并減緩非相關(guān)方向上的振蕩加速SGD。換句話說(shuō),它在當(dāng)前更新向量中增加了上一步的更新向量,乘以一個(gè)系數(shù)γ。

V(t)=γV(t?1)+η?J(θ)

最終我們通過(guò)θ=θ?V(t)更新參數(shù)。

動(dòng)量項(xiàng)γ通常設(shè)為0.9,或與之相似的值。

這里的動(dòng)量源自經(jīng)典物理學(xué)中的動(dòng)量概念,當(dāng)我們沿著一座小山坡向下扔球時(shí),球在沿著山坡向下滾動(dòng)的過(guò)程中收集動(dòng)量,速度不斷增加。

我們的參數(shù)更新過(guò)程發(fā)生了同樣的事情:

它導(dǎo)向更快、更穩(wěn)定的收斂。

它減少了振蕩。

動(dòng)量項(xiàng)γ在梯度指向同一方向的維度上擴(kuò)大更新,而在梯度方向改變的維度上縮小更新。這減少了不必要的參數(shù)更新,導(dǎo)向更快、更穩(wěn)定的收斂,減少了振蕩。

Nesterov加速梯度

Yurii Nesterov發(fā)現(xiàn)了動(dòng)量的一個(gè)問(wèn)題:

盲目地隨著坡度滾下山坡的球是不令人滿意的。我們希望能有一個(gè)智能一點(diǎn)的球,對(duì)所處位置有一定的概念,知道在坡度變得向上前減速。

也就是說(shuō),當(dāng)我們到達(dá)極小值,也就是曲線的最低點(diǎn)時(shí),動(dòng)量相當(dāng)高,因?yàn)楦邉?dòng)量的作用,優(yōu)化算法并不知道在那一點(diǎn)減速,這可能導(dǎo)致優(yōu)化算法完全錯(cuò)過(guò)極小值然后接著向上移動(dòng)。

Yurii Nesterov在1983年發(fā)表了一篇論文,解決了動(dòng)量的這個(gè)問(wèn)題。我們現(xiàn)在將其提出的策略稱(chēng)為Nesterov加速梯度(Nestrov Accelerated Gradient,NAG)。

Nesterov提議,我們首先基于先前的動(dòng)量進(jìn)行一次大跳躍,接著計(jì)算梯度,然后據(jù)此作出修正,并根據(jù)修正更新參數(shù)。預(yù)更新可以防止優(yōu)化算法走得太快錯(cuò)過(guò)極小值,使其對(duì)變動(dòng)的反應(yīng)更靈敏。

NAG是為動(dòng)量項(xiàng)提供預(yù)知能力的一種方法。我們知道,我們?cè)诟聟?shù)θ的時(shí)候會(huì)用到動(dòng)量項(xiàng)γV(t?1)。因此,計(jì)算θ?γV(t?1)能提供參數(shù)下一位置的近似值。這樣我們就可以通過(guò)計(jì)算參數(shù)未來(lái)位置的近似值上的梯度“預(yù)見(jiàn)未來(lái)”:

V(t)=γV(t?1)+η?J( θ?γV(t?1) )

接著我們同樣通過(guò)θ=θ?V(t)更新參數(shù)。

關(guān)于NAG的更多細(xì)節(jié),可以參考cs231n課程。

現(xiàn)在,我們已經(jīng)能夠根據(jù)誤差函數(shù)的斜率調(diào)整更新的幅度,并加速SGD過(guò)程,我們同樣希望能根據(jù)不同參數(shù)的重要性調(diào)整更新的幅度。

Adagrad

Adagrad讓學(xué)習(xí)率η可以基于參數(shù)調(diào)整,為不頻繁的參數(shù)進(jìn)行較大的更新,為頻繁的參數(shù)進(jìn)行較小的更新。因此,它很適合處理稀疏數(shù)據(jù)。

Adagrad在每一時(shí)步為每個(gè)參數(shù)θ使用不同的學(xué)習(xí)率,學(xué)習(xí)率的大小基于該參數(shù)的過(guò)往梯度。

之前,我們?yōu)樗袇?shù)θ一下子進(jìn)行更新,因?yàn)槊總€(gè)參數(shù)θ(i)使用相同的學(xué)習(xí)率η。由于Adagrad在每個(gè)時(shí)步t為每個(gè)參數(shù)θ(i)使用不同的學(xué)習(xí)率,我們首先計(jì)算Adagrad在每個(gè)參數(shù)上的更新,接著將其向量化。設(shè)gi,t為參數(shù)θ(i)在時(shí)步t的損失函數(shù)的梯度,則Adagrad的公式為:

上式中,?為平滑因子,避免除數(shù)為零。

從上式中,我們可以看到:

某方向上的Gi,t較小,則相應(yīng)的學(xué)習(xí)率較大,也就是說(shuō),為不頻繁出現(xiàn)的參數(shù)做較大的更新。

隨著時(shí)間的推移,Gi,t越來(lái)越大,從而使學(xué)習(xí)率越來(lái)越小。因此,我們無(wú)需手動(dòng)調(diào)整學(xué)習(xí)率。大多數(shù)Adagrad的實(shí)現(xiàn)中,η均使用默認(rèn)值0.01. 這是Adagrad的一大優(yōu)勢(shì)。

由于Gi,t為平方和,每一項(xiàng)都是正值。因此,隨著訓(xùn)練過(guò)程的進(jìn)行,Gi,t會(huì)持續(xù)不斷地增長(zhǎng)。這意味著,學(xué)習(xí)率會(huì)持續(xù)不斷地下降,模型收斂越來(lái)越慢,訓(xùn)練需要漫長(zhǎng)的時(shí)間,甚至最終學(xué)習(xí)率小到模型完全停止學(xué)習(xí)。這是Adagrad的主要缺陷。

另一個(gè)算法AdaDelta修正了Adagrad的學(xué)習(xí)率衰減問(wèn)題。

AdaDelta

AdaDelta試圖解決Adagrad的學(xué)習(xí)率衰減問(wèn)題。不像Adagrad累加所有過(guò)往平方梯度,Adadelta對(duì)累加的范圍作了限制,只累計(jì)固定大小w的窗口內(nèi)的過(guò)往梯度。 為了提升效率,Adadelta也沒(méi)有存儲(chǔ)w個(gè)平方梯度,而是過(guò)往平方梯度的均值。這樣,時(shí)步t的動(dòng)態(tài)均值就只取決于先前的均值和當(dāng)前梯度。

其中,γ的取值和動(dòng)量方法類(lèi)似,在0.9左右。

類(lèi)似Adagrad,Adadelta的公式為:

由于分母部分恰好符合梯度的均方誤差的定義:

這其實(shí)也是RMSprop的公式。RMSprop是由Geoffrey Hinton提出的,未以論文形式發(fā)表,見(jiàn)其csc321課程。

Adadelta和RMSProp是在差不多同時(shí)相互獨(dú)立地開(kāi)發(fā)的,都是為了解決Adagrad的學(xué)習(xí)率衰減問(wèn)題。

另外,標(biāo)準(zhǔn)的Adadelta算法中,和分母對(duì)稱(chēng),分子的η也可以用RMS[Δθ]t-1替換:

這就消去了η!也就是說(shuō),我們無(wú)需指定η的值了。

目前為止我們所做的改進(jìn)

為每個(gè)參數(shù)計(jì)算不同的學(xué)習(xí)率。

同時(shí)計(jì)算動(dòng)量。

防止學(xué)習(xí)率衰減。

還有什么可以改進(jìn)的?

既然我們已經(jīng)為每個(gè)參數(shù)分別計(jì)算學(xué)習(xí)率,為什么不為每個(gè)參數(shù)分別計(jì)算動(dòng)量變動(dòng)呢?基于這一想法,人們提出了Adam優(yōu)化算法。

Adam

Adam表示自適應(yīng)動(dòng)量估計(jì)(Adaptive Moment Estimation)。

開(kāi)門(mén)見(jiàn)山,讓我們直接查看Adam的公式:

有沒(méi)有一種似曾相識(shí)的感覺(jué)?你的感覺(jué)沒(méi)錯(cuò),這很像RMSProp或者Adadelta的公式:

所以,問(wèn)題來(lái)了,這vt和mt到底是什么玩意?莫急,我們馬上給出兩者的定義。

先來(lái)瞧瞧vt:

喲!這不就是Adadelta或者RMSProp里面的過(guò)往平方梯度均值嘛!只不過(guò)換了幾個(gè)字母,把γ換成了β2,把E[g2]換成了v。

再來(lái)看看mt的定義:

咦?這個(gè)好像和動(dòng)量的定義有點(diǎn)像呀?

V(t)=γV(t?1)+η?J(θ)

γ換成了β1,?J(θ)和gt都是梯度。當(dāng)然還有一個(gè)系數(shù)不一樣,只是有點(diǎn)像,不是一回事。

從這個(gè)角度來(lái)說(shuō),Adam算法有點(diǎn)博采眾家之長(zhǎng)的意思。事實(shí)上,RMSProp或者Adadelta可以看成是Adam算法不帶動(dòng)量的特殊情形。

當(dāng)然,其實(shí)我們上面有一個(gè)地方漏了沒(méi)說(shuō)。細(xì)心的讀者可能已經(jīng)發(fā)現(xiàn),實(shí)際上Adam的公式里vt和mt是戴帽的,這頂帽子意義何在?

這是因?yàn)椋髡甙l(fā)現(xiàn),由于vt和mt剛開(kāi)始初始化為全零向量,會(huì)導(dǎo)致這兩個(gè)量的估計(jì)向零傾斜,特別是在剛開(kāi)始的幾個(gè)時(shí)步里,以及衰減率很小的情況下(即β取值接近1)。因此需要額外加上校正步驟:

Adam作者建議,β1取0.9,β2取0.999,?取10-8。

在實(shí)踐中,Adam的表現(xiàn)非常出色,收斂迅速,也修正了之前一些優(yōu)化算法的問(wèn)題,比如學(xué)習(xí)率衰減、收斂緩慢、損失函數(shù)振蕩。通常而言,Adam是自適應(yīng)學(xué)習(xí)率算法的較優(yōu)選擇。

AMSGrad

ICLR 2018上,Google的Reddi等提交了一篇關(guān)于Adam收斂性的論文,指出了Adam算法收斂性證明中的一個(gè)錯(cuò)誤。并構(gòu)造了一個(gè)簡(jiǎn)單的凸優(yōu)化問(wèn)題作為反例,證明Adam在其上無(wú)法收斂。另外,Reddi等提出了Adam算法的一個(gè)變體,AMSGRad,其主要改動(dòng)為:

基于算法的簡(jiǎn)單性考量,去除了Adam的偏置糾正步驟。

僅當(dāng)當(dāng)前vt大于vt-1時(shí),才應(yīng)用vt。也就是說(shuō),應(yīng)用兩種中較大的那個(gè)。這有助于避免收斂至次優(yōu)解時(shí),某些提供較大、有用梯度的罕見(jiàn)mini-batch的作用可能被過(guò)往平方梯度均值大為削弱,導(dǎo)致難以收斂的問(wèn)題。

Reddi等在小型網(wǎng)絡(luò)(MNIST上的單層MLP、CIFAR-10上的小型卷積網(wǎng)絡(luò))上展示了AMSGrad在訓(xùn)練損失和測(cè)試損失方面相對(duì)Adam的優(yōu)勢(shì)。然而,有人在較大模型上進(jìn)行了試驗(yàn),發(fā)現(xiàn)兩者并無(wú)顯著差異(順便,Adam和AMSGrad的偏置糾正是否開(kāi)啟,影響也不大)。

可視化優(yōu)化算法

下面讓我們來(lái)看兩張動(dòng)圖,希望它們有助于直觀地理解網(wǎng)絡(luò)的訓(xùn)練過(guò)程。

上圖為誤差平面的等值線圖。從圖中我們可以看到,自適應(yīng)學(xué)習(xí)率方法干凈利落地完成了收斂。而SGD、動(dòng)量法、NAG收斂十分緩慢。其中,動(dòng)量法和NAG在動(dòng)量的作用下,歡快地朝著一個(gè)方向狂奔,相比之下,NAG更快反應(yīng)過(guò)來(lái)。SGD倒是沒(méi)有沖過(guò)頭,可惜最后沒(méi)能收斂到最優(yōu)值。

上圖演示了不同優(yōu)化算法在鞍點(diǎn)的表現(xiàn)。我們看到,自適應(yīng)學(xué)習(xí)率方法毫不拖泥帶水地?cái)[脫了鞍點(diǎn),動(dòng)量法、NAG在鞍點(diǎn)徘徊良久后終于逃出生天,而SGD最終陷在鞍點(diǎn)無(wú)法自拔。

以上兩幅動(dòng)圖均由Alec Radford制作。

應(yīng)該使用哪種優(yōu)化算法?

不幸的是,這一問(wèn)題目前還沒(méi)有明確的答案。這里僅能提供一些建議:

目前而言,用的比較多的優(yōu)化算法是SGD、動(dòng)量、RMSProp、AdaDelta、Adam。

在稀疏數(shù)據(jù)上,一般建議使用自適應(yīng)學(xué)習(xí)率算法。

在高度復(fù)雜的模型上,推薦使用自適應(yīng)學(xué)習(xí)率算法,通常它們收斂起來(lái)比較快。

在其他問(wèn)題中,使用自適應(yīng)學(xué)習(xí)率算法通常也能取得較優(yōu)的表現(xiàn)。同時(shí)它也額外帶來(lái)了一項(xiàng)福利:你不用操心學(xué)習(xí)率設(shè)定問(wèn)題。

總體而言,在自適應(yīng)學(xué)習(xí)率算法中,Adam是一個(gè)比較流行的選擇。

考慮到超參數(shù)調(diào)整的便利性,優(yōu)化算法的選擇還取決于你對(duì)不同算法的熟悉程度。

Adam在不同超參數(shù)下的魯棒性較好,不過(guò)有時(shí)你可能需要調(diào)整下η值。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:梯度下降優(yōu)化之旅:神經(jīng)網(wǎng)絡(luò)常用優(yōu)化算法概覽

文章出處:【微信號(hào):jqr_AI,微信公眾號(hào):論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    粒子群優(yōu)化模糊神經(jīng)網(wǎng)絡(luò)在語(yǔ)音識(shí)別中的應(yīng)用

    針對(duì)模糊神經(jīng)網(wǎng)絡(luò)訓(xùn)練采用BP算法比較依賴于網(wǎng)絡(luò)的初始條件,訓(xùn)練時(shí)間較長(zhǎng),容易陷入局部極值的缺點(diǎn),利用粒子群優(yōu)化算法(PSO)的全局搜索性能,
    發(fā)表于 05-06 09:05

    神經(jīng)網(wǎng)絡(luò)教程(李亞非)

    網(wǎng)絡(luò)BP算法的程序設(shè)計(jì)  多層前向網(wǎng)絡(luò)BP算法源程序  第4章 Hopfield網(wǎng)絡(luò)模型  4.
    發(fā)表于 03-20 11:32

    【案例分享】基于BP算法的前饋神經(jīng)網(wǎng)絡(luò)

    `BP神經(jīng)網(wǎng)絡(luò)首先給出只包含一個(gè)隱層的BP神經(jīng)網(wǎng)絡(luò)模型(兩層神經(jīng)網(wǎng)絡(luò)): BP神經(jīng)網(wǎng)絡(luò)其實(shí)由兩部分組成:前饋
    發(fā)表于 07-21 04:00

    如何構(gòu)建神經(jīng)網(wǎng)絡(luò)?

    原文鏈接:http://tecdat.cn/?p=5725 神經(jīng)網(wǎng)絡(luò)是一種基于現(xiàn)有數(shù)據(jù)創(chuàng)建預(yù)測(cè)的計(jì)算系統(tǒng)。如何構(gòu)建神經(jīng)網(wǎng)絡(luò)?神經(jīng)網(wǎng)絡(luò)包括:輸入層:根據(jù)現(xiàn)有數(shù)據(jù)獲取輸入的層隱藏層:使用反向傳播優(yōu)
    發(fā)表于 07-12 08:02

    卷積神經(jīng)網(wǎng)絡(luò)模型發(fā)展及應(yīng)用

    陷入了近二十年的停滯。1986 年到 1988 年是神經(jīng)網(wǎng)絡(luò)模型發(fā)展的第二階段,稱(chēng)為第二 代神經(jīng)網(wǎng)絡(luò)模型。1986 年 Rumelhart 等人提出了誤 差反向傳播
    發(fā)表于 08-02 10:39

    混沌遺傳算法優(yōu)化管網(wǎng)狀態(tài)神經(jīng)網(wǎng)絡(luò)模型

    混沌遺傳算法優(yōu)化管網(wǎng)狀態(tài)神經(jīng)網(wǎng)絡(luò)模型 針對(duì)BP 算法易陷入局部最優(yōu),提出將一種新的混沌遺傳算法
    發(fā)表于 02-23 09:22 ?10次下載

    算法大全_神經(jīng)網(wǎng)絡(luò)模型

    算法大全第19章_神經(jīng)網(wǎng)絡(luò)模型,有需要的下來(lái)看看。
    發(fā)表于 01-14 17:49 ?0次下載

    BP神經(jīng)網(wǎng)絡(luò)模型與學(xué)習(xí)算法

    BP神經(jīng)網(wǎng)絡(luò)模型與學(xué)習(xí)算法
    發(fā)表于 09-08 09:42 ?10次下載
    BP<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b><b class='flag-5'>模型</b>與學(xué)習(xí)<b class='flag-5'>算法</b>

    改進(jìn)人工蜂群算法優(yōu)化RBF神經(jīng)網(wǎng)絡(luò)的短時(shí)交通流預(yù)測(cè)模型

    為了提高徑向基函數(shù)RBF神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型對(duì)短時(shí)交通流的預(yù)測(cè)準(zhǔn)確性,提出了一種基于改進(jìn)人工蜂群算法優(yōu)化RBF神經(jīng)網(wǎng)絡(luò)的短時(shí)交通流預(yù)測(cè)
    發(fā)表于 12-01 16:31 ?2次下載
    改進(jìn)人工蜂群<b class='flag-5'>算法</b><b class='flag-5'>優(yōu)化</b>RBF<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>的短時(shí)交通流預(yù)測(cè)<b class='flag-5'>模型</b>

    神經(jīng)網(wǎng)絡(luò)的介紹和在GIS中有什么樣的應(yīng)用說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是神經(jīng)網(wǎng)絡(luò)的介紹和在GIS中有什么樣的應(yīng)用說(shuō)明。
    發(fā)表于 01-21 14:28 ?19次下載
    <b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>的介紹和在GIS中有<b class='flag-5'>什么樣</b>的應(yīng)用說(shuō)明

    卷積神經(jīng)網(wǎng)絡(luò)的介紹 什么是卷積神經(jīng)網(wǎng)絡(luò)算法

    的深度學(xué)習(xí)算法。CNN模型最早被提出是為了處理圖像,其模型結(jié)構(gòu)中包含卷積層、池化層和全連接層等關(guān)鍵技術(shù),經(jīng)過(guò)多個(gè)卷積層和池化層的處理,CNN可以提取出圖像中的特征信息,從而對(duì)圖像進(jìn)行分類(lèi)。 一、卷積
    的頭像 發(fā)表于 08-21 16:49 ?1768次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)算法流程 卷積神經(jīng)網(wǎng)絡(luò)模型工作流程

    卷積神經(jīng)網(wǎng)絡(luò)算法流程 卷積神經(jīng)網(wǎng)絡(luò)模型工作流程? 卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是一種廣泛
    的頭像 發(fā)表于 08-21 16:50 ?2671次閱讀

    構(gòu)建神經(jīng)網(wǎng)絡(luò)模型的常用方法 神經(jīng)網(wǎng)絡(luò)模型的常用算法介紹

    神經(jīng)網(wǎng)絡(luò)模型是一種通過(guò)模擬生物神經(jīng)元間相互作用的方式實(shí)現(xiàn)信息處理和學(xué)習(xí)的計(jì)算機(jī)模型。它能夠?qū)斎霐?shù)據(jù)進(jìn)行分類(lèi)、回歸、預(yù)測(cè)和聚類(lèi)等任務(wù),已經(jīng)廣泛應(yīng)用于計(jì)算機(jī)視覺(jué)、自然語(yǔ)言處理、語(yǔ)音處理等
    發(fā)表于 08-28 18:25 ?996次閱讀

    基于神經(jīng)網(wǎng)絡(luò)算法模型構(gòu)建方法

    神經(jīng)網(wǎng)絡(luò)是一種強(qiáng)大的機(jī)器學(xué)習(xí)算法,廣泛應(yīng)用于各種領(lǐng)域,如圖像識(shí)別、自然語(yǔ)言處理、語(yǔ)音識(shí)別等。本文詳細(xì)介紹了基于神經(jīng)網(wǎng)絡(luò)算法模型構(gòu)建方法,包
    的頭像 發(fā)表于 07-02 11:21 ?390次閱讀

    神經(jīng)網(wǎng)絡(luò)優(yōu)化算法有哪些

    神經(jīng)網(wǎng)絡(luò)優(yōu)化算法是深度學(xué)習(xí)領(lǐng)域中的核心技術(shù)之一,旨在通過(guò)調(diào)整網(wǎng)絡(luò)中的參數(shù)(如權(quán)重和偏差)來(lái)最小化損失函數(shù),從而提高模型的性能和效率。本文將詳
    的頭像 發(fā)表于 07-03 16:01 ?353次閱讀