首先我們來看一下AdaGrad算法 我們可以看出該優(yōu)化算法與普通的sgd算法差別就在于標(biāo)黃的哪部分,采取了累積平方梯度。 簡(jiǎn)單來講,設(shè)置全局學(xué)習(xí)率之后,每次通過,全局學(xué)習(xí)率逐參數(shù)的除以歷史梯度平方和的平方根,使得每個(gè)參數(shù)的學(xué)習(xí)率不同 那么它起到的作用是什么呢? 起到的效果是在參數(shù)空間更為平緩的方向,會(huì)取得更大的進(jìn)步(因?yàn)槠骄?,所以歷史梯度平方和較小,對(duì)應(yīng)學(xué)習(xí)下降的幅度較?。?,并且能夠使得陡峭的方向變得平緩,從而加快訓(xùn)練速度。 下面通過例子講解一下: 假設(shè)我們現(xiàn)在采用的優(yōu)化算法是最普通的梯度下降法mini-batch。它的移動(dòng)方向如下面藍(lán)色所示: 假設(shè)我們現(xiàn)在就只有兩個(gè)參數(shù)w,b,我們從圖中可以看到在b方向走的比較陡峭,這影響了優(yōu)化速度。 而我們采取AdaGrad算法之后,我們?cè)谒惴ㄖ惺褂昧死鄯e平方梯度r=:r + g.g。 從上圖可以看出在b方向上的梯度g要大于在w方向上的梯度。 那么在下次計(jì)算更新的時(shí)候,r是作為分母出現(xiàn)的,越大的反而更新越小,越小的值反而更新越大,那么后面的更新則會(huì)像下面綠色線更新一樣,明顯就會(huì)好于藍(lán)色更新曲線。 完整內(nèi)容請(qǐng)點(diǎn)擊“閱讀原文” |
|