如何估算深度神經網絡的最優學習率


學習率如何影響訓練?

from:https://www.jiqizhixin.com/articles/2017-11-17-2

深度學習模型通常由隨機梯度下降算法進行訓練。隨機梯度下降算法有許多變形:例如 Adam、RMSProp、Adagrad 等等。這些算法都需要你設置學習率。學習率決定了在一個小批量(mini-batch)中權重在梯度方向要移動多遠。

 

如果學習率很低,訓練會變得更加可靠,但是優化會耗費較長的時間,因為朝向損失函數最小值的每個步長很小。

 

如果學習率很高,訓練可能根本不會收斂,甚至會發散。權重的改變量可能非常大,使得優化越過最小值,使得損失函數變得更糟。

 

學習率很小(上圖)和學習率很大(下圖)的梯度下降。來源:Cousera 機器學習課程(吳恩達)

 

訓練應當從相對較大的學習率開始。這是因為在開始時,初始的隨機權重遠離最優值。在訓練過程中,學習率應當下降,以允許細粒度的權重更新。

 

有很多方式可以為學習率設置初始值。一個簡單的方案就是嘗試一些不同的值,看看哪個值能夠讓損失函數最優,且不損失訓練速度。我們可能可以從 0.1 這樣的值開始,然后再指數下降學習率,比如 0.01,0.001 等等。當我們以一個很大的學習率開始訓練時,在起初的幾次迭代訓練過程中損失函數可能不會改善,甚至會增大。當我們以一個較小的學習率進行訓練時,損失函數的值會在最初的幾次迭代中從某一時刻開始下降。這個學習率就是我們能用的最大值,任何更大的值都不能讓訓練收斂。不過,這個初始學習率也過大了:它不足以訓練多個 epoch,因為隨着時間的推移網絡將需要更加細粒度的權重更新。因此,開始訓練的合理學習率可能需要降低 1-2 個數量級。

 

一定有更好的方法

 

Leslie N. Smith 在 2015 年的論文「Cyclical Learning Rates for Training Neural Networks」的第 3.3 節,描述了一種為神經網絡選擇一系列學習率的強大方法。

 

訣竅就是從一個低學習率開始訓練網絡,並在每個批次中指數提高學習率。

 

在每個小批量處理后提升學習率

 

為每批樣本記錄學習率和訓練損失。然后,根據損失和學習率畫圖。典型情況如下:

 

一開始,損失下降,然后訓練過程開始發散

 

首先,學習率較低,損失函數值緩慢改善,然后訓練加速,直到學習速度變得過高導致損失函數值增加:訓練過程發散。

 

我們需要在圖中找到一個損失函數值降低得最快的點。在這個例子中,當學習率在 0.001 和 0.01 之間,損失函數快速下降。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM