www涩-www黄网站-www黄色-www黄色com-国产免费拍拍视频在线观看网站-国产免费怕怕免费视频观看

了解學習率及其如何提高深度學習的性能

2018-03-20 17:10:55 InfoQ  點擊量: 評論 (0)
首先,什么是學習率?學習率(Learning Rate,LR。常用η表示。)是一個超參數,考慮到損失梯度,它控制著我們在多大程度上調整網絡的

首先,什么是學習率?

學習率(Learning Rate,LR。常用η表示。)是一個超參數,考慮到損失梯度,它控制著我們在多大程度上調整網絡的權重。值越低,沿著向下的斜率就越慢。雖然這可能是一個好主意(使用低學習率),以確保我們不會錯過任何局部最小值;但也有可能意味著我們將耗費很久的時間來收斂——特別是當我們陷入平坦區(plateau region)的時候。

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

下面的公式顯示了這種關系:

new_weight = existing_weight — learning_rate * gradient

學習率很小(上圖)與學習率很大(下圖)的梯度下降。(來源:Coursera機器學習課程,Andrew Ng)

通常,學習率是由用戶隨機配置的。在最好的情況下,用戶可以利用過去的經驗(或者其他類型的學習材料)來獲得關于設置學習率最佳值的直覺。

因此,很難做到這一點。下圖演示了配置學習率時可能會遇到的不同場景。

不同學習率對收斂的影響:(圖片來源:csn231n)

此外,學習率會影響模型收斂到局部最小值的速度(也就是達到最佳的精度)。因此,在正確的方向做出正確的選擇,意味著我們只需更少的時間來訓練模型。

訓練時間越少,則花在GPU云計算上的錢就越少。:)

AI前線:目前深度學習使用的都是一階收斂算法:梯度下降法。不管有多少自適應的優化算法,本質上都是對梯度下降法的各種變形。故初始學習率對深層網絡的收斂起著決定性的作用。

有沒有更好的方法來確定學習率?

在“訓練神經網絡的循環學習率(Cyclical Learning Rates (CLR)for Training Neural Networks)”[4]的第3.3節中。Leslie N. Smith認為,通過在每次迭代中以非常低的學習率來增加(線性或指數)的方式訓練模型,可以估計好的學習率。

AI前線:周期性學習率(Cyclical Learning Rates,CLR),即學習率退火與熱重啟,最初由Smith于2015年首次提出。這是一種新的學習率方法,和以前的不同,或者固定(fixed)或者單調遞減。要使用CLR,需指定這三個參數:max_lr、base_lr、stepsize。

學習率在每個小批量之后增加

如果我們在每次迭代中記錄學習率和訓練損失,然后據此繪出曲線圖;我們將會看到,隨著學習率的提高,將會有一個損失停止下降并開始增加的點。在實踐中,理想情況下,學習率應該是在左圖的最低點(如下圖所示)。在該例中為0.001到0.01之間。

以上看起來很有用。我該如何開始使用它?

目前,它被作為fast.ai深度學習庫的一個函數來支持。由Jeremy Howard開發,是用來抽象PyTorch深度學習框架的一種方式,就像Keras是對TensorFlow框架的抽象。

AI前線: fast.ai深度學習庫是fast.ai基于PyTorch的基礎上創建的自有軟件庫,并且他們認為,這將有助于更加清晰地展示深度學習的概念,同時有助于實現最佳編碼。采用Apache 2.0許可證,可免費使用。

只需輸入以下命令,就可以在訓練神經網絡之前找到最佳學習率。

# learn is an instance of Learner class or one of derived classes like ConvLearner
learn.lr_find()
learn.sched.plot_lr()

精益求精

在這個關鍵時刻,我們已經討論了學習率的全部內容和它的重要性,以及我們如何在開始訓練模型時系統地達到最佳的使用價值。

接下來,我們將討論如何使用學習率來提高模型的性能。

一般看法

通常情況下,當一個人設定學習率并訓練模型時,只有等待學習率隨著時間的推移而降低,并且模型最終會收斂。

然而,隨著梯度逐漸趨于穩定時,訓練損失也變得難以改善。在[3]中,Dauphin等人認為,最大限度地減少損失的難度來自于鞍點,而非局部極小值。

AI前線:鞍點是梯度接近于0的點,在誤差曲面中既不是最大值也不是最小值的平滑曲面,則一般結果表現為性能比較差;如果該駐點是局部極小值,那么表現為性能較好,但不是全局最優值。

誤差曲面中的鞍點。鞍點是函數的導數變為零但點不是所有軸上的局部極值的點。(圖片來源:safaribooksonline) 

那么我們該如何擺脫呢?

有幾個選項我們可以考慮。一般來說,從[1]引用一句:

……而不是使用一個固定值的學習率,并隨著時間的推移而降低,如果訓練不會改善我們的損失,我們將根據一些循環函數f來改變每次迭代的學習率。每個周期的迭代次數都是固定的。這種方法讓學習率在合理的邊界值之間循環變化。這有助于解決問題,因為如果我們被困在鞍點上,提高學習率可以更快速地穿越鞍點。

在[2]中,Leslie提出了一種“Triangular”的方法,在每次迭代之后,學習率都會重新開始。

Leslie N. Smith提出的“Triangular”和“Triangular2”循環學習率的方法。在左邊的圖上,min和max lr保持不變。在右邊,每個周期之后的差異減半。

另一種同樣受歡迎的方法是由Loshchilov和Hutter提出的熱重啟的隨機梯度下降法(Stochastic Gradient Descent with Warm Restarts,SGDR)[6]。這種方法主要利用余弦函數作為循環函數,并在每個周期的最大值重新開始學習率。“熱重啟”一詞源于這樣的一個事實:當學習率重新開始的時候,并不是從頭開始,而是來自模型在上一步收斂的參數開始[7]。

AI前線:熱重啟后的初始高學習率用于基本上將參數從它們先前收斂的最小值彈射到不同的損失表面。根據經驗,熱重啟的隨機梯度下降法需要的時間比學習率退火要少2~4倍,且能達到相當或更好的性能。

雖然有這種變化,下面的圖表展示了它的一個實現,其中每個周期都被設置為同一時間周期。

SGDR圖,學習率與迭代。

因此,我們現在有一種減少訓練時間的方法,基本上就是周期性地在“山脈”周圍跳躍(下圖)。

比較固定學習率和循環學習率(圖片來源:ruder.io)

除了節省時間外,研究還表明,使用這些方法往往可以提高分類準確性,而無需進行調優,而且可以在更少的迭代次數內完成。


遷移學習(Transfer Learning)中的學習率

在fast.ai課程中,在解決AI問題時,非常重視利用預先訓練的模型。例如,在解決圖像分類問題時,教授學生如何使用預先訓練好的模型,如VGG或Resnet50,并將其連接到想要預測的任何圖像數據集。

總結如何在fast.ai中完成模型構建(注意該程序不要與fast.ai深度學習庫混淆),下面是我們通常采取的幾個步驟[8]:

1. 啟用數據增強,precompute=True。
2. 使用 lr_find()查找最高的學習率,在此情況下,損失仍在明顯改善。
3. 訓練最后一層從預計算激活1~2個輪數。
4. 在cycle_len=1的情況下訓練最后一層數據增加(即precompute=False)2~3個輪數。
5. 解除所有層的凍結。
6. 將較早的層設置為比下一個較高層低3~10倍的學習率。
7. 再次使用lr_find()
8. 使用cycle_mult=2訓練完整網絡,直到過度擬合。

從上面的步驟中,我們注意到第2步、第5步和第7步關注了學習率。在這篇文章的前半部分,我們已經基本討論了涵蓋了上述步驟中的第2項——我們在這里討論了如何在訓練模型之前得出最佳學習率。

AI前線:輪數,epoch,即對所有訓練數據的一輪遍歷。

在接下來的部分中,我們通過使用SGDR來了解如何通過重新開始學習速率來減少訓練時間和提高準確性,以避免梯度接近于0的區域。

在最后一節中,我們將重點討論差分學習,以及它是如何被用來在訓練模型與預先訓練的模型相結合時確定學習率的。

什么是差分學習?

這是一種在訓練期間為網絡中的不同層設置不同的學習率的方法。這與人們通常如何配置學習率相反,即在訓練期間在整個網絡中使用相同的速率。

這是我為什么喜歡Twitter的原因之一——可以直接從作者本人得到答案。

在寫這篇文章的時候,Jeremy和Sebastian Ruder發表了一篇論文,深入探討了這個話題。所以我估計差分學習率現在有一個新的名字:判別式微調(discriminative fine-tuning)。 :)

AI前線:判別式微調對較底層進行微調以調到一個相較于較高層較低的程度,從而保留通過語言建模所獲得的的知識。它可以避免微調過程中產生嚴重的遺忘。

為了更清楚地說明這個概念,我們可以參考下圖,其中一個預訓練模型被分成3個組,每個組都配置了一個遞增的學習率值。

差分學習率的CNN樣本。圖片來自[3]

這種配置方法背后的直覺是,最初的幾層通常包含數據的非常細粒度的細節,如線條和邊緣——我們通常不希望改變太多,并且保留它的信息。因此,沒有太多的需要去大量改變它們的權重。

相比之下,在后面的層中,比如上面綠色的層——我們可以獲得眼球或嘴巴或鼻子等數據的詳細特征;我們可能不一定要保留它們。

與其他微調方法相比,它表現如何?

在[9]中,有

大云網官方微信售電那點事兒

責任編輯:售電衡衡

免責聲明:本文僅代表作者個人觀點,與本站無關。其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,并請自行核實相關內容。
我要收藏
個贊
?
主站蜘蛛池模板: 国产第九页| 在线观看一级| 国产精品毛片| 国产精品一在线观看| 高清大学生毛片一级| avtom影院入口永久在线观看| a级一级毛片| 亚洲精品欧洲一区二区三区| 亚洲天堂伊人| 欧美另类精品| 欧美精品在线免费观看| 国产一级特黄全黄毛片| 成人男女视频| 永久免费精品视频| 免费看一级视频| 美女毛片大全| 成人精品一区二区激情| 亚洲成a人不卡在线观看| 色偷偷亚洲精品一区| 精品久久久久久乐| 成年网在线观看免费观看网址| 5x性区m免费毛片视频看看| 日韩一级不卡| 欧美激情亚洲一区中文字幕| 国产精品视频免费观看调教网 | 欧美另类videosbestsex久久 | 国产好片无限资源| 18在线| 色视频在线观看视频| 久久99精品久久久久久综合| 国产超薄肉色丝袜足j| 一级a美女毛片| 久久久视频在线| 成人性版蝴蝶影院污| 亚洲人妖女同在线播放| 久久精品视频久久| 成年人在线观看免费| 午夜三级理论在线观看视频| 久久的精品99精品66| 91精品视品在线播放| 特级一级全黄毛片免费|