深度學習——優化算法[6]


目錄

  • mini-batch
  • 指數加權平均
  • 優化梯度下降法:momentum、RMSprop、Adam
  • 學習率衰減
  • 局部最優問題

一、mini-batch

mini-batch:把訓練集划分成小點的子集

表示法 $x^{\{1\}}$ $x^{(1)}$ $x^{[1]}$
意義 第一個mini-batch 第一個樣本 第一層的輸入
  • 為什么用mini-batch:當數據集樣本數較多時,需要對整個數據計算完成后才能進行梯度下降,速度較慢
  • epoch:一代,表示遍歷了整個數據集(而不是一個子集)
  • 使用mini-batch的梯度下降方法過程:每次以當前的一個mini-batch作為輸入數據

for $t = 1,...,5000$

  //forward prop on 第t個minibatch,輸入為$X^{\{t\}}$

  for $i=1...l$ //正向計算,共l層

    $Z^{[i]}=W^iA^{[i-1]}+b^{[i]}$

    $A^{[i]}=g^{[i]}(Z^{[i]}$

      //$A^{l}$為最后的輸出結果

     計算該mini-batch的cost $J^{\{t\}}=\frac{1}{1000}\sum \mathcal{L}(\widehat{y}^{j},y^{j})$

  反向計算求導$J^{\{t\}}$

  更新參數$W$$b$,$W^{[l]}:=W^{[l]}-\alpha dW^{[l]}$ $b^{[l]}:=b^{[l]}-\alpha db^{[l]}$

  •  使用mini-batch的成本函數變化趨勢:並不是每一次都下降,但是整體趨勢是下降

  • 選擇min-batch的大小

太大的話每次迭代耗時太長,太小的話每次只處理少量效率低(失去了向量加速的優勢)

當數據集比較小(小於2000)時,可以直接使用batch

當數據集比較大時,一般可以用的mini-batch大小:64,128,256, 512...(與CPU/GPU內存相匹配)

二、指數加權平均(指數加權移動平均)exponentially weighted average

例:倫敦的溫度變化

$\theta_{1}=40^{\circ}F$

$\theta_{2}=49^{\circ}F$

$\theta_{3}=45^{\circ}F$

 ...

求解$v_{t}$:前$t$天的溫度加權平均值。雖然$v_{t}$包含1~$t$天的溫度,但是越接近第$t$天的權重會更大一點,而較前的就會接近0

$v_{0}=0$

$v_{1}=\beta v_{0} + (1-\beta )\theta_{1}$

$v_{2}=\beta v_{1} + (1-\beta )\theta_{2}$

...

$v_{t}=\beta v_{t-1} + (1-\beta )\theta_{t}$

  $=\beta^{t}\theta_{0}+\beta^{t-1}(1-\beta)\theta_{1}$

    $+\beta^{t-2}(1-\beta)\theta_{2}+...+(1-\beta)\theta_{t}$

藍色點為原始數據,其它為不同的$\beta$取值時,加權平均結果

  • 應該平均多少天的溫度?當某天溫度的權重很低時就不用再考慮

$y=(1-\varepsilon)^{\frac{1}{\varepsilon}}$單調遞減。當$\varepsilon=0.9$時,$y \approx \frac{1}{e}$。所以,當計算到第$\frac{1}{e}\approx 0.3$天時,溫度會下降到當天的1/3以下,可忽略。因此,可以認為$v_{t}$是$\frac{1}{1-\beta}$天的溫度加權平均值

  • 做偏差修正bias correct

為什么需要:開始的時候設置$v_0=0$,容易導致前期的預測會比較實際的小很多,估計不准確

修正方法:$v'_{t}=\frac{v_{t}}{1-\beta^{t}}$,用$v'_{t}$來代替$v_{t}$。前期的值可以變大一些,而后期時$t$較大時,$\beta^{t}$趨於0,$v'_{t}$也就趨於$v_{t}$

下圖中紫線為$v_{t}$,綠色為$v'_{t}$

三、優化梯度下降算法

  • 標准梯度下降的問題(下圖藍線效果):從一個隨機的點開始進行梯度下降,可能會像藍色部分波動比較大,下降速度慢;無法使用更大的學習率,因為可能會偏離函數范圍

    • 優化手段:減少縱向的浮動,加快橫向的移動,以及增大學習率
  • 動量梯度下降法momentum
    • 優化:利用對梯度求指數加權平均的方法以加快訓練的速度(上圖紅線效果)

         通過求平均,可以把縱向的浮動抵消,而橫向的變化依舊,從而加快下降速度

    • 具體實現:用加權平均值來代替當前的求導結果;實際中一般不用做偏差修正,大概10次迭代就過了初始期,不再是有偏差的結果;$\beta$取值為0.9

      for $t = 1...,$

        計算當前mini-batch的$dW, db$

        $v_{dW}=\beta v_{dW}+(1-\beta)dW$
        $v_{db}=\beta v_{db}+(1-\beta)db$

        $W:=W-\alpha v_{dW}$, $b:=b-\alpha v_{db}$

  • RMSprop : root mean square prop
    • 均方根:先對$dW$求平方,更新時又除以它的根方
    • 為什么有效果

    假設$W$和$b$分別表示橫向和縱向變化。

             如果要讓縱向也就是$b$的變化慢一點(浮動小一些),也就是更新時減去的值小一些。可以發現原來縱向的變化較大($db$較大),所以$\frac{1}{\sqrt{S_{db}}}$會小一點,由此可讓$db$變化慢點

    • 具體實現:為了避免除數為0,一般可以加上$\varepsilon=10^{-8}$

for $t = 1,...$

  計算當前mini-batch的$dW,db$

  $S_{dW}=\beta_{2}S_{dW}+(1-\beta_{2})dW^{2}$

  $S_{db}=\beta_{2}S_{db}+(1-\beta_{2})db^{2}$

  $W:=W-\alpha \frac{dW}{\sqrt{S_{dW}}+\varepsilon}$, $b:=b-\alpha \frac{db}{\sqrt{S_{db}}+\varepsilon}$

  • Adam算法 :momentum與RMSprop的結合,常用的方法
    • 具體實現

$for t = 1,...$

  計算當前mini-batch人$dW,db$

  //momentum部分

  $v_{dW}=\beta_{1} v_{dW}+(1-\beta_{1})dW$, $v_{db}=\beta_{1} v_{db}+(1-\beta_{1})db$

  //RMSprop部分

  $S_{dW}=\beta_{2}S_{dW}+(1-\beta_{2})dW^{2}$, $S_{db}=\beta_{2}S_{db}+(1-\beta_{2})db^{2}$

  //偏差修正

  $v^{corrected}_{dW}=\frac{v_{dW}}{1-\beta_{1}^{t}}$,$v^{corrected}_{db}=\frac{v_{db}}{1-\beta_{1}^{t}}$

  $S^{corrected}_{dW}=\frac{S_{dW}}{1-\beta_{2}^{t}}$, $S^{corrected}_{db}=\frac{S_{db}}{1-\beta_{2}^{t}}$

  //更新

  $W:=W-\alpha \frac{v_{dW}^{corrected}}{\sqrt{S_{dw}{corrected}}+\varepsilon}$, $b:=W-\alpha \frac{v_{db}^{corrected}}{\sqrt{S_{db}{corrected}}+\varepsilon}$

    • 超參數選擇
$\alpha$學習率 $\beta_{1}$用於momentum $\beta_{2}$用於RMSprop $\varepsilon$
需要調 0.9 0.999 $10^{-8}$

四、學習率衰減:隨時間逐漸減少學習率

為什么:如果一直用比較大的學習率,當靠近最小值時,結果可能會在較大范圍內進行浮動(不易收斂),而不是在很接近最小值的小范圍內變化

重要性:不是最開始的重點,可以先設置一個固定的,先調整其它的,后期再進行調整

學習率衰減的方式

  • $\alpha = \frac{1}{1+decay-rate*epoch-num}\alpha_{0}$
  • $\alpha=0.95^{epoch-num}\alpha_{0}$   指數衰減
  • $\alpha=\frac{k}{\sqrt{epoch-num}}\alpha_{0}$
  • 每過一段時間,對學習率減半(離散下降discrete staircase)

五、局部最優問題

  • 局部最優問題:在做梯度下降時,會不會最后是趨於局部最優的解,而非最優解?
  • 答:這不是一個大問題,要找到一個局部最優點,需要它在各個維度都是最優的(比如都是凹/凸)。當維度比較大時,這種情況很難遇到。不過,鞍點還是比較容易遇到的
  • 鞍點:在某個位置,各維導數均為0,但是凹凸性不是完全一致的。如下圖右側

  • 應該考慮的問題:存在平滑導致梯度下降變化慢的問題
  • 解決方法:利用上面提到的幾種優化方法來加快


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM