神經網絡優化——梯度下降常用算法:隨機梯度下降、批處理梯度下降、Momentum、move average、RMSprop、Adma

神經網絡優化——梯度下降常用算法:min-batch、隨機梯度下降(SGD)、批量梯度下降、Momentum、move average、RMSprop、Adma

簡介

  • 梯度下降算法是應用於神經網絡反向傳播過程的計算梯度,然後更新參數,最終找到最優的位置。本博客主要介紹隨機梯度下降、批處理梯度下降、Momentum、move average、RMSprop、Adma。也是對Andrew NG 的deeplearning.ai 課程的部分內容進行總結。
    在這裏插入圖片描述

算法原理

  • 1、 隨機梯度下降和批量梯度下降都是基於min-batch的,他們區別是 batch size大小不一樣。

    • min-batch就是把數據分爲numbersminbatch\frac{numbers}{min-batch}組, numbersnumbers代表樣本總數目,每組裏有minbatchmin-batch個樣本,隨機梯度下降就是 min-batch size = 1。批處理是m-batch size >1,正常是2n2^n(64 128 256 512 1024 …),假設loss是Cross Entrophy, Cross Entrophy 公式裏的mm就是等於min-batch size。按批次的計算梯度和loss,而不是所有樣本處理完再計算,這樣會加快訓練速度.
      在這裏插入圖片描述
      上圖左邊圖像就是沒采用mini-batch策略的loss圖,右側是採用mini-batch策略,可以看出來右邊曲線上下抖動,那是因爲參數可能對有些batcn裏面數據效果比較好或差,不過只要有下降趨勢,效果還是比左側圖好並訓練速度更快。
  • 2、 move average
    move average也稱爲指數加權平均算法。用前面一個優化後的值和當前值進行加權計算,優化當前值,讓曲線更加平滑。
    在這裏插入圖片描述
    vt=βvt1+(1β)θt(1)v_t = \beta v_{t-1} + (1-\beta) \theta_t \qquad(1)
    vtv_t:代表tt時刻優化後的vv,上圖就是tt時刻優化後溫度
    vt1v_{t-1}:代表t1t-1時刻優化後的溫度。
    β\beta:代表權重,正常取0.8-0.999,正常取0.9.
    θt\theta_t:代表tt時刻的值,上圖就是tt時刻的溫度
    利用vt1βθtv_{t-1}、 \beta、\theta_t優化vtv_{t},優化後的曲線。
    在這裏插入圖片描述

    • move average 偏差糾正,由於v0v0=0v_0初始時候 v_0=0,所以v1=βv0+(1β)θ1=(1β)θ1v_1 = \beta v_0 + (1- \beta)\theta_1 = (1-\beta)\theta_1會造成剛開始時候vtv_t較小,很偏離θt\theta_t,所以要進行偏差糾正。用公式(1)計算完後,再對vtv_t糾正偏差。
      vt=vt1βt(2)v_t = \frac{vt}{1-\beta^t}\qquad(2)
  • 3、Momentum 梯度下降算法是結合move average的。在神經網絡中,主要計算梯度dW,dbdW,db,α\alpha代表學習速率。這裏就舉例這兩個。moment就是對dW,dbdW,db進行優化。vdWvdb0,WbvdW、vdb初始化爲0,維度和W、b 相同
    vdW=βvdW+(1β)dW(3)vdW = \beta *vdW + (1-\beta)dW \qquad (3)
    vdb=βvdb+(1β)db(4)vdb = \beta *vdb + (1-\beta)db \qquad(4)
    W:=WαvdW(5)W := W - \alpha*vdW \qquad(5)
    b:=bαvdb(6)b := b - \alpha*vdb\qquad(6)

  • 4、RMSprop梯度下降優化算法
    RMSprop和momentum區別就是對dWdbdW db取平方,是整個矩陣平方。
    sdW=βsdW+(1β)dW2(7)sdW = \beta *sdW + (1-\beta)dW^2 \qquad (7)
    sdb=βsdb+(1β)db2(8)sdb = \beta *sdb + (1-\beta)db^2 \qquad(8)
    W:=WαdWsdW(9)W := W - \alpha*\frac{dW}{\sqrt {sdW}} \qquad(9)
    b:=bαdbsdb(10)b := b - \alpha*\frac{db}{\sqrt{sdb}}\qquad(10)

  • 5、Adam*梯度優化算法
    Adam是把momentum和RMSprop結合起來,有個特點就是他的超參比較多。β1β2α\beta_1、\beta_2、\alpha,主要是調節參數α\alpha
    vdW=β1vdW+(1β1)dW(11)vdW = \beta_1 *vdW + (1-\beta_1)dW \qquad (11)
    vdb=β1vdb+(1β1)db(12)vdb = \beta_1 *vdb + (1-\beta_1)db \qquad(12)
    sdW=β2sdW+(1β2)dW2(13)sdW = \beta_2 *sdW + (1-\beta_2)dW^2 \qquad (13)
    sdb=β2sdb+(1β2)db2(14)sdb = \beta_2 *sdb + (1-\beta_2)db^2 \qquad(14)
    W:=WαvdWsdW(15)W := W - \alpha*\frac{vdW}{\sqrt {sdW}} \qquad(15)
    b:=bαvdbsdb(16)b := b - \alpha*\frac{vdb}{\sqrt{sdb}}\qquad(16)

總結

  • 利用指數加權平均可以讓梯度在縱軸方向上下抖動減小,加快訓練和收斂。
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章