深度學(xué)習(xí)常用優(yōu)化器 —— 自適應(yīng)學(xué)習(xí)率算法

上一篇說(shuō)了一下改進(jìn)梯度的最優(yōu)化算法,下面說(shuō)一下自適應(yīng)學(xué)習(xí)率算法,以及兩者的結(jié)合。自適應(yīng)學(xué)習(xí)率算法主要是相對(duì)不同參數(shù)和訓(xùn)練的不同階段有不同的學(xué)習(xí)率。

1.自適應(yīng)學(xué)習(xí)率算法 —— AdaGrad

AdaGrad應(yīng)該是Adaptive Gradient的縮寫,是怎么個(gè)適應(yīng)法呢,就是每個(gè)參數(shù)都有自己的學(xué)習(xí)率,這里的學(xué)習(xí)率是和每個(gè)參數(shù)的梯度相關(guān)的,而且是累積的;算出一個(gè)參數(shù)的梯度之后,會(huì)去計(jì)算累積的平方梯度,如果這個(gè)參數(shù)已經(jīng)被更新了多次,二階動(dòng)量大,那么學(xué)習(xí)率就小;反之更新少的參數(shù)就會(huì)有一個(gè)比較大一些的學(xué)習(xí)率去更新

但是AdaGrad有兩個(gè)小問題,第一個(gè)是一直累積動(dòng)量累積太大后面就更新不動(dòng)了,另一個(gè)是還是要依靠epsilon的設(shè)置,設(shè)置比較大的話還是會(huì)有影響.

2.自適應(yīng)學(xué)習(xí)率算法 —— RMSprop

RMSprop是AdaGrad的一種變體,就是將動(dòng)量累積和當(dāng)前時(shí)刻的梯度做了一個(gè)加權(quán)求和(滑動(dòng)平均),這么做的目的是為了讓之前的梯度對(duì)當(dāng)前影響變小

blog還貼了一個(gè)加上牛頓動(dòng)量法的RMSprop,先邁出去一步算梯度,再走后面的RMSprop

3.自適應(yīng)學(xué)習(xí)率算法 —— Adadelta

Adadelta是微信文章里介紹的,所以沒有算法流程圖了,但是其實(shí)也很好理解,和RMSprop一樣就是做了一個(gè)加權(quán)求和(滑動(dòng)平均),但是不一樣的是用近段的一個(gè)時(shí)間窗口內(nèi)的動(dòng)量累積,而不是歷史動(dòng)量累積,這就更能避免AdaGrad的第一個(gè)問題,而對(duì)于第二個(gè)問題,文章里說(shuō)也可以解決,不需要設(shè)置一個(gè)epsilon了,但我沒有弄懂

4.自適應(yīng)學(xué)習(xí)率算法 ——?Adam(Adaptive Moment Estimation)

Adam其實(shí)就是Momentum + RMSprop;算完梯度后,更新一階矩估計(jì)s和二階矩估計(jì)r,s作為梯度動(dòng)量累積(Momentum),r作為學(xué)習(xí)率的分母(RMSprop);最后的公式如果沒有r那一坨就是Momentum了,如果把s換成g就是RMSprop。

這里還有一個(gè)修正,為什么要修正以及怎么修正的:https://www.zhihu.com/question/392235721 (一個(gè)de-bias的過(guò)程,修正成相應(yīng)原參數(shù)的無(wú)偏估計(jì),以免在前幾次迭代中動(dòng)量和RMS梯度還很小的時(shí)候誤差太大)

Adam有沒有什么缺點(diǎn)呢:也是有的,用的滑動(dòng)平均可能會(huì)隨著訓(xùn)練數(shù)據(jù)抖動(dòng),online場(chǎng)景下會(huì)波動(dòng)較大。

基于Adam又有一些其他的自適應(yīng)學(xué)習(xí)率算法:

5.Nadam

在Adam的基礎(chǔ)上再加上牛頓動(dòng)量,也就是先通過(guò)累積動(dòng)量邁一步出來(lái),再算梯度做后面的工作

6.AdamW

AdamW主要是考慮了目標(biāo)函數(shù)里有正則項(xiàng)的情況,很多文章一上來(lái)就將weight decay啥的,其實(shí)weight decay就是希望模型的權(quán)重別搞得太復(fù)雜(簡(jiǎn)單就好,奧卡姆剃刀),正則化是實(shí)現(xiàn)這個(gè)weight decay的一種方式:越大的權(quán)重受到越大的懲罰;

但是呢,在Adam這種優(yōu)化器下,正則化項(xiàng)也會(huì)去除以梯度的平方,并不能達(dá)到對(duì)大權(quán)重進(jìn)行大懲罰的目的了,反而Adam不如Momentum;針對(duì)這個(gè)問題就提出了AdamW

這個(gè)就是把本來(lái)帶L2的權(quán)重更新是紫色地方那樣的,改成了只根據(jù)目標(biāo)函數(shù)算梯度,做各種操作,然后再把L2對(duì)應(yīng)那部分拿來(lái)更新,衰減就不讓它衰減了。

后面三個(gè)來(lái)自于 https://zhuanlan.zhihu.com/p/166362509,都只是簡(jiǎn)述了一兩句

7.AMSGrad

提出了一個(gè)新的指數(shù)移動(dòng)平均的準(zhǔn)則,通過(guò)單調(diào)地減小步長(zhǎng),解決了Adam的不收斂問題。

8.SWATS(Switches from Adam To SGD)

一個(gè)組合策略,前期采用 Adam 進(jìn)行訓(xùn)練, 當(dāng)滿足觸發(fā)條件,優(yōu)化器就由 Adam 切換為 SGD。

9.Radam(Rectified Adam?)

一種預(yù)熱啟發(fā)式算法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容