中國學(xué)霸本科生提出AI新算法:速度比肩Adam,性能媲美SGD
兩位學(xué)霸本科生,一位來自北大,一位來自浙大。
他們在實習期間,研究出一種新的AI算法,相關(guān)論文已經(jīng)被人工智能***會議ICLR 2019收錄,并被領(lǐng)域主席贊不絕口,完全確定建議接收。
在這篇論文中,他們公布了一個名為AdaBound的神經(jīng)網(wǎng)絡(luò)優(yōu)化算法,簡單地說,這個算法訓(xùn)練速度比肩Adam,性能媲美SGD。
這個算法適用于CV、NLP領(lǐng)域,可以用來開發(fā)解決各種流行任務(wù)的深度學(xué)習模型。而且AdaBound對超參數(shù)不是很敏感,省去了大量調(diào)參的時間。
兩位本科生作為共同一作的這篇論文,也在Reddit上引發(fā)了熱贊,作者本人也在這個論壇上展開了在線的答疑交流。
AdaBound已經(jīng)開源,還放出了Demo。
AdaBound是什么
AdaBound結(jié)合了SGD和Adam兩種算法,在訓(xùn)練開始階段,它能像Adam一樣快速,在后期又能像SGD一樣有很好的收斂性。
SGD(隨機梯度下降)算法歷史悠久,它是讓參數(shù)像小球滾下山坡一樣,落入山谷,從而獲得最小值。
但它***的缺點是下降速度慢(步長是恒定值),而且可能會在溝壑的兩邊持續(xù)震蕩,停留在一個局部***點。
Adam(自適應(yīng)矩估計)就是為了提高訓(xùn)練速度而生的。它和自適應(yīng)優(yōu)化方法AdaGrad、RMSProp等一樣,通過讓小球在更陡峭的山坡上下降,速率加快,來更快地讓結(jié)果收斂。
雖然Adam算法跑得比SGD更快,卻存在兩大缺陷:結(jié)果可能不收斂、可能找不到全局***解。也就是說它的泛化能力較差,在解決某些問題上,表現(xiàn)還不如SGD。
而造成這兩大缺陷的原因,可能是由于不穩(wěn)定和極端的學(xué)習率。
AdaBound是如何解決這個問題的?
它給學(xué)習率劃出動態(tài)變化的界限,讓實現(xiàn)從Adam到SGD的漸進和平滑過渡,讓模型在開始階段有和Adam一樣快的訓(xùn)練速度,后期又能保證和SGD一樣穩(wěn)定的學(xué)習率。
這種思路是受到2017年Salesforce的研究人員的啟發(fā)。他們通過實驗發(fā)現(xiàn),Adam后期的學(xué)習率太低影響了收斂結(jié)果。如果控制一下Adam的學(xué)習率的下限,實驗結(jié)果會好很多。
對學(xué)習率的控制就和梯度裁剪差不多。在防止梯度爆炸問題上,我們可以剪掉大于某個閾值的梯度。同樣的,我們也可以剪裁Adam學(xué)習率實現(xiàn)AdaBound。
在上面的公式中,學(xué)習率被限制在下限 η𝑙 和上限 η𝑢之間。當η𝑙 = η𝑢 = α時,就是SGD算法;當η𝑙=0、 η𝑢 =∞時,就是Adam算法。
為了實現(xiàn)從Adam到SGD的平滑過渡,讓η𝑙 和 η𝑢變成隨時間變化的函數(shù):η𝑙 遞增從0收斂到α,η𝑢從∞遞減收斂到α。
在這種情況下,AdaBound開始時就像Adam一樣訓(xùn)練速度很快,隨著學(xué)習率邊界越來越受到限制,它又逐漸轉(zhuǎn)變?yōu)镾GD。
AdaBound還有個非常大的優(yōu)點,就是它對超參數(shù)不是很敏感,省去了大量調(diào)參的時間。
實驗結(jié)果
作者分別對不同模型進行實驗,比較了Adam與業(yè)界流行方法SGD,AdaGrad,Adam和AMSGrad在訓(xùn)練集和測試集上的學(xué)習曲線。
以上結(jié)果證明了AdaBound確實有比SGD更快的訓(xùn)練速度。
在LSTM上的實驗則證明Adam更好的泛化能力。Adam算法在該實驗條件下沒有收斂到***解,而AdaBound和SGD算法一樣收斂到***解。
上圖中,還無法完全體現(xiàn)AdaBound算法相比SGD的在訓(xùn)練速度上的優(yōu)點,但AdaBound對超參數(shù)不敏感,是它相比SGD的另一大優(yōu)勢。
但使用AdaBound不代表完全不需要調(diào)參,比如上圖中α=1時,AdaBound的表現(xiàn)很差,簡單的調(diào)整還是需要的。
目前實驗結(jié)果的測試范圍還比較小,評審認為論文可以通過更大的數(shù)據(jù)集,比如CIFAR-100,來獲得更加可信的結(jié)果。
Reddit網(wǎng)友也很好奇AdaBound在GAN上的表現(xiàn),但作者表示自己計算資源有限,還沒有在更多的模型上測試。希望在開源后有更多人驗證它的效果。
自己動手
目前作者已經(jīng)在GitHub上發(fā)布了基于PyTorch的AdaBound代碼。
它要求安裝Python 3.6或更高版本,可以用pip直接安裝:
- pip install adabound
使用方法和Pytorch其他優(yōu)化器一樣:
- optimizer = adabound.AdaBound(model.parameters(), lr=1e-3, final_lr=0.1)
作者還承諾不久后會推出TensorFlow版本,讓我們拭目以待。
學(xué)霸本科生
這項研究的共同一作,是兩位學(xué)霸本科生。他們在滴滴實習的時候一起完成了這項研究。
一位名叫駱梁宸,就讀于北京大學(xué)地球與空間科學(xué)學(xué)院,今年大四。
另一位名叫熊遠昊,就讀于浙江大學(xué)信電學(xué)院,今年也是大四。
駱梁宸
這名學(xué)霸今年大四,已經(jīng)有四篇一作論文被人工智能***學(xué)術(shù)會議收錄,其中1篇EMNLP 2018、2篇AAAI 2019,還有我們今天介紹的這篇,發(fā)表于ICLR 2019。
他高中畢業(yè)于北京師范大學(xué)附屬實驗中學(xué),連續(xù)三年獲得全國青少年信息學(xué)奧林匹克競賽一等獎。
在2015年到2018年期間,是北大PKU Helper團隊的安卓開發(fā)工程師和負責人。
2016年春季,擔任數(shù)據(jù)結(jié)構(gòu)與算法課程助教,還帶著實驗室同學(xué)們開發(fā)了一個回合制的游戲平臺坦克大戰(zhàn)。
2016年7月到2017年6月,擔任UniBike技術(shù)開發(fā)VP,負責軟件開發(fā)。
2017年7月到2018年5月,在微軟亞洲研究院實習,做研究助理。在這段研究經(jīng)歷中,發(fā)表了兩篇被AAAI收錄的論文。
2018年7月至今,在滴滴人工智能實驗室做研究助理,本篇文章介紹的研究成果,就是這一工作中的成果。
目前,他也在北大語言計算與機器學(xué)習組實習,導(dǎo)師為研究員孫栩,也是這篇論文的作者之一。
熊遠昊
他現(xiàn)在是浙江大學(xué)信電學(xué)院信息工程專業(yè)的大四學(xué)生,同樣是學(xué)霸級人物,三年綜合成績排名年級***。
在發(fā)表這篇ICLR論文之前,他還以第二作者身份在通信領(lǐng)域的權(quán)威期刊上發(fā)表過論文1篇。
此外,論文還有一位作者,是南加州大學(xué)的副教授Yan Liu。
如果,你對他們的研究感興趣,請收好下面的傳送門:
論文:
ADAPTIVE GRADIENT METHODS WITH DYNAMIC BOUND OF LEARNING RATE
https://openreview.net/pdf?id=Bkg3g2R9FX
論文評審頁面:
https://openreview.net/forum?id=Bkg3g2R9FX
GitHub地址:
https://github.com/Luolc/AdaBound
Reddit討論地址:
https://www.reddit.com/r/MachineLearning/comments/auvj3q/r_adabound_an_optimizer_that_trains_as_fast_as/