Deep Learning 最優化方法之AdaGrad

總括

首先我們來看一下AdaGrad演算法

我們可以看出該優化演算法與普通的sgd演算法差別就在於標黃的哪部分,採取了累積平方梯度。

簡單來講,設置全局學習率之後,每次通過,全局學習率逐參數的除以歷史梯度平方和的平方根,使得每個參數的學習率不同

作用

那麼它起到的作用是什麼呢?

起到的效果是在參數空間更為平緩的方向,會取得更大的進步(因為平緩,所以歷史梯度平方和較小,對應學習下降的幅度較小),並且能夠使得陡峭的方向變得平緩,從而加快訓練速度。

下面通過例子講解一下:

假設我們現在採用的優化演算法是最普通的梯度下降法mini-batch。它的移動方向如下面藍色所示:

假設我們現在就只有兩個參數w,b,我們從圖中可以看到在b方向走的比較陡峭,這影響了優化速度。

而我們採取AdaGrad演算法之後,我們在演算法中使用了累積平方梯度r=:r + g.g。

從上圖可以看出在b方向上的梯度g要大於在w方向上的梯度。

那麼在下次計算更新的時候,r是作為分母出現的,越大的反而更新越小,越小的值反而更新越大,那麼後面的更新則會像下面綠色線更新一樣,明顯就會好於藍色更新曲線。

在參數空間更為平緩的方向,會取得更大的進步(因為平緩,所以歷史梯度平方和較小,對應學習下降的幅度較小),並且能夠使得陡峭的方向變得平緩,從而加快訓練速度。

這就是AdaGrad優化演算法的直觀好處。

參考:Deep Learning 最優化方法之AdaGrad

吳恩達老師DeepLearning.ai課程slides

推薦閱讀:

隱馬爾科夫模型(HMM)一前向與後向演算法
TensorFlow入門
真實資訊語料下的Word2Vec的遷移實踐:Tag2Vec

TAG:机器学习 | 深度学习DeepLearning | 自然语言处理 |