為什麼Adam常常打不過SGD?癥結點與改善方案

Jia-Yau Shiau
AI Blog TW
Published in
11 min readApr 26, 2020

--

對於做deep learning的人,Adam是個令人又愛又恨的優化器。Adam擁有收斂速度快、調參容易的優點,卻也存在時常被人攻擊的泛化性與收斂問題。因此,在許多論文中實驗會使用傳統的SGD+momentum來做分析。但實際上Adam並非不堪用,仍然有不少大名鼎鼎的模型使用,包含Transformer與BigGAN等。

這篇文章會先介紹Adam與Adam最常被攻擊的兩大癥結點,就Adam的實際問題產生原因作分析,並分享幾個改進方案。除了討論Adam問題以外,再這篇文章也會給一些調用Adam的經驗談。

Figure from this paper (NIPS 2017)

本篇文章 keywords: Adam, RMSProp, SGD, momentum, AMSGrad, AdaBound, AdamW, RAdam, RANGER, SWATS, Lookahead, Nadam, L2 regulization, weight decay, learning rate scheduling, warm up.

Adam方法與其概論問題

簡單回顧 Adam & SGD with momentum

相信看大部分讀這篇文章的人都對Adam不陌生了,基於我對Adam的理解,我會這樣描述Adam:在RMSProp的基礎上結合momentum的概念 (反過來說也可以啦),並且透過額外的超參數 (beta1、beta2、epsilon) 使其穩定化,在於初始化或是連續遇到小的gradient時,可以參數更新更穩定。

Notation refer to Adam paper and this lecture (Course of Hung-Yi Lee)

泛化問題

在討論模型泛化能力時,我們會希望模型找到的minimum是一個比較平緩 (flat) 、而非陡峭 (sharp) 的位置,而原因可以很直接地從下圖看出來。一般來說real world或testing set應該與training set相當接近,但有一定的小小的差距,如果我們找到的minimum是sharp的,就很容易造成相當大的誤差。

Figure from this paper (ICLR 2017)

--

--