關(guān)鍵時刻,,第一時間送達 曉查 發(fā)自 凹非寺 本文轉(zhuǎn)載自:量子位(QbitAI)
Adam作為一種快速收斂的優(yōu)化器被廣泛采用,但是它較差的收斂性限制了使用范圍,,為了保證更優(yōu)的結(jié)果,,很多情況下我們還在使用SGD。 但SGD較慢的收斂速度也令人頭疼,,所以人們一直在研究進一步優(yōu)化Adam的方法,。AdaBound、RAdam都是在這方面的嘗試,。 最近北京大學(xué)孫栩課題組提出了一種新的優(yōu)化器AdaMod,。這是一種基于Adam的改進優(yōu)化器,具有自動預(yù)熱試探法和長期學(xué)習(xí)速率緩沖,。 AdaMod的名稱來自Adaptive(自適應(yīng))和Momental Bound(矩限制),。 在訓(xùn)練過程中,AdaMod可以輕松擊敗Adam,,同時對學(xué)習(xí)率超參數(shù),、訓(xùn)練曲線都不那么敏感,,并且不需要預(yù)熱。 優(yōu)點AdaMod的原理是,,在訓(xùn)練的同時計算自適應(yīng)學(xué)習(xí)率的指數(shù)長期平均值,,并使用該平均值來修剪訓(xùn)練過程中過高的學(xué)習(xí)率。 這一做法提高了優(yōu)化器的收斂性,,無需進行預(yù)熱,,并且降低了對學(xué)習(xí)率的敏感性。 在上圖中,,我們可以看出,,SGDM和Adam的訓(xùn)練結(jié)果都依賴于初始學(xué)習(xí)率的選擇。而AdaMod即使學(xué)習(xí)率相差兩個數(shù)量級,,也能收斂到同一結(jié)果,。 相比Adam優(yōu)化器,AdaMod只增加了一個超參數(shù)β3,,用來描述訓(xùn)練中記憶長短的程度,。 這種長期記憶解決了自適應(yīng)學(xué)習(xí)率的異常過大數(shù)值,免于讓優(yōu)化器陷入了不良的狀態(tài),。 與之前的RAdam優(yōu)化器類似,,AdaMod能夠從訓(xùn)練開始就控制自適應(yīng)學(xué)習(xí)率的變化,從而確保訓(xùn)練開始時的穩(wěn)定性,,無需預(yù)熱,。 相關(guān)報道: RAdam優(yōu)化器又進化:與LookAhead強強結(jié)合,性能更優(yōu)速度更快 在3個基于Transformer的神經(jīng)機器翻譯模型上,,沒有預(yù)熱的AdaMod顯示出了比預(yù)熱的Adam有著更快的收斂速率和更好的收斂結(jié)果,。 而Adam優(yōu)化器如果不預(yù)熱,效果可能會非常差,,達到完全不可用的程度,。
算法實現(xiàn)其實,AdaMod的思路也很簡單,,只是在Adam的基礎(chǔ)上做了一個小幅的修改,。 如AdaBound所描述的,不穩(wěn)定和異常的學(xué)習(xí)率通常出現(xiàn)在訓(xùn)練快結(jié)束時,,這會危及自適應(yīng)方法的泛化性能,。 相關(guān)報道: 中國學(xué)霸本科生提出AI新算法:速度比肩Adam,性能媲美SGD,,ICLR領(lǐng)域主席贊不絕口 所以AdaBound的思路是,,先定義學(xué)習(xí)率的下限ηl和ηu,一開始下限為0,上限為∞,,隨著訓(xùn)練過程的進行,,上下限分別收斂到SGD的學(xué)習(xí)率α。 Adam會根據(jù)一階矩和二階矩的梯度估計值計算自適應(yīng)學(xué)習(xí)率,。受指數(shù)滑動平均(EMA)的啟發(fā),,AdaMod計算梯度的低階矩,并通過參數(shù)β3將記憶帶到下一個步驟中,。
可以看出,,Adam和AdaMod的前8步完全相同,后者只是比前者多了9,、10兩步,。
具體來說,在Adam中進行以下操作:
指數(shù)滑動平均的范圍是1/β3,。β3就是記憶長短的量度,,它越接近1,記憶長度也就越長,。
例如當(dāng)β3=0.9時,,記憶平均范圍是10個周期;當(dāng)β3=0.999時,,平均范圍是1000個周期,。 根據(jù)β3可以算出當(dāng)前步驟的平滑值和之前平滑值的關(guān)系。
通過這個方程,,我們定義了當(dāng)前平滑值和過去“長期記憶”(long-term-memory)的關(guān)系,。顯然,當(dāng)β3=0時,,AdaMod則完全等價于Adam。
計算出當(dāng)前平滑值后,,在它和當(dāng)前Adam算出的學(xué)習(xí)率ηt中選出一個最小值,,從而避免了出現(xiàn)過高學(xué)習(xí)率的情況。
這項操作可以看作是逐個元素地削減學(xué)習(xí)率,,從而使輸出受到當(dāng)前平滑值的限制,。
現(xiàn)在你已經(jīng)可以直接通過pip安裝。 局限性盡管AdaMod勝過Adam,,但是在更長的訓(xùn)練條件下,,SGDM仍然可以勝過AdaMod。 因此,,有人提出了結(jié)合DiffGrad和AdaMod的DiffMod算法,,使用另一個參數(shù)“l(fā)en_memory”代替β3,可以將batch的總數(shù)傳遞它,更易于記憶和追蹤,。 關(guān)于作者這篇文章的第一作者是Ding Jianbang,,通訊作者是孫栩副教授,他本科畢業(yè)華中科技大學(xué),,2010年從東京大學(xué)博士畢業(yè),,曾在微軟公司美國雷蒙德研究院實習(xí)。 他的研究方向為自然語言處理,、機器學(xué)習(xí),、深度學(xué)習(xí),曾擔(dān)任EMNLP,、IJCNLP等國際學(xué)術(shù)會議的領(lǐng)域主席,。 之前的AdaBound優(yōu)化器就是孫栩組的駱梁宸同學(xué)提出的。本文的第一作者也感謝了與駱梁宸等人參與的討論,。 傳送門博客討論: https:///@lessw/meet-adamod-a-new-deep-learning-optimizer-with-memory-f01e831b80bd 論文地址: https:///abs/1910.12249v1 AdaMod源代碼: https://github.com/lancopku/AdaMod DiffMod源代碼: https://github.com/lessw2020/Best-Deep-Learning-Optimizers/blob/master/adamod/diffmod.py 重磅,!學(xué)術(shù)交流群已成立
|