華文網

拋棄Learning Rate Decay吧!

雷鋒網AI科技評論按:本文為浙江大學吳騫為雷鋒網 AI 科技評論撰寫的獨家稿件,未經雷鋒網許可不得轉載。

論文題目:DON’T DECAY THE LEARNING RATE, INCREASE THE BATCH SIZE

論文地址:https://arxiv.org/abs/1711.00489

真的是生命不息,打臉不止。前幾天剛剛總結了常見的 learning rate decay 方法,

最近又看到這篇正在投 ICLR2018 的盲審,求我現在的心理陰影的面積。。。

然後上 arxiv 一查,哦,Google 爸爸的,乾貨滿滿,簡直不容反駁。。。

先點題:

不用衰減學習率啦,只要增大 Batch Size 就可以啦!

摘要:

實際上作者在衰減學習率的時候同時也降低了SGD中隨機波動

的值;衰減學習率類似於類比退火;

不同於衰減學習率,作者提出了在增加 Batch Size 的同時保持學習率的策略,既可以保證不掉點,還可以減少參數更新的次數;

作者還可以即增加學習率又增大 Batch Size,如此可以基本保持test中不掉點又進一步減少參數更新次數;

作者對比了自己的模型和另一篇著名論文(Accurate, large minibatch SGD: Training imagenet in 1 hour)中的模型,

Batch Size:65536 - 8192;正確率:77% - 76%;參數更新次數:2500 - 14000;

隨即梯度下降法與曲線優化

傳統的學習率遵循以下兩個約束:

(1)

(2)

直觀來看,公式1約束最小值優化的參數一定存在,公式2保證了衰減學習率有助於快速收斂至最小值處,而不是由於雜訊在震盪。

然而以上結論是給予 Batch Size 不變推導出的。作者基於前作(A BAYESIAN PERSPECTIVE ON GENERALIZATION AND STOCHASTIC GRADIENT DESCENT)推導出另一個解釋優化過程的模型,並指出可以通過找到某個最優化的隨機波動值

(其中

為學習率 ,

為訓練資料集大小,

為 Batch Size 大小),使得模型達到最優值。

模擬退火法和泛化能力下降

廣泛的研究結果指出小 Batch Size 訓練的模型在 test 中的泛化能力比大 Batch Size 的要好。前作中還得出了固定學習率下的最大 Batch Size 優化值

,並驗證了

與隨機雜訊值

有關。

研究者認為小 Batch 中的隨機誤差有助於 SGD 的收斂,尤其是在非凸曲線優化問題上。雜訊可以幫助 SGD 收斂至所謂平滑最小值(flat minima)而不是尖銳最小值(sharp minima)以保證 test 的泛化特性。

作者發現大部分研究者在訓練過程中都使用了「early stop 」的方法(當驗證集的點數不再增高時停止訓練),因此作者實際上有意的阻止了網路到達最小值。衰減學習率的成功是經驗式的。具體過程可以類比於模擬退火法中,較大的初始噪音有助於探索更大範圍內的參數空間而不是很快地陷入局部最優值;一旦作者找到了可能的最優區域後開始減少雜訊來 finetune 到最優值。

而這也能解釋為什麼近來越來越多的研究者開始使用 cosine 式衰減學習率或階梯形的衰減——物理退火法中,緩慢衰減溫度是系統收斂到某些銳利的全域最小值;而離散地降低溫度則有利於收斂到不是最低但足夠魯棒的區域。

有效的學習率和累積變數

許多研究者開始使用帶 momentum 的 SGD 下降法,其雜訊值與原始 SGD 稍有不同:

(3)

時該雜訊將退化為原始 SGD 雜訊。對比兩種 SGD 可以得出帶 momentum 的 SGD 方

法的有效學習率應為 。

對比原始 SGD,作者可以推導:成比例的放大

可以保持模型性能。然而,作者發現若成比例的縮放學習率

和 Batch Size 表現良好,但是若按照

倍縮放 Batch Size 和衝量係數

的話則會導致 test 性能下降。這是因為衝量式的更新在時間上是累積的,因此當

設置較大時需要額外的訓練次數才能保證模型處於相同水準,原文的補充材料中有較詳細的分析,此處不作解釋。

隨著衝量係數

的增大,還會增加網路忘記舊的梯度的時間(該時間和

成正比),一旦時間跨度達到幾個 epoch 以上時,損失空間將會變得不利調整從而阻礙訓練。這種情況在學習率衰減的時候尤其明顯。這也是為什麼有些論文推薦在初始的若干 epoch 時提升學習率。然而,在作者的大 Batch Size 實驗中,這種做法卻會帶來系統不穩定性。

實驗對比

實驗中使用的網路是「16-4」寬型殘差網路結構(wide ResNet architecture),使用了 ghost batch norm 方法來保證平均梯度與 Batch Size 不相關。

實驗中使用的對比策略是階梯形的,學習率階梯形下降,對應的,Batch Size 階梯形上升。

圖中,藍線代表常見的保持 Batch Size,逐步衰減學習率的方法;紅線代表與之相反的,保持學習率,相應的上升 Batch Size 的策略;綠線模擬真實條件下,上升 Batch Size 達到顯存上限的時候,再開始下降學習率的策略。

該實驗可以驗證兩個問題:

學習率下降是否是必須的——若是則三條曲線應不同;

是否是因為隨機雜訊的變化導致結果不同——若是則三條曲線相同;

實驗結果如下(a)所示,並驗證了隨機雜訊與訓練曲線的相關性。

實驗結果(b)進一步顯示增大 Batch Size 的好處,觀察損失值與參數更新次數的關係,顯然,增大 Batch Size 的方法中參數更新的次數遠少於衰減學習率的策略。

下圖是兩種不同的梯度下降策略的 test 結果,顯然效果相差不大。

增大學習率策略

作者準備了四組實驗:

Original training schedule:初始學習率設為 0.1,momentum 為 0.9,Batch Size 為 128,採用衰減學習率策略,每階段減少 5 倍;

Increasing batch size:初始學習率設為 0.1,momentum 為 0.9,Batch Size 為 128,採用增大 Batch Size 策略,每階段增加 5 倍;

Increased initial learning rate:初始學習率設為 0.5,momentum 為 0.9,Batch Size 為 640,採用增大 Batch Size 策略,每階段增加 5 倍;

Increased momentum coefficient:初始學習率設為 0.5,momentum 為 0.98,Batch Size 為 3200,採用增大 Batch Size 策略,每階段增加 5 倍;

當 Batch Size 增加到最大值

後即不再增加,以保證

,並相應的開始減少學習率。

結果如下所示,結論與上文相同,方法4的結果稍差也在章節有效的學習率和累積變數中有所解釋。

訓練 IMAGENET 只用更新 2500 次參數

論文 Accurate, large minibatch SGD: Training imagenet in 1 hour中的參數與試驗參數設置和結果對比如下:

上述論文中的 Batch Size 已經達到了保持網路穩定的最大值,為了進一步擴大 Batch Size 可以適當增大 momentum 的值。最終,作者的網路達到了顯存的上限

並保證了

。其參數設置與結果如下所示,可以看到準確率下降不大但是有效減少了參數的更新次數。

增大 Batch Size 就可以不用衰減學習率了,emmm,聽起來很有道理,但是總感覺哪裡不對...

最後,祝大家煉丹愉快!

對比兩種 SGD 可以得出帶 momentum 的 SGD 方

法的有效學習率應為 。

對比原始 SGD,作者可以推導:成比例的放大

可以保持模型性能。然而,作者發現若成比例的縮放學習率

和 Batch Size 表現良好,但是若按照

倍縮放 Batch Size 和衝量係數

的話則會導致 test 性能下降。這是因為衝量式的更新在時間上是累積的,因此當

設置較大時需要額外的訓練次數才能保證模型處於相同水準,原文的補充材料中有較詳細的分析,此處不作解釋。

隨著衝量係數

的增大,還會增加網路忘記舊的梯度的時間(該時間和

成正比),一旦時間跨度達到幾個 epoch 以上時,損失空間將會變得不利調整從而阻礙訓練。這種情況在學習率衰減的時候尤其明顯。這也是為什麼有些論文推薦在初始的若干 epoch 時提升學習率。然而,在作者的大 Batch Size 實驗中,這種做法卻會帶來系統不穩定性。

實驗對比

實驗中使用的網路是「16-4」寬型殘差網路結構(wide ResNet architecture),使用了 ghost batch norm 方法來保證平均梯度與 Batch Size 不相關。

實驗中使用的對比策略是階梯形的,學習率階梯形下降,對應的,Batch Size 階梯形上升。

圖中,藍線代表常見的保持 Batch Size,逐步衰減學習率的方法;紅線代表與之相反的,保持學習率,相應的上升 Batch Size 的策略;綠線模擬真實條件下,上升 Batch Size 達到顯存上限的時候,再開始下降學習率的策略。

該實驗可以驗證兩個問題:

學習率下降是否是必須的——若是則三條曲線應不同;

是否是因為隨機雜訊的變化導致結果不同——若是則三條曲線相同;

實驗結果如下(a)所示,並驗證了隨機雜訊與訓練曲線的相關性。

實驗結果(b)進一步顯示增大 Batch Size 的好處,觀察損失值與參數更新次數的關係,顯然,增大 Batch Size 的方法中參數更新的次數遠少於衰減學習率的策略。

下圖是兩種不同的梯度下降策略的 test 結果,顯然效果相差不大。

增大學習率策略

作者準備了四組實驗:

Original training schedule:初始學習率設為 0.1,momentum 為 0.9,Batch Size 為 128,採用衰減學習率策略,每階段減少 5 倍;

Increasing batch size:初始學習率設為 0.1,momentum 為 0.9,Batch Size 為 128,採用增大 Batch Size 策略,每階段增加 5 倍;

Increased initial learning rate:初始學習率設為 0.5,momentum 為 0.9,Batch Size 為 640,採用增大 Batch Size 策略,每階段增加 5 倍;

Increased momentum coefficient:初始學習率設為 0.5,momentum 為 0.98,Batch Size 為 3200,採用增大 Batch Size 策略,每階段增加 5 倍;

當 Batch Size 增加到最大值

後即不再增加,以保證

,並相應的開始減少學習率。

結果如下所示,結論與上文相同,方法4的結果稍差也在章節有效的學習率和累積變數中有所解釋。

訓練 IMAGENET 只用更新 2500 次參數

論文 Accurate, large minibatch SGD: Training imagenet in 1 hour中的參數與試驗參數設置和結果對比如下:

上述論文中的 Batch Size 已經達到了保持網路穩定的最大值,為了進一步擴大 Batch Size 可以適當增大 momentum 的值。最終,作者的網路達到了顯存的上限

並保證了

。其參數設置與結果如下所示,可以看到準確率下降不大但是有效減少了參數的更新次數。

增大 Batch Size 就可以不用衰減學習率了,emmm,聽起來很有道理,但是總感覺哪裡不對...

最後,祝大家煉丹愉快!