前言
以下內容是個人學習之后的感悟,轉載請注明出處~
Mini-batch梯度下降法
見另一篇文章:梯度下降法。
指數加權平均
其原理如下圖所示,以每天的溫度為例,每天的溫度加權平均值等於β乘以前一天的溫度加權平均值,再加上(1-β)乘以
當天溫度的和。β值得選取對溫度加權平均值的影響非常明顯,圖中的紅黃綠三條曲線即β取不同值時的曲線。
不過此方法有個弊端,就是前期v0為0,導致初期階段的值很小,並不准確。對此,我們可以對它進行偏差修正,
即 vt := vt / ( 1-β t ) 。但是大部人都不太喜歡用偏差修正,寧願忍受初期階段。
動量(momentum)梯度下降法
有時候遇到下圖中的情況,我們用傳統的梯度下降法,需要花費很長的時間這並不是我們想要的效果。
想要解決這種問題,我們能夠快速想到的便是增大橫向的跨度,減小縱向的跨度,那么具體該怎么實施呢?
這就需要用到動量梯度下降法了,其具體實現如下圖所示,其中β一般取0.9 。
總之,該方法可以加快梯度下降。
RMSprop
除了上述的方法外,RMSprop也可以加快梯度下降,解決動量梯度下降法提到的問題。其具體實現如下圖所示,其中寫成β2是
為了和上面的β區分開來,取值一般取0.999,至於ε是為了防止分母太接近0,其一般取10-8。
Adam優化算法
該算法結合了動量(momentum)下降梯度法和RMSprop法,其具體實現見下圖:
其具體參數的取值一般如下圖所示:
學習率衰減
在訓練模型的時候,通常會遇到這種情況:我們平衡模型的訓練速度和損失(loss)后選擇了相對合適的學習率(learning rate),
但是訓練集的損失下降到一定的程度后就不在下降了,比如training loss一直在0.7和0.9之間來回震盪,不能進一步下降。如下圖所示:
遇到這種情況通常可以通過適當降低學習率(learning rate)來實現。但是,降低學習率又會延長訓練所需的時間。
學習率衰減(learning rate decay)就是一種可以平衡這兩者之間矛盾的解決方案。學習率衰減的基本思想是:學習率隨着訓練的
進行逐漸衰減。
學習率衰減基本有兩種實現方法:
- 線性衰減。例如:每過5個epochs學習率減半
- 指數衰減。例如:每過5個epochs將學習率乘以0.1
注:不同的優化算法適用於不同的深度結構。
以上是全部內容,如果有什么地方不對,請在下面留言,謝謝~