摘要雖然梯度下降優(yōu)化算法越來(lái)越受歡迎,但通常作為黑盒優(yōu)化器使用,因此很難對(duì)其優(yōu)點(diǎn)和缺點(diǎn)的進(jìn)行實(shí)際的解釋。本文旨在讓讀者對(duì)不同的算法有直觀的認(rèn)識(shí),以幫助讀者使用這些算法。在本綜述中,我們介紹梯度下降的不同變形形式,總結(jié)這些算法面臨的挑戰(zhàn),介紹最常用的優(yōu)化算法,回顧并行和分布式架構(gòu),以及調(diào)研用于優(yōu)化梯度下降的其他的策略。 1 引言梯度下降法是最著名的優(yōu)化算法之一,也是迄今優(yōu)化神經(jīng)網(wǎng)絡(luò)時(shí)最常用的方法。同時(shí),在每一個(gè)最新的深度學(xué)習(xí)庫(kù)中都包含了各種優(yōu)化的梯度下降法的實(shí)現(xiàn)(例如:參見(jiàn)lasagne,caffe和keras的文檔)。然而,這些算法通常是作為黑盒優(yōu)化器使用,因此,很難對(duì)其優(yōu)點(diǎn)和缺點(diǎn)的進(jìn)行實(shí)際的解釋。 本文旨在讓讀者對(duì)不同的優(yōu)化梯度下降的算法有直觀的認(rèn)識(shí),以幫助讀者使用這些算法。在第2部分,我們首先介紹梯度下降的不同變形形式。在第3部分,我們將簡(jiǎn)要總結(jié)在訓(xùn)練的過(guò)程中所面臨的挑戰(zhàn)。隨后,在第4部分,我們將介紹最常用的優(yōu)化算法,包括這些算法在解決以上挑戰(zhàn)時(shí)的動(dòng)機(jī)以及如何得到更新規(guī)則的推導(dǎo)形式。在第5部分,我們將簡(jiǎn)單討論在并行和分布式環(huán)境中優(yōu)化梯度下降的算法和框架。最后,在第6部分,我們將思考對(duì)優(yōu)化梯度下降有用的一些其他策略。 梯度下降法是最小化目標(biāo)函數(shù) 2 梯度下降法的變形形式梯度下降法有3中變形形式,它們之間的區(qū)別為我們?cè)谟?jì)算目標(biāo)函數(shù)的梯度時(shí)使用到多少數(shù)據(jù)。根據(jù)數(shù)據(jù)量的不同,我們?cè)趨?shù)更新的精度和更新過(guò)程中所需要的時(shí)間兩個(gè)方面做出權(quán)衡。 2.1 批梯度下降法Vanilla梯度下降法,又稱(chēng)為批梯度下降法(batch gradient descent),在整個(gè)訓(xùn)練數(shù)據(jù)集上計(jì)算損失函數(shù)關(guān)于參數(shù)
因?yàn)樵趫?zhí)行每次更新時(shí),我們需要在整個(gè)數(shù)據(jù)集上計(jì)算所有的梯度,所以批梯度下降法的速度會(huì)很慢,同時(shí),批梯度下降法無(wú)法處理超出內(nèi)存容量限制的數(shù)據(jù)集。批梯度下降法同樣也不能在線更新模型,即在運(yùn)行的過(guò)程中,不能增加新的樣本。 批梯度下降法的代碼如下所示:
對(duì)于給定的迭代次數(shù),首先,我們利用全部數(shù)據(jù)集計(jì)算損失函數(shù)關(guān)于參數(shù)向量 然后,我們利用梯度的方向和學(xué)習(xí)率更新參數(shù),學(xué)習(xí)率決定我們將以多大的步長(zhǎng)更新參數(shù)。對(duì)于凸誤差函數(shù),批梯度下降法能夠保證收斂到全局最小值,對(duì)于非凸函數(shù),則收斂到一個(gè)局部最小值。 2.2 隨機(jī)梯度下降法相反,隨機(jī)梯度下降法(stochastic gradient descent, SGD)根據(jù)每一條訓(xùn)練樣本
對(duì)于大數(shù)據(jù)集,因?yàn)榕荻认陆捣ㄔ诿恳粋€(gè)參數(shù)更新之前,會(huì)對(duì)相似的樣本計(jì)算梯度,所以在計(jì)算過(guò)程中會(huì)有冗余。而SGD在每一次更新中只執(zhí)行一次,從而消除了冗余。因而,通常SGD的運(yùn)行速度更快,同時(shí),可以用于在線學(xué)習(xí)。SGD以高方差頻繁地更新,導(dǎo)致目標(biāo)函數(shù)出現(xiàn)如圖1所示的劇烈波動(dòng)。 圖1:SGD波動(dòng)(來(lái)源:Wikipedia)
與批梯度下降法的收斂會(huì)使得損失函數(shù)陷入局部最小相比,由于SGD的波動(dòng)性,一方面,波動(dòng)性使得SGD可以跳到新的和潛在更好的局部最優(yōu)。另一方面,這使得最終收斂到特定最小值的過(guò)程變得復(fù)雜,因?yàn)镾GD會(huì)一直持續(xù)波動(dòng)。然而,已經(jīng)證明當(dāng)我們緩慢減小學(xué)習(xí)率,SGD與批梯度下降法具有相同的收斂行為,對(duì)于非凸優(yōu)化和凸優(yōu)化,可以分別收斂到局部最小值和全局最小值。與批梯度下降的代碼相比,SGD的代碼片段僅僅是在對(duì)訓(xùn)練樣本的遍歷和利用每一條樣本計(jì)算梯度的過(guò)程中增加一層循環(huán)。注意,如6.1節(jié)中的解釋?zhuān)诿恳淮窝h(huán)中,我們打亂訓(xùn)練樣本。
2.3 小批量梯度下降法小批量梯度下降法最終結(jié)合了上述兩種方法的優(yōu)點(diǎn),在每次更新時(shí)使用
這種方法,a)減少參數(shù)更新的方差,這樣可以得到更加穩(wěn)定的收斂結(jié)果;b)可以利用最新的深度學(xué)習(xí)庫(kù)中高度優(yōu)化的矩陣優(yōu)化方法,高效地求解每個(gè)小批量數(shù)據(jù)的梯度。通常,小批量數(shù)據(jù)的大小在50到256之間,也可以根據(jù)不同的應(yīng)用有所變化。當(dāng)訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型時(shí),小批量梯度下降法是典型的選擇算法,當(dāng)使用小批量梯度下降法時(shí),也將其稱(chēng)為SGD。注意:在下文的改進(jìn)的SGD中,為了簡(jiǎn)單,我們省略了參數(shù) 在代碼中,不是在所有樣本上做迭代,我們現(xiàn)在只是在大小為50的小批量數(shù)據(jù)上做迭代:
3 挑戰(zhàn)雖然Vanilla小批量梯度下降法并不能保證較好的收斂性,但是需要強(qiáng)調(diào)的是,這也給我們留下了如下的一些挑戰(zhàn):
4 梯度下降優(yōu)化算法下面,我們將列舉一些算法,這些算法被深度學(xué)習(xí)社區(qū)廣泛用來(lái)處理前面提到的挑戰(zhàn)。我們不會(huì)討論在實(shí)際中不適合在高維數(shù)據(jù)集中計(jì)算的算法,例如諸如牛頓法的二階方法。 4.1 動(dòng)量法SGD很難通過(guò)陡谷,即在一個(gè)維度上的表面彎曲程度遠(yuǎn)大于其他維度的區(qū)域[19],這種情況通常出現(xiàn)在局部最優(yōu)點(diǎn)附近。在這種情況下,SGD搖擺地通過(guò)陡谷的斜坡,同時(shí),沿著底部到局部最優(yōu)點(diǎn)的路徑上只是緩慢地前進(jìn),這個(gè)過(guò)程如圖2a所示。 圖2:來(lái)源:Genevieve B. Orr
如圖2b所示,動(dòng)量法[16]是一種幫助SGD在相關(guān)方向上加速并抑制搖擺的一種方法。動(dòng)量法將歷史步長(zhǎng)的更新向量的一個(gè)分量
動(dòng)量項(xiàng) 從本質(zhì)上說(shuō),動(dòng)量法,就像我們從山上推下一個(gè)球,球在滾下來(lái)的過(guò)程中累積動(dòng)量,變得越來(lái)越快(直到達(dá)到終極速度,如果有空氣阻力的存在,則 4.2 Nesterov加速梯度下降法然而,球從山上滾下的時(shí)候,盲目地沿著斜率方向,往往并不能令人滿意。我們希望有一個(gè)智能的球,這個(gè)球能夠知道它將要去哪,以至于在重新遇到斜率上升時(shí)能夠知道減速。 Nesterov加速梯度下降法(Nesterov accelerated gradient,NAG)[13]是一種能夠給動(dòng)量項(xiàng)這樣的預(yù)知能力的方法。我們知道,我們利用動(dòng)量項(xiàng)
同時(shí),我們?cè)O(shè)置動(dòng)量項(xiàng) 圖3:Nesterov更新(來(lái)源:G. Hinton的課程6c)
對(duì)于NAG的直觀理解的另一種解釋可以參見(jiàn)http://cs231n./neural-networks-3/,同時(shí)Ilya Sutskever在其博士論文[18]中給出更詳細(xì)的綜述。 既然我們能夠使得我們的更新適應(yīng)誤差函數(shù)的斜率以相應(yīng)地加速SGD,我們同樣也想要使得我們的更新能夠適應(yīng)每一個(gè)單獨(dú)參數(shù),以根據(jù)每個(gè)參數(shù)的重要性決定大的或者小的更新。 4.3 AdagradAdagrad[7]是這樣的一種基于梯度的優(yōu)化算法:讓學(xué)習(xí)率適應(yīng)參數(shù),對(duì)于出現(xiàn)次數(shù)較少的特征,我們對(duì)其采用更大的學(xué)習(xí)率,對(duì)于出現(xiàn)次數(shù)較多的特征,我們對(duì)其采用較小的學(xué)習(xí)率。因此,Adagrad非常適合處理稀疏數(shù)據(jù)。Dean等人[6]發(fā)現(xiàn)Adagrad能夠極大提高了SGD的魯棒性并將其應(yīng)用于Google的大規(guī)模神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,其中包含了YouTube視頻中的貓的識(shí)別。此外,Pennington等人[15]利用Adagrad訓(xùn)練Glove詞向量,因?yàn)榈皖l詞比高頻詞需要更大的步長(zhǎng)。 前面,我們每次更新所有的參數(shù)
在
對(duì)于上述的更新規(guī)則,在
其中, 由于
Adagrad算法的一個(gè)主要優(yōu)點(diǎn)是無(wú)需手動(dòng)調(diào)整學(xué)習(xí)率。在大多數(shù)的應(yīng)用場(chǎng)景中,通常采用常數(shù) Adagrad的一個(gè)主要缺點(diǎn)是它在分母中累加梯度的平方:由于沒(méi)增加一個(gè)正項(xiàng),在整個(gè)訓(xùn)練過(guò)程中,累加的和會(huì)持續(xù)增長(zhǎng)。這會(huì)導(dǎo)致學(xué)習(xí)率變小以至于最終變得無(wú)限小,在學(xué)習(xí)率無(wú)限小時(shí),Adagrad算法將無(wú)法取得額外的信息。接下來(lái)的算法旨在解決這個(gè)不足。 4.4 AdadeltaAdadelta[21]是Adagrad的一種擴(kuò)展算法,以處理Adagrad學(xué)習(xí)速率單調(diào)遞減的問(wèn)題。不是計(jì)算所有的梯度平方,Adadelta將計(jì)算計(jì)算歷史梯度的窗口大小限制為一個(gè)固定值 在Adadelta中,無(wú)需存儲(chǔ)先前的
我們將
我們先前得到的Adagrad參數(shù)更新向量變?yōu)椋?/p>
現(xiàn)在,我們簡(jiǎn)單將對(duì)角矩陣
由于分母僅僅是梯度的均方根(root mean squared,RMS)誤差,我們可以簡(jiǎn)寫(xiě)為:
作者指出上述更新公式中的每個(gè)部分(與SGD,動(dòng)量法或者Adagrad)并不一致,即更新規(guī)則中必須與參數(shù)具有相同的假設(shè)單位。為了實(shí)現(xiàn)這個(gè)要求,作者首次定義了另一個(gè)指數(shù)衰減均值,這次不是梯度平方,而是參數(shù)的平方的更新:
因此,參數(shù)更新的均方根誤差為:
由于
使用Adadelta算法,我們甚至都無(wú)需設(shè)置默認(rèn)的學(xué)習(xí)率,因?yàn)楦乱?guī)則中已經(jīng)移除了學(xué)習(xí)率。 4.5 RMSpropRMSprop是一個(gè)未被發(fā)表的自適應(yīng)學(xué)習(xí)率的算法,該算法由Geoff Hinton在其Coursera課堂的課程6e中提出。 RMSprop和Adadelta在相同的時(shí)間里被獨(dú)立的提出,都起源于對(duì)Adagrad的極速遞減的學(xué)習(xí)率問(wèn)題的求解。實(shí)際上,RMSprop是先前我們得到的Adadelta的第一個(gè)更新向量的特例:
同樣,RMSprop將學(xué)習(xí)率分解成一個(gè)平方梯度的指數(shù)衰減的平均。Hinton建議將 4.6 Adam自適應(yīng)矩估計(jì)(Adaptive Moment Estimation,Adam)[9]是另一種自適應(yīng)學(xué)習(xí)率的算法,Adam對(duì)每一個(gè)參數(shù)都計(jì)算自適應(yīng)的學(xué)習(xí)率。除了像Adadelta和RMSprop一樣存儲(chǔ)一個(gè)指數(shù)衰減的歷史平方梯度的平均
通過(guò)計(jì)算偏差校正的一階矩和二階矩估計(jì)來(lái)抵消偏差:
正如我們?cè)贏dadelta和RMSprop中看到的那樣,他們利用上述的公式更新參數(shù),由此生成了Adam的更新規(guī)則:
作者建議 4.7 算法可視化下面兩張圖給出了上述優(yōu)化算法的優(yōu)化行為的直觀理解。(還可以看看這里關(guān)于Karpathy對(duì)相同的圖片的描述以及另一個(gè)簡(jiǎn)明關(guān)于算法討論的概述)。 在圖4a中,我們看到不同算法在損失曲面的等高線上走的不同路線。所有的算法都是從同一個(gè)點(diǎn)出發(fā)并選擇不同路徑到達(dá)最優(yōu)點(diǎn)。注意:Adagrad,Adadelta和RMSprop能夠立即轉(zhuǎn)移到正確的移動(dòng)方向上并以類(lèi)似的速度收斂,而動(dòng)量法和NAG會(huì)導(dǎo)致偏離,想像一下球從山上滾下的畫(huà)面。然而,NAG能夠在偏離之后快速修正其路線,因?yàn)镹AG通過(guò)對(duì)最優(yōu)點(diǎn)的預(yù)見(jiàn)增強(qiáng)其響應(yīng)能力。 圖4b中展示了不同算法在鞍點(diǎn)出的行為,鞍點(diǎn)即為一個(gè)點(diǎn)在一個(gè)維度上的斜率為正,而在其他維度上的斜率為負(fù),正如我們前面提及的,鞍點(diǎn)對(duì)SGD的訓(xùn)練造成很大困難。這里注意,SGD,動(dòng)量法和NAG在鞍點(diǎn)處很難打破對(duì)稱(chēng)性,盡管后面兩個(gè)算法最終設(shè)法逃離了鞍點(diǎn)。而Adagrad,RMSprop和Adadelta能夠快速想著梯度為負(fù)的方向移動(dòng),其中Adadelta走在最前面。
圖4:來(lái)源和全部動(dòng)畫(huà):Alec Radford
正如我們所看到的,自適應(yīng)學(xué)習(xí)速率的方法,即 Adagrad、 Adadelta、 RMSprop 和Adam,最適合這些場(chǎng)景下最合適,并在這些場(chǎng)景下得到最好的收斂性。 4.8 選擇使用哪種優(yōu)化算法?那么,我們應(yīng)該選擇使用哪種優(yōu)化算法呢?如果輸入數(shù)據(jù)是稀疏的,選擇任一自適應(yīng)學(xué)習(xí)率算法可能會(huì)得到最好的結(jié)果。選用這類(lèi)算法的另一個(gè)好處是無(wú)需調(diào)整學(xué)習(xí)率,選用默認(rèn)值就可能達(dá)到最好的結(jié)果。 總的來(lái)說(shuō),RMSprop是Adagrad的擴(kuò)展形式,用于處理在Adagrad中急速遞減的學(xué)習(xí)率。RMSprop與Adadelta相同,所不同的是Adadelta在更新規(guī)則中使用參數(shù)的均方根進(jìn)行更新。最后,Adam是將偏差校正和動(dòng)量加入到RMSprop中。在這樣的情況下,RMSprop、Adadelta和Adam是很相似的算法并且在相似的環(huán)境中性能都不錯(cuò)。Kingma等人[9]指出在優(yōu)化后期由于梯度變得越來(lái)越稀疏,偏差校正能夠幫助Adam微弱地勝過(guò)RMSprop。綜合看來(lái),Adam可能是最佳的選擇。 有趣的是,最近許多論文中采用不帶動(dòng)量的SGD和一種簡(jiǎn)單的學(xué)習(xí)率的退火策略。已表明,通常SGD能夠找到最小值點(diǎn),但是比其他優(yōu)化的SGD花費(fèi)更多的時(shí)間,與其他算法相比,SGD更加依賴(lài)魯棒的初始化和退火策略,同時(shí),SGD可能會(huì)陷入鞍點(diǎn),而不是局部極小值點(diǎn)。因此,如果你關(guān)心的是快速收斂和訓(xùn)練一個(gè)深層的或者復(fù)雜的神經(jīng)網(wǎng)絡(luò),你應(yīng)該選擇一個(gè)自適應(yīng)學(xué)習(xí)率的方法。 5 并行和分布式SGD當(dāng)存在大量的大規(guī)模數(shù)據(jù)和廉價(jià)的集群時(shí),利用分布式SGD來(lái)加速是一個(gè)顯然的選擇。SGD本身有固有的順序:一步一步,我們進(jìn)一步進(jìn)展到最小。SGD提供了良好的收斂性,但SGD的運(yùn)行緩慢,特別是對(duì)于大型數(shù)據(jù)集。相反,SGD異步運(yùn)行速度更快,但客戶端之間非最理想的通信會(huì)導(dǎo)致差的收斂。此外,我們也可以在一臺(tái)機(jī)器上并行SGD,這樣就無(wú)需大的計(jì)算集群。以下是已經(jīng)提出的優(yōu)化的并行和分布式的SGD的算法和框架。 5.1 Hogwild!Niu等人[14]提出稱(chēng)為Hogwild!的更新機(jī)制,Hogwild!允許在多個(gè)CPU上并行執(zhí)行SGD更新。在無(wú)需對(duì)參數(shù)加鎖的情況下,處理器可以訪問(wèn)共享的內(nèi)存。這種方法只適用于稀疏的輸入數(shù)據(jù),因?yàn)槊恳淮胃轮粫?huì)修改一部分參數(shù)。在這種情況下,該更新策略幾乎可以達(dá)到一個(gè)最優(yōu)的收斂速率,因?yàn)镃PU之間不可能重寫(xiě)有用的信息。 5.2 Downpour SGDDownpour SGD是SGD的一種異步的變形形式,在Google,Dean等人[6]在他們的DistBelief框架(TensorFlow的前身)中使用了該方法。Downpour SGD在訓(xùn)練集的子集上并行運(yùn)行多個(gè)模型的副本。這些模型將各自的更新發(fā)送給一個(gè)參數(shù)服務(wù)器,參數(shù)服務(wù)器跨越了多臺(tái)機(jī)器。每一臺(tái)機(jī)器負(fù)責(zé)存儲(chǔ)和更新模型的一部分參數(shù)。然而,因?yàn)楦北局g是彼此不互相通信的,即通過(guò)共享權(quán)重或者更新,因此可能會(huì)導(dǎo)致參數(shù)發(fā)散而不利于收斂。 5.3 延遲容忍SGD通過(guò)容忍延遲算法的開(kāi)發(fā),McMahan和Streeter[11]將AdaGraad擴(kuò)展成并行的模式,該方法不僅適應(yīng)于歷史梯度,同時(shí)適應(yīng)于更新延遲。該方法已經(jīng)在實(shí)踐中被證實(shí)是有效的。 5.4 TensorFlowTensorFlow[1]是Google近期開(kāi)源的框架,該框架用于實(shí)現(xiàn)和部署大規(guī)模機(jī)器學(xué)習(xí)模型。TensorFlow是基于DistBelief開(kāi)發(fā),同時(shí)TensorFlow已經(jīng)在內(nèi)部用來(lái)在大量移動(dòng)設(shè)備和大規(guī)模分布式系統(tǒng)的執(zhí)行計(jì)算。在2016年4月發(fā)布的分布式版本依賴(lài)于圖計(jì)算,圖計(jì)算即是對(duì)每一個(gè)設(shè)備將圖劃分成多個(gè)子圖,同時(shí),通過(guò)發(fā)送、接收節(jié)點(diǎn)對(duì)完成節(jié)點(diǎn)之間的通信。 5.5 彈性平均SGDZhang等人[22]提出的彈性平均SGD(Elastic Averaging SGD,EASGD)連接了異步SGD的參數(shù)客戶端和一個(gè)彈性力,即參數(shù)服務(wù)器存儲(chǔ)的一個(gè)中心變量。EASGD使得局部變量能夠從中心變量震蕩得更遠(yuǎn),這在理論上使得在參數(shù)空間中能夠得到更多的探索。經(jīng)驗(yàn)表明這種增強(qiáng)的探索能力通過(guò)發(fā)現(xiàn)新的局部最優(yōu)點(diǎn),能夠提高整體的性能。 6 優(yōu)化SGD的其他策略最后,我們介紹可以與前面提及到的任一算法配合使用的其他的一些策略,以進(jìn)一步提高SGD的性能。對(duì)于其他的一些常用技巧的概述可以參見(jiàn)[10]。 6.1 數(shù)據(jù)集的洗牌和課程學(xué)習(xí)總的來(lái)說(shuō),我們希望避免向我們的模型中以一定意義的順序提供訓(xùn)練數(shù)據(jù),因?yàn)檫@樣會(huì)使得優(yōu)化算法產(chǎn)生偏差。因此,在每一輪迭代后對(duì)訓(xùn)練數(shù)據(jù)洗牌是一個(gè)不錯(cuò)的主意。 另一方面,在很多情況下,我們是逐步解決問(wèn)題的,而將訓(xùn)練集按照某個(gè)有意義的順序排列會(huì)提高模型的性能和SGD的收斂性,如何將訓(xùn)練集建立一個(gè)有意義的排列被稱(chēng)為課程學(xué)習(xí)[3]。 Zaremba and Sutskever[20]只能使用課程學(xué)習(xí)訓(xùn)練LSTM來(lái)評(píng)估簡(jiǎn)單程序,并表明組合或混合策略比單一的策略更好,通過(guò)增加難度來(lái)排列示例。 6.2 批量歸一化為了便于學(xué)習(xí),我們通常用0均值和單位方差初始化我們的參數(shù)的初始值來(lái)歸一化。 隨著不斷訓(xùn)練,參數(shù)得到不同的程度的更新,我們失去了這種歸一化,隨著網(wǎng)絡(luò)變得越來(lái)越深,這種現(xiàn)象會(huì)降低訓(xùn)練速度,且放大參數(shù)變化。 批量歸一化[8]在每次小批量數(shù)據(jù)反向傳播之后重新對(duì)參數(shù)進(jìn)行0均值單位方差標(biāo)準(zhǔn)化。通過(guò)將模型架構(gòu)的一部分歸一化,我們能夠使用更高的學(xué)習(xí)率,更少關(guān)注初始化參數(shù)。批量歸一化還充當(dāng)正則化的作用,減少(有時(shí)甚至消除)Dropout的必要性。 6.3 Early stopping如Geoff Hinton所說(shuō):“Early Stopping是美麗好免費(fèi)午餐”(NIPS 2015 Tutorial slides)。你因此必須在訓(xùn)練的過(guò)程中時(shí)常在驗(yàn)證集上監(jiān)測(cè)誤差,在驗(yàn)證集上如果損失函數(shù)不再顯著地降低,那么應(yīng)該提前結(jié)束訓(xùn)練。 6.4 梯度噪音Neelakantan等人[12]在每個(gè)梯度更新中增加滿足高斯分布
高斯分布的方差需要根據(jù)如下的策略退火:
他們指出增加了噪音,使得網(wǎng)絡(luò)對(duì)不好的初始化更加魯棒,同時(shí)對(duì)深層的和復(fù)雜的網(wǎng)絡(luò)的訓(xùn)練特別有益。他們猜測(cè)增加的噪音使得模型更優(yōu)機(jī)會(huì)逃離當(dāng)前的局部最優(yōu)點(diǎn),以發(fā)現(xiàn)新的局部最優(yōu)點(diǎn),這在更深層的模型中更加常見(jiàn)。 7 總結(jié)在這篇博客文章中,我們初步研究了梯度下降的三個(gè)變形形式,其中,小批量梯度下降是最受歡迎的。 然后我們研究了最常用于優(yōu)化SGD的算法:動(dòng)量法,Nesterov加速梯度,Adagrad,Adadelta,RMSprop,Adam以及不同的優(yōu)化異步SGD的算法。 最后,我們已經(jīng)考慮其他一些改善SGD的策略,如洗牌和課程學(xué)習(xí),批量歸一化和early stopping。 參考文獻(xiàn)
|
|
來(lái)自: 無(wú)名小卒917 > 《算法》