學習率如何影響訓練?
from:
深度學習模型通常由隨機梯度下降演算法進行訓練。隨機梯度下降演算法有許多變形:例如 adam、rmsprop、adagrad 等等。這些演算法都需要你設定學習率。學習率決定了在乙個小批量(mini-batch)中權重在梯度方向要移動多遠。
如果學習率很低,訓練會變得更加可靠,但是優化會耗費較長的時間,因為朝向損失函式最小值的每個步長很小。
如果學習率很高,訓練可能根本不會收斂,甚至會發散。權重的改變量可能非常大,使得優化越過最小值,使得損失函式變得更糟。
訓練應當從相對較大的學習率開始。這是因為在開始時,初始的隨機權重遠離最優值。在訓練過程中,學習率應當下降,以允許細粒度的權重更新。
有很多方式可以為學習率設定初始值。乙個簡單的方案就是嘗試一些不同的值,看看哪個值能夠讓損失函式最優,且不損失訓練速度。我們可能可以從 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 之間,損失函式快速下降。
機器學習,深度學習,神經網路,深度神經網路
先來說一下這幾者之間的關係 人工智慧包含機器學習,機器學習包含深度學習 是其中比較重要的分支 深度學習源自於人工神經網路的研究,但是並不完全等於傳統神經網路。所以深度學習可以說是在傳統神經網路基礎上的公升級。神經網路一般有輸入層 隱藏層 輸出層,一般來說隱藏層大於2的神經網路就叫做深度神經網路,深度...
如何除錯神經網路(深度神經網路)?
神經網路的除錯基本上難於絕大多數的程式,因為大部分的神經網路的錯誤不會以型別錯誤或執行時錯誤顯現,他們只是使得網路難以收斂。如果你是乙個新人,這可能會讓你非常沮喪。乙個有經驗的網路訓練者可以系統的克服這些困難,儘管存在著大量似是而非的錯誤資訊,比如 你的網路訓練的不太好。對缺少經驗的人來說,這個資訊...
深度學習 深度神經網路
神經網路是由乙個個神經元相互連線並按層次排列構成的,深度神經網路是有任意層的神經網路,這裡的深度是指層次的多,而不是神經元數量的多。有任意層,那麼就要有乙個迴圈來負責遍歷每一層進行計算。所以深度神經網路的計算形式,就必須要適應這個迴圈結構。我們先來說說神經元吧 對於多神經元神經網路,其實也是一樣的。...