本篇文章根據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 切換到自...