深度學習 筆記之優化演算法

2021-08-08 03:52:40 字數 3203 閱讀 7967

本篇文章根據andrew ng的深度學習課程做個筆記。

1.mini-batch

mini-batch size --------(1)如果size為樣本個數m,就是批量梯度下降(batch gradient descent);(2)如果size為1,就是隨機梯度下降法(stochastic gradient descent)

批量梯度下降的下降速度較快,但是由於輸入樣本多,因此每次計算梯度的時間和空間成本高;

而隨機梯度下降的下降速度慢,偶爾還會上公升,只是總體趨勢在下降,但是由於每次只有乙個樣本,因此每次計算梯度的時間和空間成本低;

mini-batch就是兩者的折中,mini-batch應用的比較多,具體要看資料集的大小來選擇合適的size,來平衡梯度下降的速度和梯度計算的消耗,一般的mini-batch size 介於64到512之間(2的k次方)。

2.指數加權平均

2.1 要了解接下來的優化演算法,首先要理解指數加權平均。

公式:v_t := β * v_t-1 + (1-β) * θ_t

其中v_t-1 表示上一時刻的指數加權平均值,θ_t為當前時刻的真實值,β為係數(通常取值為0.9),n = 1 / (1 - β)的值表示考慮前n天的資料,β越大表示考慮的天數越少。一般情況下v_0 = 0,v_t即為當前時刻的指數加權平均值。

2.2 指數加權平均的偏差修正

如果v_0 = 0 β = 0.98,那麼v_1 = 0.02 *θ_1這使得加權平均與真實值差距很大,因此需要做一些修正,來減緩前幾個時刻的加權平均與真實值差距較大的問題。

修正公式:v_t  := v_t  /  (1 - β^t)

在機器學習的引數優化過程中,如果做了這個修正,可以在訓練早期獲得更好的估計。

3.動量梯度下降法

在mini-batch梯度下降中,梯度方向總是曲折擺動地向最低點移動,這使得下降速度變慢。我們希望他能夠在最低點方向移動快速移動,而在其他方向減少這種擺動,momentum梯度下降法就是用來解決這個問題的。

公式:v_dw  := β * v_dw + (1 - β) * dw

v_db := β * v_db + (1 - β) * db

w := w - α * v_dw

b := b - α * v_db

其中,dw是損失函式對w的偏導數,v_dw是dw的動量;db是損失函式對b的偏導數,

v_db是db的動量。

引數沿著負動量方向,而不是負梯度方向更新,這樣可以加快引數沿著最低點方向移動,減少擺動。

4.rmsprop (root mean square)

momentum演算法和rmsprop都加速向最低點前進,而rmsprop允許使用更大的學習率來加快前進速度。

公式:s_dw := β * s_dw + (1 - β) * (dw)^2

s_db := β * s_db + (1-β) * (db)^2

w := w - α * dw / ((s_dw)^0.5+ε)

b := b - α * db / ((s_db )^0.5 +ε)

其中,ε = 1 / 10^8,為了防止s_dw或s_db接近0

5.adam演算法(adaptive moment estimation)

adam是momentum和rmsprop的折中。

初始化:

v_dw = 0,s_dw = 0,v_db = 0,s_db = 0

公式:v_dw := β_1 * v_dw + (1 - β_1) * dw

v_db := β_1 * v_db +(1 - β_1) * db

s_dw := β_2 * s_dw + (1 - β_2) * dw

s_db := β_2 * s_db + (1 - β_2) * db

v_dw := v_dw / (1 - β_1^t)

v_db := v_db / (1 - β_1^t)

s_dw := s_dw / (1 - β_2^t)

s_db := s_db / (1- β_2^t)

w := w - α * v_dw  / ((s_dw)^0.5 + ε)

b := b - α * v_db / ((s_db)^0.5 +ε)

超引數包括:

α : 學習率

β_1 : 預設為0.9 對應momentum中dw和db

β_2 : 預設為0.999  對應rmsprop中dw^2和db^2

ε  :預設為1/10^8

6.學習率衰減

固定學習率的情況下:學習率較小,則梯度下降較慢,需要更多的迭代次數;學習率較大,則會在最低點附近徘徊,與最低點存在一定的距離,無法得到最優解。

學習率衰減:在訓練初期使用較大的學習率,後期使用較小的學習率,能夠更好的趨近最低點。

α = α_0 / (1 + decay_rate * epoch_num)

α = 0.95^epoch_num * α_0指數下降 或

α = k / (epoch_num)^0.5 * α_0

α = k* α_0 / t^0.5

7.區域性最優的問題

深度學習中容易陷入鞍點,而不是區域性最優點。如果鞍點周圍非常平滑的話,梯度下降的速度會非常慢,momentum、rmsprop、adam都能夠加快梯度下降的速度。

深度學習之優化演算法詳解

梯度下降 batch gradient descent,stochastic gradientdescent,以及 mini batchgradient descent 現在的 sgd一般都指 mini batch gradient descent sgd就是每一次迭代計算 mini batch 的...

深度學習筆記(10) 優化演算法(二)

adam代表的是adaptive moment estimation 基本上就是將momentum和rmsprop結合在一起 首先初始化,vdw 0,sdw 0,vdb 0,sdb 0 在第 t 次迭代中,要計算微分,用當前的mini batch計算dw,db 接下來計算momentum指數加權平均...

機器學習and 深度學習 and 優化演算法

ssh keygen t rsa c 我的ssh金鑰 將 我的金鑰 替換為新的自己命名的就行,然後github建倉進行ssh繫結 git remote v 檢視遠倉庫 git remote set url origin git github.com username newrepo.git 切換到自...