神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)的目的是找到使損失函數(shù)的值盡可能小的參數(shù)。這是尋找最優(yōu)參數(shù)的問(wèn)題,解決這個(gè)問(wèn)題的過(guò)程稱(chēng)為最優(yōu)化(optimization)。遺憾的是,神經(jīng)網(wǎng)絡(luò)的最優(yōu)化問(wèn)題非常難。這是因?yàn)閰?shù)空間非常復(fù)雜,無(wú)法輕易找到最優(yōu)解(無(wú)法使用那種通過(guò)解數(shù)學(xué)式一下子就求得最小值的方法)。而且,在 深度神經(jīng)網(wǎng)絡(luò)中,參數(shù)的數(shù)量非常龐大,導(dǎo)致最優(yōu)化問(wèn)題更加復(fù)雜。
為了找到最優(yōu)參數(shù),我們將參數(shù)的梯度(導(dǎo)數(shù))作為了線(xiàn)索。 使用參數(shù)的梯度,沿梯度方向更新參數(shù),并重復(fù)這個(gè)步驟多次,從而逐漸靠近最優(yōu)參數(shù),這個(gè)過(guò)程稱(chēng)為隨機(jī)梯度下降法(stochastic gradient descent),簡(jiǎn)稱(chēng)SGD。SGD是一個(gè)簡(jiǎn)單的方法,不過(guò)比起胡亂地搜索參數(shù)空間,也算是“聰明”的方法。
打個(gè)比方: 有一個(gè)性情古怪的探險(xiǎn)家。他在廣袤的干旱地帶旅行,堅(jiān)持尋找幽 深的山谷。他的目標(biāo)是要到達(dá)最深的谷底(他稱(chēng)之為“至深之地”)。這 也是他旅行的目的。并且,他給自己制定了兩個(gè)嚴(yán)格的“規(guī)定”:一個(gè) 是不看地圖;另一個(gè)是把眼睛蒙上。因此,他并不知道最深的谷底在這個(gè)廣袤的大地的何處,而且什么也看不見(jiàn)。在這么嚴(yán)苛的條件下,這位 探險(xiǎn)家如何前往“至深之地”呢?他要如何邁步,才能迅速找到“至深 之地”呢?
尋找最優(yōu)參數(shù)時(shí),我們所處的狀況和這位探險(xiǎn)家一樣,是一個(gè)漆黑的世界。我們必須在沒(méi)有地圖、不能睜眼的情況下,在廣袤、復(fù)雜的地形中尋找 “至深之地”。大家可以想象這是一個(gè)多么難的問(wèn)題。
在這么困難的狀況下,地面的坡度顯得尤為重要。探險(xiǎn)家雖然看不到周 圍的情況,但是能夠知道當(dāng)前所在位置的坡度(通過(guò)腳底感受地面的傾斜狀況)。 于是,朝著當(dāng)前所在位置的坡度最大的方向前進(jìn),就是SGD的策略。勇敢的探險(xiǎn)家心里可能想著只要重復(fù)這一策略,總有一天可以到達(dá)“至深之地”。
SGD
用數(shù)學(xué)式將SGD可以寫(xiě)成如下形式:
為需要更新的權(quán)重參數(shù),?L?W\frac{\partial L}{\partial W}?W?L為損失函數(shù)LLL關(guān)于WWW的梯度。η\etaη表示學(xué)習(xí)率,一般會(huì)取0.01或0.001這些事先決定好的值。式中的←\leftarrow←表示用右邊的值更新左邊的值。
缺點(diǎn):
(1)SGD 因?yàn)楦卤容^頻繁,會(huì)造成 cost function 有嚴(yán)重的震蕩。
SGD呈 “之”字形移動(dòng)。這是一個(gè)相當(dāng)?shù)托У穆窂健R簿褪钦f(shuō), SGD的缺點(diǎn)是, 如果函數(shù)的形狀非均向(anisotropic),比如呈延伸狀,搜索的路徑就會(huì)非常低效。因此,我們需要比單純朝梯度方向前進(jìn)的SGD更聰 明的方法。 SGD低效的根本原因是, 梯度的方向并沒(méi)有指向最小值的方向。
(2)容易收斂到局部最優(yōu),并且容易被困在鞍點(diǎn)。
Momentum
Momentum算法借用了物理中的動(dòng)量概念,它模擬的是物體運(yùn)動(dòng)時(shí)的慣性,即更新的時(shí)候在一定程度上保留之前更新的方向,同時(shí)利用當(dāng)前batch的梯度微調(diào)最終的更新方向。這樣一來(lái),可以在一定程度上增加穩(wěn)定性,從而學(xué)習(xí)地更快,并且還有一定擺脫局部最優(yōu)的能力:
和前面的SGD一樣, WWW表示要更新的權(quán)重參數(shù), 表示損失函數(shù)關(guān)于WWW的梯度,ηηη表示學(xué)習(xí)率。 這里新出現(xiàn)了一個(gè)變量vvv,對(duì)應(yīng)物理上的速度。 式(1)表示了物體在梯度方向上受力,在這個(gè)力的作用下,物體的速度增加這一物理法則。Momentum方法給人的感覺(jué)就像是小球在地面上滾動(dòng)。
式(1)中有αvαvαv這一項(xiàng)。在物體不受任何力時(shí),該項(xiàng)承擔(dān)使物體逐漸減速的任務(wù)(α設(shè)定為0.9之類(lèi)的值),對(duì)應(yīng)物理上的地面摩擦或空氣阻力。
和SGD相比, “之”字形的“程度”減輕了。這是因?yàn)殡m然x軸方向上受到的力非常小,但是一直在同一方向上受力,所以朝同一個(gè)方向會(huì)有一定的加速。反過(guò)來(lái),雖然y軸方向上受到的力很大,但是因?yàn)榻换サ厥艿秸较蚝头捶较虻牧Γ鼈儠?huì)互相抵消,所以y軸方向上的速度不穩(wěn)定。因此,和SGD時(shí)的情形相比, 可以更快地朝x軸方向靠近,減弱“之”字形的變動(dòng)程度。
AdaGrad
在神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)中,學(xué)習(xí)率(數(shù)學(xué)式中記為ηηη)的值很重要。學(xué)習(xí)率過(guò)小, 會(huì)導(dǎo)致學(xué)習(xí)花費(fèi)過(guò)多時(shí)間;反過(guò)來(lái),學(xué)習(xí)率過(guò)大,則會(huì)導(dǎo)致學(xué)習(xí)發(fā)散而不能 正確進(jìn)行。
在關(guān)于學(xué)習(xí)率的有效技巧中,有一種被稱(chēng)為學(xué)習(xí)率衰減(learning rate decay) 的方法,即隨著學(xué)習(xí)的進(jìn)行,使學(xué)習(xí)率逐漸減小。實(shí)際上,一開(kāi)始“多” 學(xué),然后逐漸“少”學(xué)的方法,在神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)中經(jīng)常被使用。
逐漸減小學(xué)習(xí)率的想法,相當(dāng)于將“全體”參數(shù)的學(xué)習(xí)率值一起降低。 而AdaGrad進(jìn)一步發(fā)展了這個(gè)想法,針對(duì)“一個(gè)一個(gè)”的參數(shù),賦予其“定 制”的值。
AdaGrad會(huì)為參數(shù)的每個(gè)元素適當(dāng)?shù)卣{(diào)整學(xué)習(xí)率, 與此同時(shí)進(jìn)行學(xué)習(xí) (AdaGrad的Ada來(lái)自英文單詞Adaptive,即“適當(dāng)?shù)摹钡囊馑迹?。下面,讓我們用?shù)學(xué)式表示AdaGrad的更新方法。
其中,hhh為梯度累積變量,它保存了以前的所有梯度值的平方和,hhh的初始值為0。?\bigodot?表示對(duì)應(yīng)矩陣元素的乘法,η\etaη表示學(xué)習(xí)率,δ\deltaδ為很小的一個(gè)數(shù)值,是為了防止分母為0。然后,在更新參數(shù)時(shí),通過(guò)乘以 1h√\frac{1}{\sqrt h}h1,就可以調(diào)整學(xué)習(xí)的尺度。這意味著, 參數(shù)的元素中變動(dòng)較大(被大幅更新)的元素的學(xué)習(xí)率將變小。也就是說(shuō), 可以按參數(shù)的元素進(jìn)行學(xué)習(xí)率衰減,使變動(dòng)大的參數(shù)的學(xué)習(xí)率逐漸減小。
由圖可知,函數(shù)的取值高效地向著最小值移動(dòng)。由于y軸方 向上的梯度較大,因此剛開(kāi)始變動(dòng)較大,但是后面會(huì)根據(jù)這個(gè)較大的變動(dòng)按 比例進(jìn)行調(diào)整,減小更新的步伐。因此,y軸方向上的更新程度被減弱,“之” 字形的變動(dòng)程度有所衰減。
RMSProp
AdaGrad會(huì)記錄過(guò)去所有梯度的平方和。因此,學(xué)習(xí)越深入,更新 的幅度就越小。實(shí)際上,如果無(wú)止境地學(xué)習(xí),更新量就會(huì)變?yōu)?0, 完全不再更新。為了改善這個(gè)問(wèn)題,可以使用 RMSProp 方法。RMSProp方法并不是將過(guò)去所有的梯度一視同仁地相加,而是逐漸 地遺忘過(guò)去的梯度,在做加法運(yùn)算時(shí)將新梯度的信息更多地反映出來(lái)。 這種操作從專(zhuān)業(yè)上講,稱(chēng)為“指數(shù)移動(dòng)平均”,呈指數(shù)函數(shù)式地減小過(guò)去的梯度的尺度。
其中ppp一般可取0.9,其它參數(shù)和AdaGrad一致。
Adam
Momentum參照小球在碗中滾動(dòng)的物理規(guī)則進(jìn)行移動(dòng),AdaGrad為參數(shù)的每個(gè)元素適當(dāng)?shù)卣{(diào)整更新步伐。如果將這兩個(gè)方法融合在一起會(huì)怎么樣呢?這就是Adam方法的基本思路。直觀地講,Adam就是融合了Momentum和AdaGrad的方法。通過(guò)組合前面兩個(gè)方法的優(yōu)點(diǎn),有望實(shí)現(xiàn)參數(shù)空間的高效搜索。此外,進(jìn)行超參數(shù)的“偏置校正”也是Adam的特征。Adam結(jié)合了Adagrad善于處理稀疏梯度和RMSprop善于處理非平穩(wěn)目標(biāo)的優(yōu)點(diǎn)。
可以看出,直接對(duì)梯度的矩估計(jì)對(duì)內(nèi)存沒(méi)有額外的要求,而且可以根據(jù)梯度進(jìn)行動(dòng)態(tài)調(diào)整,而?m?tn?t√+δ-\frac{\hat m_t}{\sqrt {\hat n_t} + \delta }?n^t+δm^t對(duì)學(xué)習(xí)率η\etaη形成了一個(gè)動(dòng)態(tài)約束,而且有明確的范圍。
如圖,基于 Adam 的更新過(guò)程就像小球在碗中滾動(dòng)一樣。雖然 Momentun 也有類(lèi)似的移動(dòng),但是相比之下, Adam的小球左右搖晃的程度有所減輕。這得益于學(xué)習(xí)的更新程度被適當(dāng)?shù)卣{(diào)整了。
-
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5560瀏覽量
122750
原文標(biāo)題:【知識(shí)點(diǎn)】長(zhǎng)文超詳講解深度學(xué)習(xí)中你總是掌握不牢的若干知識(shí)點(diǎn)
文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語(yǔ)言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
一文詳解機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的區(qū)別

解析深度學(xué)習(xí):卷積神經(jīng)網(wǎng)絡(luò)原理與視覺(jué)實(shí)踐
基于深度學(xué)習(xí)的異常檢測(cè)的研究方法
深度學(xué)習(xí)技術(shù)的開(kāi)發(fā)與應(yīng)用
C語(yǔ)言深度解析
一文讀懂深度學(xué)習(xí)與機(jī)器學(xué)習(xí)的差異

模型驅(qū)動(dòng)深度學(xué)習(xí)的標(biāo)準(zhǔn)流程與學(xué)習(xí)方法解析

一文解讀深度學(xué)習(xí)的發(fā)展
解析人工智能中深度學(xué)習(xí)的經(jīng)典算法

人工智能之深度強(qiáng)化學(xué)習(xí)DRL的解析
一文讀懂何為深度學(xué)習(xí)1

一文讀懂何為深度學(xué)習(xí)3

評(píng)論