優(yōu)化器方法-RAdam (Rectified Adam)

最近看到一篇博客,將LookAheadRAdam結合產(chǎn)生了一個新的算法——Ranger,獲得了比單獨使用RAdam要好的效果。后來有人將LARS與Ranger結合,效果取得了進一步提升。最近Ranger的提出者又將GC(Gradient Centralization)方法與Ranger結合,也取得了比Ranger好的效果。這里我會分四篇文章分享我個人在閱讀這四個方法對應的論文時的總結和體會。由于LookAhead優(yōu)化器與SWA比較相似,所以還會開辟一篇文章介紹SWAFast SWA優(yōu)化器。本篇文章為系列文章第二篇。

問題

目前很多自適應學習率優(yōu)化器,如RMSprop、 Adam、Adadelta和Nadam等,被廣泛應用在各種DNN模型的訓練中,他們帶來的最大益處是快速的收斂速度。下圖(Algorithm 1)算法過程概括了大部分自適應學習率優(yōu)化器的流程框架。不同的地方只是\phi (\cdot)\psi (\cdot)的計算方式不同。例如,在Adam優(yōu)化器中:

\phi_t (g_1,...,g_t) = \frac{(1-\beta_1)\sum_{i=1}^{t}\beta_1^{t-i}g_i}{1-\beta_1^t}
\psi_t (g_1,...,g_t) = \sqrt{\frac{1-\beta_2^t}{(1-\beta_2)\sum_{i=1}^{t}\beta_2^{t-i}g_i^2}}
為了數(shù)值穩(wěn)定,一般也會以下面的公式計算\psi (\cdot)\epsilon是一個極小的值,例如1 \times 10^{-8}
\psi_t (g_1,...,g_t) = \frac{\sqrt{1-\beta_2^t}}{\epsilon + \sqrt{(1-\beta_2)\sum_{i=1}^{t}\beta_2^{t-i}g_i^2}}

從流程圖中可以看出,自適應學習率優(yōu)化器的學習率有兩個,分別為\alpha_tl_t,其中\alpha_t稱為學習率或者全局學習率,而l_t稱為自適應學習率。

實際使用中發(fā)現(xiàn),這些優(yōu)化算法可能會收斂到一個表現(xiàn)較差的局部最優(yōu)點,之前的解決方法是使用warmup啟發(fā)式方法,即在訓練早期階段先使用較小的學習率開始訓練,然后逐漸增大學習率到正式訓練使用的學習率,剩下的訓練過程使用正式訓練中的學習率調(diào)整策略。但是之前沒有理論依據(jù)可以解釋warmup方法為何能夠帶來性能提升,因此也無法指引我們更好地在各種不同的任務中使用warmup,一般研究者都是通過試錯的方式找到合適的warmup超參設置。

作者在對warmup的有效性進行研究時發(fā)現(xiàn),造成自適應學習率優(yōu)化器陷入較差局部最優(yōu)點的主要原因是在訓練早期,由于使用的訓練樣本數(shù)量有限,自適應學習率會有較大的方差。為了降低該因素帶來的負面影響,我們可以在訓練的早期階段使用較小的(全局)學習率,這便是warmup方法。為了說明warmup的有效性,作者指出在機器翻譯數(shù)據(jù)集De-En IWSLT'14的實驗中,移除warmup階段將使訓練損失從3增加到10左右。作者也通過可視化方法發(fā)現(xiàn),在不使用warmup的情況下,傳統(tǒng)Adam算法的梯度分布會被扭曲,在10次更新中梯度會有一個相對較小的“質心”,而這意味著在進行一些更新后,傳統(tǒng)Adam算法會陷入到較差的極小值點(個人無法理解此處的因果關系),如下圖所示,該圖中也指出在使用warmup后,梯度分布被扭曲的問題得到了矯正。

作者也通過證明說明在訓練的早期階段,Adam優(yōu)化器的自適應學習率確實存在較大的方差。下面是論文中的簡單推導總結,詳細推導請參考原文:
1.首先,作者將每次迭代的梯度看作是獨立同分布的,且服從N(0, \sigma^2)的正態(tài)分布,因為訓練開始階段,權重的初始化是采樣自標準正態(tài)分布的。
2.Adam優(yōu)化器中使用指數(shù)移動平均來計算自適應學習率,作者指出,通過指數(shù)移動平均計算的梯度平方的方差大于使用簡單平均計算的梯度平方(推導可參考本文補充1),而且在訓練的早期階段(t較小時),通過指數(shù)移動平均來計算的梯度平方值與通過簡單平均計算的梯度平方值相差不大(最大為1-\beta_2^{t-1}),所以為了分析簡單,作者認為在訓練的早期階段使用簡單平均計算的梯度平方概率分布近似于指數(shù)移動平均計算的梯度平方的概率分布,即:

p(\psi_t (\cdot)) = p(\sqrt{\frac{1-\beta_2^t}{(1-\beta_2)\sum_{i=1}^{t}\beta_2^{t-i}g_i^2}}) \approx p(\sqrt{\frac{t}{\sum_{i=1}^{t}g_i^2} })

由于步驟1指出g_i服從正態(tài)分布N(0, \sigma^2),則\frac{t}{\sum_{i=1}^{t}g_i^2}服從縮放逆卡方分布(scaled inverse chi-square distribution,維基百科介紹Scale-inv-\chi^2(t, 1/\sigma^2 )。所以\psi_t^2 (\cdot) = \frac{1-\beta_2^t}{(1-\beta_2)\sum_{i=1}^{t}\beta_2^{t-i}g_i^2}也服從自由度為\rho的縮放逆卡方分布Scale-inv-\chi^2(\rho, 1/\sigma^2 )(此處不清楚為什么自由度不是t,個人猜測,兩者雖然都服從縮放逆卡方分布,但是由于實際形式不同,所以在自由度上存在差異)。
3.基于以上假設和分析,就可以計算出\psi_t^2 (\cdot)的方差Var[\psi_t^2 (\cdot)],從而可以計算出\psi_t(\cdot)的方差Var[\psi_t (\cdot)]

該公式表明Var[\psi_t (\cdot)]是自由度\rho的單調(diào)遞減函數(shù),由于自由度\rho與采樣的樣本數(shù)量有關,即與t成正比,此處說明在訓練初期,由于缺乏采樣的樣本數(shù)量,自適應學習率的方差Var[\psi_t (\cdot)]比訓練后期要大,作者指出大致會有500倍的差異。

方法

1.對自由度\rho進行估計

從以上推導已經(jīng)知道Var[\psi_t (\cdot)]是自由度\rho的單調(diào)遞減函數(shù),為了對Var[\psi_t (\cdot)]進行進一步的量化分析并修正方差較大的問題,需要基于t對自由度\rho進行估計,作者給出的估計為:

\rho_t = f(t, \beta_2) = \frac{2}{1-\beta_2} - 1 - \frac{2t \beta_2^t}{1-\beta_2^t}
另外,指定\rho_{\infty} = \lim_{t \to \infty }f(t, \beta_2) = \frac{2}{1-\beta_2} - 1

2.修正自適應學習率

所謂修正自適應學習率,就是使得Var[\psi_t (\cdot)]從始至終都是常量值。從Var[\psi_t (\cdot)]與自由度\rho的關系我們知道Var[\psi_t (\cdot)]的最小值\min_{\rho_t} Var[\psi_t (\cdot)] = Var[\psi_t (\cdot)] |_{\rho_t=\rho_{\infty}} = C_{var},則可通過以下公式進行修正:

其中,r_t便是修正因子,通過公式推導,作者得到t時刻的修正因子r_t為:

r_t = \sqrt{\frac{(\rho_t - 4)(\rho_t - 2) \rho_{\infty}}{{(\rho_\infty - 4)(\rho_\infty - 2) \rho_{t}}}}

通過引入該修正因子,作者提出了Adam算法的新變種RAdam(Rectified Adam),算法整體描述如下:

另外,正如算法中指出的,當\rho_t \le 4\rho_{\infty} \le 4(開方不可解)自適應學習率失效,該算法退化為動量SGD。

實驗效果

1.作者試驗表明RAdam在CV和NLP任務中都有比Adam好的表現(xiàn),而且RAdam也具有比Adam和SGD更好的對不同學習率的魯邦性:

2.與warmup比較,RAdam取得了與之相當?shù)谋憩F(xiàn),說明RAdam可以作為warmup的替代策略:

補充

1.通過指數(shù)移動平均計算的梯度平方的方差大于使用簡單平均計算的梯度平方的方差,推導過程如下:

通過指數(shù)移動平均計算的梯度平方的方差計算公式推導:

Var[ \frac{1}{1 -\beta_2^t } (1-\beta_2) \sum_{i=1}^{t} \beta_2^{t-i}g_i^2] \\ = \frac{1}{(1 -\beta_2^t)^2 } (1-\beta_2)^2 Var(\sum_{i=1}^{t} \beta_2^{t-i}g_i^2) \\ = \frac{1}{(1 -\beta_2^t)^2 } (1-\beta_2)^2 \sum_{i=1}^{t} \beta_2^{2(t-i)} Var( g_i^2) \\ = \sum_{i=1}^{t} \frac{1}{(1 -\beta_2^t)^2 } (1-\beta_2)^2 \beta_2^{2(t-i)} Var( g_i^2)

通過簡單平均計算的梯度平方的方差計算公式推導:
Var(\frac{1}{t} \sum_{i=1}^{t} g_i^2) \\ = \sum_{i=1}^{t} \frac{1}{t^2} Var( g_i^2)

兩者的差為:
Var[ \frac{1}{1 -\beta_2^t } (1-\beta_2) \sum_{i=1}^{t} \beta_2^{t-i}g_i^2] - Var(\frac{1}{t} \sum_{i=1}^{t} g_i^2) \\ = \sum_{i=1}^{t} [\frac{1}{(1 -\beta_2^t)^2 } (1-\beta_2)^2 \beta_2^{2(t-i)} - \frac{1}{t^2}] Var( g_i^2) \\ \ge \min_{i=1}^{t}[Var( g_i^2)] \sum_{i=1}^{t} [\frac{1}{(1 -\beta_2^t)^2 } (1-\beta_2)^2 \beta_2^{2(t-i)} - \frac{1}{t^2}]
上式最后一項大于等于0,理由是:由于t \ge 1,且對于Adam優(yōu)化器\beta_2一般取值0.9, 則 \sum_{i=1}^{t} [\frac{1}{(1 -\beta_2^t)^2 } (1-\beta_2)^2 \beta_2^{2(t-i)} - \frac{1}{t^2}] \ge 0,下圖是t選擇不同值時\sum_{i=1}^{t} [\frac{1}{(1 -\beta_2^t)^2 } (1-\beta_2)^2 \beta_2^{2(t-i)} - \frac{1}{t^2}]的值,可以看出都是大于0的,又\min_{i=1}^{t}[Var( g_i^2)] \ge 0,所以上式大于0,從而說明通過指數(shù)移動平均計算的梯度平方的方差大于使用簡單平均計算的梯度平方的方差,而且當t較小時兩者的差異較小。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容