導(dǎo)讀
幾種流行的優(yōu)化器的介紹以及優(yōu)缺點分析,并給出了選擇優(yōu)化器的幾點指南。
本文概述了計算機視覺、自然語言處理和機器學(xué)習(xí)中常用的優(yōu)化器。此外,你會找到一個基于三個問題的指導(dǎo)方針,以幫助你的下一個機器學(xué)習(xí)項目選擇正確的優(yōu)化器。
找一份相關(guān)的研究論文,開始使用相同的優(yōu)化器。
參考表1并將數(shù)據(jù)集的屬性與不同優(yōu)化器的優(yōu)缺點進行比較。
根據(jù)可用的資源調(diào)整你的選擇。
介紹
為你的機器學(xué)習(xí)項目選擇一個好的優(yōu)化器是非常困難的。熱門的深度學(xué)習(xí)庫,如PyTorch或TensorFlow,提供了廣泛的優(yōu)化器的選擇,不同的優(yōu)化器,每個都有自己的優(yōu)缺點。然而,選擇錯誤的優(yōu)化器可能會對你的機器學(xué)習(xí)模型的性能產(chǎn)生重大的負(fù)面影響,這使得優(yōu)化器在構(gòu)建、測試和部署機器學(xué)習(xí)模型的過程中成為一個關(guān)鍵的設(shè)計選擇。
根據(jù)優(yōu)化器的不同,模型的性能可能會有很大的不同。
選擇優(yōu)化器的問題在于,由于no-free-lunch定理,沒有一個單一的優(yōu)化器可以在所有場景中超越其他的。事實上,優(yōu)化器的性能高度依賴于設(shè)置。所以,中心問題是:
哪個優(yōu)化器最適合我的項目的特點?
下面的內(nèi)容給出了回答上述問題的一個指南。它由兩個主要段落組成:在第一部分,我將向你快速介紹最常用的優(yōu)化器。在第二部分中,我將為你提供一個三步計劃來為你的項目選擇最好的優(yōu)化器。
一些最常用的優(yōu)化器
在深度學(xué)習(xí)中,幾乎所有流行的優(yōu)化器都基于梯度下降。這意味著他們反復(fù)估計給定的損失函數(shù)L的斜率,并將參數(shù)向相反的方向移動(因此向下爬升到一個假設(shè)的全局最小值)。這種優(yōu)化器最簡單的例子可能是隨機梯度下降(或SGD),自20世紀(jì)50年代以來一直使用。在2010年代,自適應(yīng)梯度的使用,如AdaGrad或Adam已經(jīng)變得越來越流行了。然而,最近的趨勢表明,部分研究界重新使用SGD而不是自適應(yīng)梯度方法。此外,當(dāng)前深度學(xué)習(xí)的挑戰(zhàn)帶來了新的SGD變體,如LARS或LAMB。例如,谷歌研究在其最新論文中使用LARS訓(xùn)練了一個強大的自監(jiān)督模型。
下面的部分將介紹最流行的優(yōu)化器。如果你已經(jīng)熟悉了這些概念,請轉(zhuǎn)到“如何選擇正確的優(yōu)化器”部分。
我們將使用以下符號:用w表示參數(shù),用g表示模型的梯度,α為每個優(yōu)化器的全局學(xué)習(xí)率,t為時間步長。
Stochastic Gradient Descent (SGD)
Stochastic Gradient Descent (SGD)的更新規(guī)則
在SGD中,優(yōu)化器基于一個小batch估計最陡下降的方向,并在這個方向前進一步。由于步長是固定的,SGD會很快陷入平坦區(qū)或陷入局部極小值。
SGD with Momentum
帶動量的SGD的更新規(guī)則
其中β < 1,使用了動量,SGD可以在持續(xù)的方向上進行加速(這就是為什么也被叫做“重球方法”)。這個加速可以幫助模型擺脫平坦區(qū),使它更不容易陷入局部最小值。
AdaGrad
AdaGrad的更新規(guī)則
AdaGrad是首個成功的利用自適應(yīng)學(xué)習(xí)率的方法之一(因此得名)。AdaGrad根據(jù)梯度的平方和的倒數(shù)的平方根來衡量每個參數(shù)的學(xué)習(xí)速率。這個過程將稀疏梯度方向上的梯度放大,從而允許在這些方向上執(zhí)行更大的步驟。其結(jié)果是:AdaGrad在具有稀疏特征的場景中收斂速度更快。
RMSprop
RMSprop的更新規(guī)則
RMSprop是一個未發(fā)布的優(yōu)化器,在過去幾年中被過度使用。這個想法與AdaGrad相似,但是梯度的重新縮放不那么激進:梯度的平方的總和被梯度平方的移動平均值所取代。RMSprop通常與動量一起使用,可以理解為Rprop對mini-batch設(shè)置的適應(yīng)。
Adam
Adam的更新規(guī)則
Adam將AdaGrad,RMSprop和動量法結(jié)合在一起。步長方向由梯度的移動平均值決定,步長約為全局步長的上界。此外,梯度的每個維度都被重新縮放,類似于RMSprop。Adam和RMSprop(或AdaGrad)之間的一個關(guān)鍵區(qū)別是,矩估計m和v被糾正為偏向于零。Adam以通過少量的超參數(shù)調(diào)優(yōu)就能獲得良好性能而聞名。
LARS
LARS的更新規(guī)則
LARS是使用動量的SGD的一種擴展,具有適應(yīng)每層學(xué)習(xí)率的能力。它最近引起了研究界的注意。原因是由于可用數(shù)據(jù)量的穩(wěn)步增長,機器學(xué)習(xí)模型的分布式訓(xùn)練已經(jīng)流行起來。其結(jié)果是批大小開始增長。然而,這導(dǎo)致了訓(xùn)練中的不穩(wěn)定。Yang等人認(rèn)為,這些不穩(wěn)定性源于某些層的梯度范數(shù)和權(quán)重范數(shù)之間的不平衡。因此,他們提出了一個優(yōu)化器,該優(yōu)化器基于一個“trust”參數(shù)η < 1和該層的梯度的范數(shù)的倒數(shù),對每一層的學(xué)習(xí)率進行縮放。
如何選擇正確的優(yōu)化器?
如上所述,為你的機器學(xué)習(xí)問題選擇正確的優(yōu)化器是困難的。更具體地說,沒有一勞永逸的解決方案,必須根據(jù)手頭的特定問題仔細選擇優(yōu)化器。在下一節(jié)中,我將提出在決定使用某個優(yōu)化器之前應(yīng)該問自己的三個問題。
與你的數(shù)據(jù)集和任務(wù)類似的state-of-the-art的結(jié)果是什么?使用過了哪些優(yōu)化器,為什么?
如果你正在使用新的機器學(xué)習(xí)方法,可能會有一篇或多篇涵蓋類似問題或處理類似數(shù)據(jù)的可靠論文。通常,論文的作者已經(jīng)做了廣泛的交叉驗證,并且只報告了最成功的配置。試著理解他們選擇優(yōu)化器的原因。
舉例:假設(shè)你想訓(xùn)練生成對抗性網(wǎng)絡(luò)(GAN)來對一組圖像執(zhí)行超分辨率。在一些研究之后,你偶然發(fā)現(xiàn)了一篇論文:”Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network,” ,其中研究人員使用Adam優(yōu)化器來解決完全相同的問題。Wilson等人認(rèn)為,訓(xùn)練GANs并不等于解決最優(yōu)化問題,Adam可能非常適合這樣的場景。因此,在這種情況下,Adam是優(yōu)化器的一個很好的選擇。
你的數(shù)據(jù)集是否具有某些優(yōu)化器的優(yōu)勢?如果有,是哪些,如何利用這些優(yōu)勢?
表1顯示了不同優(yōu)化器及其優(yōu)缺點的概述。嘗試找到與數(shù)據(jù)集的特征、訓(xùn)練設(shè)置和目標(biāo)相匹配的優(yōu)化器。
某些優(yōu)化器在具有稀疏特征的數(shù)據(jù)上表現(xiàn)得非常好,而另一些優(yōu)化器在將模型應(yīng)用于之前未見過的數(shù)據(jù)時可能表現(xiàn)得更好。一些優(yōu)化器在大batch中工作得很好,而另一些優(yōu)化器可以收斂到很陡峭的極小值但是泛化效果不好。
表1:流行的優(yōu)化器的總結(jié),突出它們的優(yōu)點和缺點。state memory列表示優(yōu)化器所需的字節(jié)數(shù) —— 除了梯度所需的內(nèi)存之外。其中,n為機器學(xué)習(xí)模型的參數(shù)個數(shù)。例如,沒有動量的SGD只需要內(nèi)存來存儲梯度,而有動量的SGD也需要存儲梯度的移動平均值。
例子:對于你當(dāng)前工作的項目,你必須將用戶反饋分為積極反饋和消極反饋。你考慮使用bag-of-words作為機器學(xué)習(xí)模型的輸入特征。由于這些特征可能非常稀疏,你決定使用自適應(yīng)梯度的方法。但是你想用哪一種呢?考慮表1,你看到看到AdaGrad具有自適應(yīng)梯度方法中最少的可調(diào)參數(shù)??吹侥愕捻椖坑邢薜臅r間表,你選擇了AdaGrad作為優(yōu)化器。
你的項目所具有資源是什么?
項目中可用的資源也會影響選擇哪個優(yōu)化器。計算限制或內(nèi)存約束,以及項目的時間表可以縮小可行選擇的范圍。再次查看表1,你可以看到不同的內(nèi)存需求和每個優(yōu)化器的可調(diào)參數(shù)數(shù)量。此信息可以幫助你評估你的設(shè)置是否支持優(yōu)化器所需的資源。
例子:你在做一個項目,在該項目中,你想在家用計算機上的圖像數(shù)據(jù)集上訓(xùn)練一個自監(jiān)督模型(例如SimCLR)。對于SimCLR這樣的模型,性能隨著batch size大小的增加而增加。因此,你希望盡可能地節(jié)省內(nèi)存,以便能夠進行大batch的訓(xùn)練。你選擇一個簡單的不帶動量的隨機梯度下降作為你的優(yōu)化器,因為與其他優(yōu)化器相比,它需要最少的額外內(nèi)存來存儲狀態(tài)。
總結(jié)
嘗試所有可能的優(yōu)化器來為自己的項目找到最好的那一個并不總是可能的。在這篇博客文章中,我概述了最流行的優(yōu)化器的更新規(guī)則、優(yōu)缺點和需求。此外,我列出了三個問題來指導(dǎo)你做出明智的決定,即機器學(xué)習(xí)項目應(yīng)該使用哪個優(yōu)化器。
作為一個經(jīng)驗法則:如果你有資源找到一個好的學(xué)習(xí)率策略,帶動量的SGD是一個可靠的選擇。如果你需要快速的結(jié)果而不需要大量的超參數(shù)調(diào)優(yōu),請使用自適應(yīng)梯度方法。
責(zé)任編輯:lq
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4284瀏覽量
62325 -
機器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8353瀏覽量
132315 -
數(shù)據(jù)集
+關(guān)注
關(guān)注
4文章
1200瀏覽量
24621
原文標(biāo)題:在機器學(xué)習(xí)項目中該如何選擇優(yōu)化器
文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論