1 Mini-batch梯度下降
Mini-batch梯度下降迭代過程
Mini-batch解決了批量梯度下降單次迭代樣本多,速度慢的問題,也解決了隨機梯度下降不穩(wěn)定的問題,能夠相對更快更好地收斂。但是,mini-batch和批量梯度下降一樣,更新方向完全依賴當前batch,也是不穩(wěn)定的。Momentum算法解決了這個問題。
2 Momentum
Momentum又叫做gradient descent with momentum。可以把某一維度的歷史擺動中和,從而達到沿著梯度方向快速下降的目的,如下圖所示。
Momentum梯度更新
Momentum用到了指數(shù)加權(quán)平均的思路,把歷史梯度的更新體現(xiàn)到當前的梯度更新中,由于初始值為0還需要用到偏差修正的方法,來修正前幾輪數(shù)據(jù)。但在實際實戰(zhàn)中,幾輪過后,偏差就已經(jīng)不明顯,也可以忽略。另外,也有人把dw的系數(shù)1-β替換成1。
3 RMSprop
RMProps全稱root mean square props,是Hinton在Coursera的課程上首先提出來的,為了解決不同方向擺動幅度不一致的問題。
RMSprop算法梯度更新過程
從圖中可以看到,梯度更新多了一個分母,這個分母就是為了均衡不同維度的擺動幅度。擺動幅度統(tǒng)一后,可以適當調(diào)大學(xué)習(xí)率α,加快訓(xùn)練速度。
4 Adam
Adam算法可以看做momentum和RMSprop的結(jié)合,更新過程如下圖。
Adam算法更新過程
迭代中用到了偏差修正。ε是為了防止分母為零,通常設(shè)置一個很小的值。圖中計算Sdb時,db忘了加平方。算法中用到的超參數(shù)的經(jīng)驗值如下圖。
Adam算法迭代過程
Adam是目前最棒的優(yōu)化算法,不知道用什么的話選它就對了。