DeepLearning.ai學習筆記(二)改善深層神經網絡:超參數調試、正則化以及優化--Week2優化算法

轉載自https://www.cnblogs.com/marsggbo/p/7577362.html

1. Mini-batch梯度降低法

介紹

假設咱們的數據量很是多,達到了500萬以上,那麼此時若是按照傳統的梯度降低算法,那麼訓練模型所花費的時間將很是巨大,因此咱們對數據作以下處理:html

如圖所示,咱們以1000爲單位,將數據進行劃分,令x{1}={x(1),x(2)x(5000)}, 通常地用x{t},y{t}來表示劃分後的mini-batch。python

注意區分該系列教學視頻的符號標記:算法

  • 小括號() 表示具體的某一個元素,指一個具體的值,例如x(i)
    網絡

  • 中括號[] 表示神經網絡中的某一層,例如Z[l]
    函數

  • 大括號{} 表示將數據細分後的一個集合,例如x{1}={x(1),x(2)x(1000)}
    學習

算法步驟


假設咱們有5,000,000個數據,每1000做爲一個集合,計入上面所提到的x{1}={x(1),x(2)x(1000)},
優化

  • 1)因此須要迭代運行5000次神經網絡運算。
for i in range(5000):
  • 2)每一次迭代其實與以前筆記中所提到的計算過程同樣,首先是前向傳播,可是每次計算的數量是1000atom

  • 3)計算損失函數,若是有正則化,則記得加上正則項
  • 4)反向傳播spa

注意,mini-batch相比於以前一次性計算全部數據不只速度快,並且反向傳播須要計算5000次,因此效果也更好。code

2. 理解mini-batch梯度降低法

如上面所提到的,咱們以1000位單位對數據進行劃分,可是這只是爲了更方便說明問題才這樣劃分的,那麼咱們在實際操做中應該如何劃分呢?

首先考慮兩個極端狀況:

  • mini-batch size = m
    此時即爲Batch gradient descent(x{t},y{t})=(X,Y)

  • mini-batch size = 1
    此時即爲Stochastic gradient descent(x{t},y{t})=(x(i),y(i))(x{t},y{t})=(x(i),y(i))

如圖示,藍色收斂曲線表示mini-batch size=m,比較耗時,可是最後可以收斂到最小值;而紫色收斂曲線表示mini-batch size=1,雖然速度可能較快,可是收斂曲線十分曲折,而且最終不會收斂到最小點,而是在其附近來回波動。

說了這麼多,那麼mini-batch size該如何選擇呢?如下是選擇的原則:

  • 若是數據量比較小(m<2000),可使用batch gradient descent。通常來講mini-batch size取2的次方比較好,例如64,128,256,512等,由於這樣與計算機內存設置類似,運算起來會更快一些。

3. 指數加權平均

爲了理解後面會提到的各類優化算法,咱們須要用到指數加權平均,在統計學中也叫作指數加權移動平均(Exponentially Weighted Moving Averages)

首先咱們假設有一年的溫度數據,以下圖所示


咱們如今須要計算出一個溫度趨勢曲線,計算方法以下:

V0=0

V1=βV0+(1β)θ1

……

Vt=βVt1+(1β)θt

上面的θtθt表示第t天的溫度,β是可調節的參數,Vt表示11β天的每日溫度。

  • β=0.9時,表示平均了過去十天的溫度,且溫度趨勢曲線如圖中紅線所示

  • β=0.98時,表示平均了過去50天的溫度,溫度趨勢曲線如圖中綠線所示。此時綠線相比較紅線要平滑一些,是由於對過去溫度的權重更大,因此當每天氣溫度的影響下降,在溫度變化時,適應得更緩慢一些。

  • β=0.5時,溫度趨勢曲線如圖中黃線所示

4. 理解指數加權平均

咱們將上面的公式Vt=βVt1+(1β)θt展開能夠獲得
(假設β=0.9)

 

Vt=0.1θt+0.10.9θt1+0.10.92θt2+

 

能夠看到在計算第t天的加權溫度時,也將以前的溫度考慮進來,可是都有一個衰減因子β,而且隨着天數的增長,衰減幅度也不斷增長。(有點相似於卷積計算)

5. 指數加權平均的誤差修正

爲何須要修正呢?咱們仔細分析一下就知道了

首先咱們假設的是β=0.98,V0=0,而後由Vt=βVt1+(1β)θt可知

V1=0.98V0+0.02θ1=0.02θ1

V2=0.98V1+0.02θ2=0.0196θ1+0.02θ2

假設θ1=40,那麼V1=0.0240=0.8,這顯然相差太大,同理對於後面的溫度的計算也只會是變差愈來愈大。因此咱們須要進行誤差修正,具體方法以下:

 

Vt=βVt1+(1β)θt1βt

 

注意!!!上面公式中的 Vt1是未修正的值

爲方便說明,令β=0.98,θ1=40,θ2=39,則

t=1,θ1=40時,V1=0.024010.98=40,哇哦~有沒有很巧的感受,再看
t=2,θ2=39時,V2=0.98Vt1+0.02θ210.982=0.98(0.02θ1)+0.023910.982=39.49

因此,記住你若是直接用修正後的Vt1值代入計算就大錯特錯了

6. 動量梯度降低法

首先介紹一下通常的梯度算法收斂狀況是這樣的


能夠看到,在前進的道路上十分曲折,走了很多彎路,在縱向咱們但願走得慢一點,橫向則但願走得快一點,因此纔有了動量梯度降低算法

Momentum算法的第t次迭代:

  • 計算出dw,db
  • 這個計算式子與上一屆提到的指數加權平均有點相似,即
    Vdw=βVdw+(1β)dw
    Vdb=βVdb+(1β)db
  • W=WαVdw,b=bαVdb

最終獲得收斂的效果以下圖的紅色曲線所示。

該算法中涉及到的超參數有兩個,分別是 αβ,其中通常β=0.9是比較常取的值。

7. RMSprop

該算法全稱叫Root Mean Square Prop(均方根傳播)

這一節和上一節講的都比較歸納,不是很深刻,因此就直接把算法記錄下來吧。

在第t次迭代:

  • 計算該次mini-batch的dw,db
  • Sdw=βSdw+(1β)dw2
    Sdb=βSdb+(1β)db2
  • w:=wαdwSdw√
    b:=bαdbSdb√

收斂效果(原諒色)

8. Adam優化算法

Adam實際上是MomentumRMSprop兩個算法的結合,具體算法以下:

  • 初始化Vdw=0,Vdb=0Sdw=0Sdw=0
  • 在第t次迭代
    • 計算出dw,db
    • Vdw=β1Vdw+(1β1)dw,Vdb=β1Vdb+(1β1)db
      Sdw=β2Sdw+(1β2)dw2,Sdb=β2Sdb+(1β2)db2
    • Vcorrecteddw=Vdw1βt1Vdwcorrected=Vdw1−β1t,Vcorrecteddb=Vdb1βt1Vdbcorrected=Vdb1−β1t
      Scorrecteddw=Sdw1βt2Sdwcorrected=Sdw1−β2t,Scorrecteddb=Sdb1βt2Sdbcorrected=Sdb1−β2t
    • W=WαVcorrecteddwScorrecteddw√+εW=W−αVdwcorrectedSdwcorrected+ε,b=bαVcorrecteddbScorrecteddb√+εb=b−αVdbcorrectedSdbcorrected+ε

該算法中的超參數有α,β1,β2,εα,β1,β2,ε,通常來講β1=0.9,β2=0.999,ε=108β1=0.9,β2=0.999,ε=10−8

9. 學習率衰減

以前算法中提到的學習率α都是一個常數,這樣有可能會一個問題,就是剛開始收斂速度剛恰好,但是在後面收斂過程當中學習率偏大,致使不能徹底收斂,而是在最低點來回波動。因此爲了解決這個問題,須要讓學習率可以隨着迭代次數的增長進行衰減,常見的計算公式有以下幾種:

  • Learning rate decay

 

α=11+decayrateepochnumα0α=11+decayrate∗epochnumα0

 

decay_rate:衰減率
epoch_num: 迭代次數

舉個栗子:
假設α0α0初始化爲0.2,decay_rate=1,則α的衰減過程以下:

Epoch α
1 0.1
2 0.067
3 0.05
…… ……
  • 其餘衰減算法
    • 指數衰減:α=0.9epochnumα0α=0.9epochnumα0
    • α=Kepochnum√α0α=Kepochnumα0或α=ktα0α=ktα0(這個t表示mini-batch的第t組數據)
    • 離散衰減,每次迭代後變爲上一次迭代的一半。

10. 局部最優問題


圖左中有不少局部最優勢。
圖右用青色標記出來的點稱爲鞍點(saddle point),由於和馬鞍類似,因此稱爲鞍點。

鞍點相比於局部最優勢要更加棘手,由於從橫向上看彷佛是最低點,可是縱向上看卻不是最低點,因此收斂過程有點緩慢,緣由以下:


橫向收斂只能沿着紅線方向收斂,直到鞍點,而到了鞍點後才能往兩邊收斂,因此收斂的比較緩慢。

可是momentumAdam等算法由於可以加速學習,因此收斂速率更快,可以更快地收斂。

相關文章
相關標籤/搜索