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

姓名:張志文 學(xué)號:19021210649
【嵌牛導(dǎo)讀】
神經(jīng)網(wǎng)絡(luò)中有很多的優(yōu)化算法
【嵌牛鼻子】
神經(jīng)網(wǎng)絡(luò);優(yōu)化算法
【嵌牛提問】
神經(jīng)網(wǎng)絡(luò)中的優(yōu)化算法有哪些?
【嵌牛正文】

首先,我們慣用的方法是“梯度下降法”犀填,稱為Gradient Decent蠢壹,就是把所有的訓(xùn)練樣本丟進去訓(xùn)練一次之后嗓违,把W和b更新一次,然后重復(fù)這個過程图贸,具體重復(fù)多少次就看我們的“迭代次數(shù)”是多少蹂季。

【為了下面敘述的方便,我們稱“把所有訓(xùn)練樣本過一遍”為一個epoch疏日,另外 gradient decent也就是梯度下降我們就簡稱為GD偿洁。】

我們傳統(tǒng)的GD沟优,也可以稱為Batch GD涕滋,這個batch就是指一整批,就是指我們所有樣本挠阁。

今天主要介紹的有如下方法宾肺,均是對傳統(tǒng)batch gradient decent的改進:

  1. Mini-batch GD(小批量梯度下降法)
  2. GD with Momentum(動量法)
  3. Adam算法(Momentum與RMSprop算法結(jié)合)

一、Mini-batch GD

mini-batch是相對于batch來說的侵俗,后者我們前面說過锨用,是走完一個epoch才把參數(shù)更新一次,這樣其實很慢隘谣。

樣本數(shù)量不多還好增拥,但是樣本多了就會明顯耗費大量時間,比如5百萬樣本,這在深度學(xué)習(xí)里面是很平常的事情掌栅,但是使用傳統(tǒng)的方法秩仆,即batch GD,意味著我們需要把5,000,000個樣本跑一遍才能更新一次W和b猾封。

mini-batch就是為了解決這個問題的逗概,我們可以把5百萬的樣本分成一塊一塊的,比如1000個樣本一塊忘衍,稱為一個mini-batch逾苫,這樣我們就有5000個mini-batch。我們訓(xùn)練的時候枚钓,跑完一個mini-batch就把W和b更新一次铅搓,這樣的的話,在一個epoch中搀捷,我們就已經(jīng)把參數(shù)更新了5000次了星掰!雖然每一步?jīng)]有batch GD的一步走的準,但是我5000步加起來嫩舟,怎么樣也比你走一步的效果好的多氢烘,因此可以加快訓(xùn)練速度,更快到達最值點家厌。

這就是mini-batch GD方法播玖。

對于不同的mini-batch的大小(size)饭于,也有不一樣的效果:

  • size=樣本數(shù) —> Batch GD
  • size=1 —> Stochastic GD(隨機梯度下降)

有人可能會問蜀踏,那size=1的時候,也就是來一個樣本就更新一次掰吕,豈不是會更快果覆?

不是的,它會有兩個問題:

  1. 震動太劇烈殖熟,誤差會灰常大局待,可能根本無法到達最低點
  2. 每次只計算一個樣本,就失去了我們前面提到的“Vectorization(矢量化)”的優(yōu)勢菱属,因此計算效率反而不高

因此钳榨,我們通常取一個中間的值,這樣照皆,既利用了Vectorization來加速計算重绷,又可以在一個epoch中多次更新,速度就可以最快膜毁。

有意思的是昭卓,據(jù)吳恩達說愤钾,mini-batch size 通常取2的指數(shù),主要是16候醒,32能颁,64,128倒淫,256伙菊,512,1024這幾個值敌土,因為計算機是二進制镜硕,這樣的數(shù)字計算起來效率會更高一些。

口說無憑返干,現(xiàn)在我做個實驗驗證一下是不是mini-batch 更好:

實驗條件:

三層神經(jīng)網(wǎng)絡(luò)兴枯,learning-rate=0.0007,batch size=300矩欠,mini-batch size=64财剖,迭代次數(shù)=40000

數(shù)據(jù)集形狀如下:

image

猜想:

①mini-batch GD效果要比batch GD更好

②mini-batch GD的cost曲線會比batch波動更大,但是最終cost卻更低

實驗代碼和過程就不放了癌淮,直接看我們運行的結(jié)果

batch GD:

image
image

耗時105s躺坟,準確率只有0.76,看圖明顯就知道還沒訓(xùn)練好乳蓄。

再看mini-batch GD:

image
image

哇塞咪橙,效果不錯!準確率提高到了91.7%栓袖,而且從cost曲線上看匣摘,確實如我所料有很大的波動店诗,但是最終的cost顯著低于batch GD裹刮,因此學(xué)習(xí)的模型就更好。

出乎我意料的是庞瘸,時間居然縮短了一半以上捧弃!一開始我估計時間應(yīng)該差不多,因為我們迭代的40000次相當(dāng)于40000個epoch擦囊,我前面只是說一個epoch中mini-batch更新的次數(shù)更多违霞,沒想到居然也更快(因為我覺得一個epoch中的操作變多了,可能會變慢一點)瞬场。

想了想买鸽,覺得應(yīng)該是這樣:因為mini-batch在一個epoch中走的步子多,因此可以迅速地找到“最佳下坡路”贯被,找到了之后眼五,就跟坐滑滑梯一樣妆艘,越溜越快,因此比batch GD更快看幼。

二批旺、Momentum 動量法

上面的mini-batch GD給了我們一些驚喜了,但是似乎還可以更好诵姜,畢竟還有不少點都分類錯誤汽煮。

主要的原因就是因為,使用mini-batch之后棚唆,穩(wěn)定性降低了暇赤,在梯度下降的時候會有較為劇烈的振動,這樣可能導(dǎo)致在最低點附近瞎晃悠宵凌,因此效果會受影響翎卓。

動量法就是解決mini-batch的這個問題的,它讓梯度下降不那么抖動摆寄。

看看Momentum的參數(shù)更新過程:

image

如果你熟悉神經(jīng)網(wǎng)絡(luò)梯度下降的過程失暴,就知道,我們一般的梯度下降的更新過程(以W為例)是:W = W -αdW微饥。

動量法相當(dāng)于多了一個V_dW逗扒,它考慮了前面若干個dW,(實際上欠橘,V_dW約等于前1/(1-β)個dW的平均值矩肩,數(shù)學(xué)上稱為“指數(shù)加權(quán)平均”)這樣,dW的方向就會受到前面若干個dW的沖擊肃续,于是整體就變得更平緩黍檩。

可能畫個示意圖才能更好地說明吧:

image

mini-batch是上下起伏不定的箭頭,但是把若干個的方向平均一下始锚,就變得平緩多了刽酱,相當(dāng)于抵消掉了很多的方向相反的誤差。

我們也在做實驗驗證一下瞧捌,實驗條件跟上面一樣棵里,我們在mini-batch size=64的基礎(chǔ)上,使用Momentum方法來更新參數(shù)姐呐,得到的效果如下:

image

這個超參數(shù)β調(diào)了我半天殿怜,最開始0.9,然后0.95曙砂,再0.99头谜,再0.999,終于有了上面的這么一點點的提升鸠澈,準確率到了92%柱告∽┲可見momentum有一些效果,但是此處還不太明顯末荐。

三侧纯、Adam算法

這個方法,對momentum再進一步改進甲脏,結(jié)合了RMSprop算法(是另一種減小梯度下降振動的方法)眶熬,更新過程如下:

image

不僅有了我們剛剛的V_dW, 還有一個S_dW(就把它理解為跟V_dW的原理類似就行了),然后块请,再對這兩個玩意兒都進行了一個修正(corrected)娜氏,最后參數(shù)更新是綜合了這二者,結(jié)果效果就出奇的好:

image
image

準確率有了明顯提升墩新,達到94%贸弥,擬合的形狀明顯是那么一回事了。

對于Momentum的效果不那么明顯的現(xiàn)在海渊,吳恩達的解釋是在learning-rate太小以及數(shù)據(jù)集比較簡單的情況下绵疲,momentum發(fā)揮不了太大的作用,因此本實驗中我們看不出驚人的效果臣疑。但在其他場景下也許就有很好的改善了盔憨。
當(dāng)然,既然有了Adam算法讯沈,我們自然會使用Adam這個最佳實踐了郁岩。

總結(jié)一下:

  • Mini-batch GD比傳統(tǒng)GD效果更好,訓(xùn)練更快

  • Momentum動量法可以減小Mini-batch帶來的振動

  • 梯度下降的最佳優(yōu)化方法是Adam算法

  • Adam算法中的超參數(shù)β1和β2以及l(fā)earning-rate也會顯著影響模型缺狠,因此需要我們反復(fù)調(diào)試

本文內(nèi)容為轉(zhuǎn)載问慎,版權(quán)歸作者所有

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市挤茄,隨后出現(xiàn)的幾起案子如叼,更是在濱河造成了極大的恐慌,老刑警劉巖驮樊,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件薇正,死亡現(xiàn)場離奇詭異,居然都是意外死亡囚衔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門雕沿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來练湿,“玉大人,你說我怎么就攤上這事审轮》拾ィ” “怎么了辽俗?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長篡诽。 經(jīng)常有香客問我崖飘,道長,這世上最難降的妖魔是什么杈女? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任朱浴,我火速辦了婚禮,結(jié)果婚禮上达椰,老公的妹妹穿的比我還像新娘翰蠢。我一直安慰自己,他們只是感情好啰劲,可當(dāng)我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布梁沧。 她就那樣靜靜地躺著,像睡著了一般蝇裤。 火紅的嫁衣襯著肌膚如雪廷支。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天栓辜,我揣著相機與錄音酥泞,去河邊找鬼。 笑死啃憎,一個胖子當(dāng)著我的面吹牛芝囤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播辛萍,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼悯姊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了贩毕?” 一聲冷哼從身側(cè)響起悯许,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎辉阶,沒想到半個月后先壕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡谆甜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年垃僚,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片规辱。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡谆棺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出罕袋,到底是詐尸還是另有隱情改淑,我是刑警寧澤碍岔,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站朵夏,受9級特大地震影響蔼啦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜仰猖,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一捏肢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧亮元,春花似錦猛计、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至煮甥,卻和暖如春盗温,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背成肘。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工卖局, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人双霍。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓砚偶,卻偏偏與公主長得像,于是被迫代替她去往敵國和親洒闸。 傳聞我的和親對象是個殘疾皇子染坯,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,974評論 2 355

推薦閱讀更多精彩內(nèi)容