天天看點

ADABOUND算法,究竟是颠覆Adam算法的成果還是隻是一種小技巧?

這兩年,随着adam算法的缺陷被科學家發現,很多研究人員開始對adam進行了改進。其中中國的兩位大學學霸開發出來了AdaBound算法,受到了國内媒體的關注。我是之前看到一篇 拳打Adam,腳踩Sgd的新聞,才了解到這個AdaBound算法。當時頗為震驚,因為Adam和Sgd算法都是深度學習界赫赫有名的算法。是以抱着好奇的想法看了看這篇論文,依然有一些疑問,希望能和大家一起交流學習。

Adam算法

作為深度學習界的自适應優化算法,Adam算法可謂是威名赫赫,它賦予了神經網絡在更新每個參數的時候都能自适應的選擇學習步長,換言之,Adam算法僅僅需要設定一個恒定的學習率,然後網絡會根據梯度值謹慎選擇需要訓練的參數的學習步長,可以說是彌補了sgd的恒定學習率的缺陷。

ADABOUND算法,究竟是颠覆Adam算法的成果還是隻是一種小技巧?

這裡是Adam算法的僞代碼,可以看到隻要有一個初始學習率,Adam算法就能讓神經網絡自己選擇需要更新的參數的梯度步長,這對于想用sgd算法的超大樣本資料量,不知道最優學習率的情況下可謂是救星。本人在沒用matlab實作Adam之前可謂是調學習率參數調到吐血。。。

但是,即使是這麼厲害的算法也有缺陷,那就是可能訓練到算法的末期的時候會出現不收斂的情況。因為adam算法雖然賦予了神經網絡自己選擇學習步長的能力,但是在訓練末期會出現極大極小的學習率,導緻不收斂。而sgd算法雖然需要調學習率,但是它可以嚴格收斂。一般來說,當我知道最優學習率的值的時候,sgd算法表現的會比Adam算法好,當然Adam算法在學習初期會更快倒是另一個優點。哈哈哈哈。

AdaBound算法

好了,該說說AdaBound算法了。該篇論文首先闡述了Adam算法和Sgd算法的優勢和不足,差不多就是我上面說的。AdaBound算法在想法上融合了Adam算法和Sgd算法的優勢,它的想法是,在算法前期使用Adam算法,在訓練的後期使用Sgd算法。前幾年有人是采用硬切斷的方式來強行分割整個訓練過程,就是到達某個疊代次數的時候,由Adam算法轉變為Sgd算法,但是這種硬切斷算法稍微有點僵硬,因為我不知道什麼時候該轉換算法,是以可以想象這種方法的效果存在一定的偶然性,隻不過是将學習率這個超參數轉換為我需要轉換算法的疊代次數點這個超參數,我認為沒啥意義,與其糾結什麼時候轉換,還是老老實實調學習率的參數或者用Adam算法來的實在。

但是AdaBound算法采用一種軟分割的方式,它為Adam算法的自己選擇的學習率設定了一個動态邊界,限定你自己選擇的學習率不能超過這個邊界,并且這個動态邊界可以慢慢收斂到一個最終的學習率,這時候,Adam算法就傾向于變成了Sgd算法了。下面給出論文中該算法的僞代碼。

ADABOUND算法,究竟是颠覆Adam算法的成果還是隻是一種小技巧?

其中的一些符号我這裡就不贅述了,和Adam算法很像,感興趣的朋友們可以去查論文。這裡主要是這一步。

ADABOUND算法,究竟是颠覆Adam算法的成果還是隻是一種小技巧?

這就是限制Adam算法自己選擇學習率的動态邊界,後面兩個一個是上邊界,一個是下邊界,這就像是解決梯度爆炸的梯度截斷方法一樣,學習率超過上邊界或者低于下邊界就截斷,限制你的學習率。這兩個邊界最終會收斂到一個最終的學習率上,最終轉變成Sgd算法。初看之下,确實使用的方法非常巧妙,也非常容易了解。該文中使用的邊界是

ADABOUND算法,究竟是颠覆Adam算法的成果還是隻是一種小技巧?

這個beta2類似于Adam算法中的beta2,該文中将它設定為0.999,和Adam一樣。

部分疑問,求大神指點

我們可以分析這兩個動态邊界,可以發現它們分别從極大值和極小值點慢慢收斂到0.1,也就是最後轉為Sgd算法的學習率值是0.1,是一個已知的固定值,換言之,這個0.1決定了算法在最終的收斂環節中轉換成Sgd的性能表現。這就是我的一個很大的疑問,既然你都已經知道Sgd算法的最優學習率,或者說是差不多是最優值的學習率,那我還用AdamBound算法幹嘛?直接用Sgd算法不就好了嗎?如果說這個算法的目的在于僅僅是讓Sgd算法在訓練前期跑的像Adam算法一樣快,但還是需要調參,就是調上面的那個0.1的學習率的值,那我認為,我還是傾向于用Adam算法,友善簡單快捷還不用太大幅度的調參,不收斂就不收斂吧。

是以,我認為,當然隻是一家之言。AdamBound算法僅僅隻是對Sgd算法的一種改進,将Adam算法的前期的訓練快速的優點融進了Sgd算法,但還是需要調參,不調參的話很難出現很好的結果,就不是很友善,我覺得應該沒有達到媒體宣傳的拳打Adam的情況吧。。

當然,針對我的問題,歡迎各位大神前來砸場,希望能有大佬給一個很好的解釋。。我們共同進步。。哈哈哈哈哈。

Adam論文:ADAM: A METHOD FOR STOCHASTIC OPTIMIZATION

AdaBound論文:ADAPTIVE GRADIENT METHODS WITH DYNAMIC BOUND OF LEARNING RATE

繼續閱讀