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 | 自然语言处理 |