本人更新頻率和有事與懶惰程度成反比,最近發現同質公號越來越多,一篇好些的論文出來,還沒準備動筆就發現已被寫過了。自然也就不太想寫一樣的了,只能花些時間,往深些寫。
這篇論文整個過程很有趣,一開始以為只是篇優化器論文,論文介紹很明白,但結果挖到後面,卻發現事情出現了反轉。
AdaBelief 也算最近看的很有意思的論文,作者分析做的很好,實驗效果也挺好,大家關注度也比較高,而且後面還有意外驚喜。
儘量從沒太多人寫的角度來寫,而非複述論文。介紹這篇的文章很多,甚至作者在 B 站還有中文介紹視頻。
介紹 AdaBelief 前,先需要簡單介紹下 SGD(隨機梯度下降)和 Adam,因為論文中一直說的都是 AdaBelief 的最大優點就是集以上兩者的優點為一身。
既有 SGD 算法好的泛化性 (Generalization)又有 Adam 算法一樣好的快速收斂性 (Convergence ability)和穩定性(Stability)在論文中,以及 Github 頁面作者分享了很多實驗結果來證明這幾點,看上去 AdaBelief 好像是一個完美的優化器,而且理論方面也如作者說的,正是因為 Belief 的存在,所以 AdaBelief 才能表現如此好。但仔細觀察實驗結果,還有一些細節部分,就會發現事情或許並非如此。
SGD 和 ADAMSGD 算是機器學習第一課裡的知識了,相信大部分同學也都很清楚其方法:根據損失函數給模型每個參數計算梯度,之後在梯度方向更新一小步。當然這只是 GD,還有 S(Stochastic),為提高效率,隨機選擇訓練樣本(一般為 batch),直到訓練模型到一個滿意的結果。
方程也很簡單。
雖然 SGD 算法很簡單,而且都差不多70年前提出的算法。但因為其良好的泛化性,在某些任務上(特別是 CV 大規模數據集,比如 ImageNet)仍然還得到應用。
在某些領域,SGD 的一些變種最近也得到很多應用,之前自監督學習那篇 BYOL 就是 LARS 訓的。
但從方程裡也能看出,SGD 是對全局參數用一個學習率,而其實真正優化更想要讓那些梯度方向穩定的參數更新更快,而不穩定的更新步伐更小。因此這也導致 SGD 算法訓練不太穩定,收斂慢(尤其訓練早期)。
對於上面這點問題,就有人提出了適應性法(Adaptive Method),能針對各個參數計算出其定製化的學習率,進行更新訓練。此類優化算法很多(名字帶 Ada 的都是),而 Adam 就是其中的佼佼者。
Adam 因其萬金油性,導致現在整個領域大部分任務都直接無腦就用,直接默認用 Adam。前段時間還看過一個說法,因為 Adam 的普及性,整個領域大部分模型是用 Adam 訓練的,改進模型也都用 Adam,因此整個領域很可能過擬合了,過擬合到 Adam 優化器上了,這些模型只對 Adam 優化有效.
Adam 相對 SGD 主要是加了兩個參數,分別為梯度的一階動量
其中
而 Adam 梯度更新方程是
介紹完 SGD 和 Adam,終於快說到正主 AdaBelief 了。AdaBelief 也是種適應性算法,在 Adam 上的改動很小,而效果卻不一般,那這個改動是什麼呢?
當然是信仰(belief),鹹魚有了信仰都不一樣,更別說優化器。
而這個所謂信仰其實就是,當前梯度與其滑動平均差值的二階動量(一個很長的信仰),其實可以理解成梯度方差。
信仰又是什麼上面提到給優化器加入信仰的大概思想是:將梯度滑動平均
實際上是為了解決下面這張圖中的第三種情況。
梯度大而方差小的情況下,因為 Adam 用二階動量參數
介紹這麼多,改進方程也就很簡單了,對比 Adam 只用將
替換成
算了下加上複製粘貼輸入這個公式總共才用了六步。
最後的參數更新方程將
非常簡單。
信仰的力量:實際效果論文中除了上面的 Intuition,還對 AdaBelief 的收斂性進行了理論分析,還有大量圖片視頻展示優化過程。
但我比較關心的是在具體問題上的效果。
首先是 CNN 模型的圖片分類任務,用 ImageNet 上 ResNet 18 來展示
可看到在準確性上 AdaBelief 超過了其他適應性方法,比 SGD 差一點點,但同時因為是適應性算法,它的收斂速度比 SGD 要快。
之後是 LSTM 的語言模型任務,具體用 LSTM 在 Penn TreeBank 上的展示
發現模型越複雜(層數越多),AdaBelief 的性能就越好,收斂速度和效果都挺好。
接著是 GAN 的訓練,主要因為 GAN 訓練對穩定性要求很高,所以這裡準備測試 AdaBelief 的穩定性。當然結果發現也是效果比其他都要好。而且看圖上 FID 分數的方差波動也很小,說明很穩定。
以上就是論文中展示的所有實驗分析了,但是...
Where is Transformer?! and pretrain model
果然還是有人有同樣想法,所以在 Github 庫裡找到 Transformer 相關的實驗。
但只在翻譯任務上跑了一下,結果看起來說服力不大,只在小數據集 ISWLT14 上進行了實驗
看上去是有些提升,但還是感覺沒說服力,因為 Transformer 也是被證實了大量級會更有效,但這方面實驗沒做。預訓練模型上也沒有進行實驗。
即使如此,作者是展示了理論分析,又展示了實驗結果,看上去好像很有說服力了,但是慢著,如果現在告訴你很有可能上面說的所謂的「信仰」都是扯淡,可能效果並沒分析那麼大,效果的產生在其他地方,你會怎麼想?
一頓操縱猛如虎,結果帶來效果產生跟操縱卻沒太大關係。
信仰的破滅?The Epsilon第一遍看論文並沒有注意這個問題,直到在 Github 庫裡看到關於 epsilon (即
前面理論分析略過了 Bias Correction (偏差校正)項,但現在這裡要說,這個在文中被因為簡便而略過的部分,很有可能才是整篇論文的關鍵
注意在 AdaBelief 中除了取代
in order to better match the assumption that
為了更好的滿足
但實驗結果卻表明就是這樣一個小小的
如果需要 AdaBelief 偏向 SGD 有更多泛化性,那麼就給
,反之,需要 AdaBelief 偏向適應性優化器的話,就給 。這也符合前面說的 AdaBelief 是一個能同時擁有兩邊優點的優化器設定。但是,好奇的同學肯定就問了,明明之前說的主要 idea 是給
進一步來說,既然
這樣想的人並非只是我們,已經有人做了。這便是論文 EAdam Optimizer: How ε Impact Adam 所提出的,它所做的就只是如剛才說的,也在 Adam 偏差校正的地方加了個
那麼這個 EAdam 效果如何,特別是和 AdaBelief 的對比。
首先是 CNN 圖片分類(EAdam 是圖中紅線,AdaBelief 是綠線)
接著是 LSTM 語言模型
還在目標檢測上跑了 Faster-RCNN+FPN
結果發現, EAdam 大多情況下和 AdaBelief 性能差不多!
差也只略差一點。因此可以說,其實
AdaBelief 所聲稱的 belief(信仰)可能起得作用並不是很大,AdaBelief 更應該叫做,
因此這裡我們是否可以說這是,信仰的破滅呢?
當然之前理論分析中的第三種情況,我也是認同
如果感興趣,大家可以自己推導一下公式對比分析下 AdaBelief,Adam,EAdam 這三個。當然如果我有時間,也可以推導後寫一篇。
ReferenceGithub:Adabelief-OptimizerAdaBelief Optimizer: Adapting Stepsizes by the Belief in Observed GradientsEAdam Optimizer: How