深度學(xué)習(xí)最常用的學(xué)習(xí)算法:Adam優(yōu)化算法

www.dlworld.cn

聽說你了解深度學(xué)習(xí)最常用的學(xué)習(xí)算法:Adam優(yōu)化算法?-深度學(xué)習(xí)世界
深度學(xué)習(xí)常常需要大量的時間和機算資源進行訓(xùn)練,這也是困擾深度學(xué)習(xí)算法開發(fā)的重大原因。雖然我們可以采用分布式并行訓(xùn)練加速模型的學(xué)習(xí),但所需的計算資源并沒有絲毫減少。而唯有需要資源更少、令模型收斂更快的最優(yōu)化算法,才能從根本上加速機器的學(xué)習(xí)速度和效果,Adam 算法正為此而生!
Adam 優(yōu)化算法是隨機梯度下降算法的擴展式,近來其廣泛用于深度學(xué)習(xí)應(yīng)用中,尤其是計算機視覺和自然語言處理等任務(wù)。本文分為兩部分,前一部分簡要介紹了 Adam 優(yōu)化算法的特性和其在深度學(xué)習(xí)中的應(yīng)用,后一部分從 Adam 優(yōu)化算法的原論文出發(fā),詳細(xì)解釋和推導(dǎo)了它的算法過程和更新規(guī)則。我們希望讀者在讀完兩部分后能了解掌握以下幾點:
Adam 算法是什么,它為優(yōu)化深度學(xué)習(xí)模型帶來了哪些優(yōu)勢。
Adam 算法的原理機制是怎么樣的,它與相關(guān)的 AdaGrad 和 RMSProp 方法有什么區(qū)別。
Adam 算法應(yīng)該如何調(diào)參,它常用的配置參數(shù)是怎么樣的。
Adam 的實現(xiàn)優(yōu)化的過程和權(quán)重更新規(guī)則
Adam 的初始化偏差修正的推導(dǎo)
Adam 的擴展形式:AdaMax

什么是 Adam 優(yōu)化算法?
Adam 是一種可以替代傳統(tǒng)隨機梯度下降過程的一階優(yōu)化算法,它能基于訓(xùn)練數(shù)據(jù)迭代地更新神經(jīng)網(wǎng)絡(luò)權(quán)重。Adam 最開始是由 OpenAI 的 Diederik Kingma 和多倫多大學(xué)的 Jimmy Ba 在提交到 2015 年 ICLR 論文(Adam: A Method for Stochastic Optimization)中提出的。本文前后兩部分都基于該論文的論述和解釋。
首先該算法名為「Adam」,其并不是首字母縮寫,也不是人名。它的名稱來源于適應(yīng)性矩估計(adaptive moment estimation)。在介紹這個算法時,原論文列舉了將 Adam 優(yōu)化算法應(yīng)用在非凸優(yōu)化問題中所獲得的優(yōu)勢:
直截了當(dāng)?shù)貙崿F(xiàn)
高效的計算
所需內(nèi)存少
梯度對角縮放的不變性(第二部分將給予證明)
適合解決含大規(guī)模數(shù)據(jù)和參數(shù)的優(yōu)化問題
適用于非穩(wěn)態(tài)(non-stationary)目標(biāo)
適用于解決包含很高噪聲或稀疏梯度的問題
超參數(shù)可以很直觀地解釋,并且基本上只需極少量的調(diào)參

Adam 優(yōu)化算法的基本機制
Adam 算法和傳統(tǒng)的隨機梯度下降不同。隨機梯度下降保持單一的學(xué)習(xí)率(即 alpha)更新所有的權(quán)重,學(xué)習(xí)率在訓(xùn)練過程中并不會改變。而 Adam 通過計算梯度的一階矩估計和二階矩估計而為不同的參數(shù)設(shè)計獨立的自適應(yīng)性學(xué)習(xí)率。
Adam 算法的提出者描述其為兩種隨機梯度下降擴展式的優(yōu)點集合,即:
適應(yīng)性梯度算法(AdaGrad)為每一個參數(shù)保留一個學(xué)習(xí)率以提升在稀疏梯度(即自然語言和計算機視覺問題)上的性能。
均方根傳播(RMSProp)基于權(quán)重梯度最近量級的均值為每一個參數(shù)適應(yīng)性地保留學(xué)習(xí)率。這意味著算法在非穩(wěn)態(tài)和在線問題上有很有優(yōu)秀的性能。
Adam 算法同時獲得了 AdaGrad 和 RMSProp 算法的優(yōu)點。Adam 不僅如 RMSProp 算法那樣基于一階矩均值計算適應(yīng)性參數(shù)學(xué)習(xí)率,它同時還充分利用了梯度的二階矩均值(即有偏方差/uncentered variance)。具體來說,算法計算了梯度的指數(shù)移動均值(exponential moving average),超參數(shù) beta1 和 beta2 控制了這些移動均值的衰減率。
移動均值的初始值和 beta1、beta2 值接近于 1(推薦值),因此矩估計的偏差接近于 0。該偏差通過首先計算帶偏差的估計而后計算偏差修正后的估計而得到提升。如果對具體的實現(xiàn)細(xì)節(jié)和推導(dǎo)過程感興趣,可以繼續(xù)閱讀該第二部分和原論文。
Adam 算法的高效性
Adam 在深度學(xué)習(xí)領(lǐng)域內(nèi)是十分流行的算法,因為它能很快地實現(xiàn)優(yōu)良的結(jié)果。經(jīng)驗性結(jié)果證明 Adam 算法在實踐中性能優(yōu)異,相對于其他種類的隨機優(yōu)化算法具有很大的優(yōu)勢。
在原論文中,作者經(jīng)驗性地證明了 Adam 算法的收斂性符合理論性的分析。Adam 算法可以在 MNIST 手寫字符識別和 IMDB 情感分析數(shù)據(jù)集上應(yīng)用優(yōu)化 logistic 回歸算法,也可以在 MNIST 數(shù)據(jù)集上應(yīng)用于多層感知機算法和在 CIFAR-10 圖像識別數(shù)據(jù)集上應(yīng)用于卷積神經(jīng)網(wǎng)絡(luò)。他們總結(jié)道:「在使用大型模型和數(shù)據(jù)集的情況下,我們證明了 Adam 優(yōu)化算法在解決局部深度學(xué)習(xí)問題上的高效性。」
Adam 優(yōu)化算法和其他優(yōu)化算法在多層感知機模型中的對比
事實上,Insofar、RMSprop、Adadelta 和 Adam 算法都是比較類似的優(yōu)化算法,他們都在類似的情景下都可以執(zhí)行地非常好。但是 Adam 算法的偏差修正令其在梯度變得稀疏時要比 RMSprop 算法更快速和優(yōu)秀。Insofar 和 Adam 優(yōu)化算法基本是最好的全局選擇。同樣在 CS231n 課程中,Adam 算法也推薦作為默認(rèn)的優(yōu)化算法。
雖然 Adam 算法在實踐中要比 RMSProp 更加優(yōu)秀,但同時我們也可以嘗試 SGD+Nesterov 動量來作為 Adam 的替代。即我們通常推薦在深度學(xué)習(xí)模型中使用 Adam 算法或 SGD+Nesterov 動量法。
Adam 的參數(shù)配置

alpha:同樣也稱為學(xué)習(xí)率或步長因子,它控制了權(quán)重的更新比率(如 0.001)。較大的值(如 0.3)在學(xué)習(xí)率更新前會有更快的初始學(xué)習(xí),而較小的值(如 1.0E-5)會令訓(xùn)練收斂到更好的性能。
beta1:一階矩估計的指數(shù)衰減率(如 0.9)。
beta2:二階矩估計的指數(shù)衰減率(如 0.999)。該超參數(shù)在稀疏梯度(如在 NLP 或計算機視覺任務(wù)中)中應(yīng)該設(shè)置為接近 1 的數(shù)。
epsilon:該參數(shù)是非常小的數(shù),其為了防止在實現(xiàn)中除以零(如 10E-8)。
另外,學(xué)習(xí)率衰減同樣可以應(yīng)用到 Adam 中。原論文使用衰減率 alpha = alpha/sqrt(t) 在 logistic 回歸每個 epoch(t) 中都得到更新。
Adam 論文建議的參數(shù)設(shè)定:
測試機器學(xué)習(xí)問題比較好的默認(rèn)參數(shù)設(shè)定為:alpha=0.001、beta1=0.9、beta2=0.999 和 epsilon=10E?8。
我們也可以看到流行的深度學(xué)習(xí)庫都采用了該論文推薦的參數(shù)作為默認(rèn)設(shè)定。
TensorFlow:learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08.
Keras:lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0.
Blocks:learning_rate=0.002, beta1=0.9, beta2=0.999, epsilon=1e-08, decay_factor=1.
Lasagne:learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08
Caffe:learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08
MxNet:learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-8
Torch:learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-8
在 第一部分中,我們討論了 Adam 優(yōu)化算法在深度學(xué)習(xí)中的基本特性和原理:
Adam 是一種在深度學(xué)習(xí)模型中用來替代隨機梯度下降的優(yōu)化算法。
Adam 結(jié)合了 AdaGrad 和 RMSProp 算法最優(yōu)的性能,它還是能提供解決稀疏梯度和噪聲問題的優(yōu)化方法。
Adam 的調(diào)參相對簡單,默認(rèn)參數(shù)就可以處理絕大部分的問題。
而接下來的第二部分我們可以從原論文出發(fā)具體展開 Adam 算法的過程和更新規(guī)則等。
論文: Adam: A Method for Stochastic Optimization



我們提出了 Adam 算法,即一種對隨機目標(biāo)函數(shù)執(zhí)行一階梯度優(yōu)化的算法,該算法基于適應(yīng)性低階矩估計。Adam 算法很容易實現(xiàn),并且有很高的計算效率和較低的內(nèi)存需求。Adam 算法梯度的對角縮放(diagonal rescaling)具有不變性,因此很適合求解帶有大規(guī)模數(shù)據(jù)或參數(shù)的問題。該算法同樣適用于解決大噪聲和稀疏梯度的非穩(wěn)態(tài)(non-stationary)問題。超參數(shù)可以很直觀地解釋,并只需要少量調(diào)整。本論文還討論了 Adam 算法與其它一些相類似的算法。我們分析了 Adam 算法的理論收斂性,并提供了收斂率的區(qū)間,我們證明收斂速度在在線凸優(yōu)化框架下達(dá)到了最優(yōu)。經(jīng)驗結(jié)果也展示了 Adam 算法在實踐上比得上其他隨機優(yōu)化方法。最后,我們討論了 AdaMax,即一種基于無窮范數(shù)(infinity norm)的 Adam 變體。



如上算法所述,在確定了參數(shù)α、β1、β2 和隨機目標(biāo)函數(shù) f(θ) 之后,我們需要初始化參數(shù)向量、一階矩向量、二階矩向量和時間步。然后當(dāng)參數(shù)θ沒有收斂時,循環(huán)迭代地更新各個部分。即時間步 t 加 1、更新目標(biāo)函數(shù)在該時間步上對參數(shù)θ所求的梯度、更新偏差的一階矩估計和二階原始矩估計,再計算偏差修正的一階矩估計和偏差修正的二階矩估計,然后再用以上計算出來的值更新模型的參數(shù)θ。
  1. 算法
    上圖偽代碼為展現(xiàn)了 Adam 算法的基本步驟。假定 f(θ) 為噪聲目標(biāo)函數(shù):即關(guān)于參數(shù)θ可微的隨機標(biāo)量函數(shù)。我們對怎樣減少該函數(shù)的期望值比較感興趣,即對于不同參數(shù)θ,f 的期望值 E[f(θ)]。其中 f1(θ), ..., , fT (θ) 表示在隨后時間步 1, ..., T 上的隨機函數(shù)值。這里的隨機性來源于隨機子樣本(小批量)上的評估和固有的函數(shù)噪聲。而



    表示 ft(θ) 關(guān)于θ的梯度,即在實踐步驟 t 下 ft 對θ的偏導(dǎo)數(shù)向量。
    該算法更新梯度的指數(shù)移動均值(mt)和平方梯度(vt),而參數(shù) β1、β2 ∈ [0, 1) 控制了這些移動均值(moving average)指數(shù)衰減率。移動均值本身使用梯度的一階矩(均值)和二階原始矩(有偏方差)進行估計。然而因為這些移動均值初始化為 0 向量,所以矩估計值會偏差向 0,特別是在初始時間步中和衰減率非常小(即β接近于 1)的情況下是這樣的。但好消息是,初始化偏差很容易抵消,因此我們可以得到偏差修正(bias-corrected)的估計 mt hat 和 vt hat。
    注意算法的效率可以通過改變計算順序而得到提升,例如將偽代碼最后三行循環(huán)語句替代為以下兩個:



    2.1 Adam 的更新規(guī)則
    Adam 算法更新規(guī)則的一個重要特征就是它會很謹(jǐn)慎地選擇步長的大小。假定ε=0,則在時間步 t 和參數(shù)空間上的有效下降步長為

    有效下降步長有兩個上確界:即在



    情況下,有效步長的上確界滿足

    和其他情況下滿足 |?t| ≤ α。第一種情況只有在極其稀疏的情況下才會發(fā)生:即梯度除了當(dāng)前時間步不為零外其他都為零。而在不那么稀疏的情況下,有效步長將會變得更小。當(dāng)

    時,我們有

    ,因此可以得出上確界 |?t| < α。在更通用的場景中,因為 |E[g]/ p E[g^2]| ≤ 1,我們有

    。每一個時間步的有效步長在參數(shù)空間中的量級近似受限于步長因子α,即

    。這個可以理解為在當(dāng)前參數(shù)值下確定一個置信域,因此其要優(yōu)于沒有提供足夠信息的當(dāng)前梯度估計。這正可以令其相對簡單地提前知道α正確的范圍。

    對于許多機器學(xué)習(xí)模型來說,我們知道好的最優(yōu)狀態(tài)是在參數(shù)空間內(nèi)的集合域上有極高的概率。這并不罕見,例如我們可以在參數(shù)上有一個先驗分布。因為α確定了參數(shù)空間內(nèi)有效步長的量級(即上確界),我們常常可以推斷出α的正確量級,而最優(yōu)解也可以從θ0 開始通過一定量的迭代而達(dá)到。我們可以將



    稱之為信噪比(signal-to-noise ratio/SNR)。如果 SNR 值較小,那么有效步長?t 將接近于 0,目標(biāo)函數(shù)也將收斂到極值。這是非常令人滿意的屬性,因為越小的 SNR 就意味著算法對方向

    是否符合真實梯度方向存在著越大的不確定性。例如,SNR 值在最優(yōu)解附近趨向于 0,因此也會在參數(shù)空間有更小的有效步長:即一種自動退火(automatic annealing)的形式。有效步長?t 對于梯度縮放來說仍然是不變量,我們?nèi)绻靡蜃?c 重縮放(rescaling)梯度 g,即相當(dāng)于用因子 c 重縮放

    和用因子 c^2 縮放

    ,而在計算信噪比時縮放因子會得到抵消:

    3 初始化偏差修正
    正如本論文第二部分算法所述,Adam 利用了初始化偏差修正項。本部分將由二階矩估計推導(dǎo)出這一偏差修正項,一階矩估計的推導(dǎo)完全是相似的。首先我們可以求得隨機目標(biāo)函數(shù) f 的梯度,然后我們希望能使用平方梯度(squared gradient)的指數(shù)移動均值和衰減率β2 來估計它的二階原始矩(有偏方差)。令 g1, ..., gT 為時間步序列上的梯度,其中每個梯度都服從一個潛在的梯度分布 gt ~ p(gt)。現(xiàn)在我們初始化指數(shù)移動均值 v0=0(零向量),而指數(shù)移動均值在時間步 t 的更新可表示為:

    其中 gt^2 表示 Hadamard 積 gt⊙gt,即對應(yīng)元素之間的乘積。同樣我們可以將其改寫為在前面所有時間步上只包含梯度和衰減率的函數(shù),即消去 v:

    我們希望知道時間步 t 上指數(shù)移動均值的期望值 E[vt] 如何與真實的二階矩

    相關(guān)聯(lián),所以我們可以對這兩個量之間的偏差進行修正。下面我們同時對表達(dá)式(1)的左邊和右邊去期望,即如下所示:

    如果真實二階矩 E[g 2 i ] 是靜態(tài)的(stationary),那么ζ = 0。否則 ζ 可以保留一個很小的值,這是因為我們應(yīng)該選擇指數(shù)衰減率 β1 以令指數(shù)移動均值分配很小的權(quán)重給梯度。所以初始化均值為零向量就造成了只留下了 (1 ? βt^2 ) 項。我們因此在算法 1 中除以了ζ項以修正初始化偏差。
    在稀疏矩陣中,為了獲得一個可靠的二階矩估計,我們需要選擇一個很小的 β2 而在許多梯度上取均值。然而正好是這種小β2 值的情況導(dǎo)致了初始化偏差修正的缺乏,因此也就令初始化步長過大。
  2. 收斂性分析
    本論文使用了 Zinkevich 2003 年提出的在線學(xué)習(xí)框架分析了 Adam 算法的收斂性。
  3. 相關(guān)研究工作
    與 Adam 算法有直接聯(lián)系的優(yōu)化方法是 RMSProp (Tieleman & Hinton, 2012; Graves, 2013) 和 AdaGrad (Duchi et al., 2011)。
    6 試驗



    圖 1:在 MNIST 圖片集和有 1 萬條詞袋(BoW)特征向量的 IMDB 電影評論數(shù)據(jù)集上訓(xùn)練帶有負(fù)對數(shù)似然函數(shù)的 Logistic 回歸。



    圖 2:在 MNIST 圖片數(shù)據(jù)集上訓(xùn)練多層神經(jīng)網(wǎng)絡(luò)。(a)圖是使用了 dropout 隨機正則化的神經(jīng)網(wǎng)絡(luò)。(b)圖是使用確定性損失函數(shù)的神經(jīng)網(wǎng)絡(luò)。

    圖 3:卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練損失。左圖表示前三個 epoch 的訓(xùn)練損失,右圖表示所有 45 個 epoch 上的訓(xùn)練損失。

    圖 4:在變分自編碼器(VAE)中帶偏差修正項(紅色)和沒有偏差修正項(綠色)的損失對比。
    7 擴展
    7.1 ADAMAX
    在 Adam 中,單個權(quán)重的更新規(guī)則是將其梯度與當(dāng)前和過去梯度的 L^2 范數(shù)(標(biāo)量)成反比例縮放。而我們可以將基于 L^2 范數(shù)的更新規(guī)則泛化到基于 L^p 范數(shù)的更新規(guī)則中。雖然這樣的變體會因為 p 的值較大而在數(shù)值上變得不穩(wěn)定,但是在特例中,我們令 p → ∞會得出一個極其穩(wěn)定和簡單的算法(見算法 2)。現(xiàn)在我們將推導(dǎo)這個算法,在使用 L^p 范數(shù)情況下,時間 t 下的步長和 vt^(1/p) 成反比例變化。




    注意這里的衰減項等價地為 β2^p,而不是 β2。現(xiàn)在令 p → ∞,并定義

    然后有:

    該表達(dá)式就對應(yīng)相當(dāng)于極其簡單的迭代公式:

    其中初始值 u0 = 0。注意這里十分便利,在該情況下我們不需要修正初始化偏差。同樣 AdaMax 參數(shù)更新的量級要比 Adam 更簡單,即|?t| ≤ α。
    ?
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,578評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,701評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,691評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,974評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,694評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,026評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,015評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,193評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,719評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,442評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,668評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,151評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,846評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,255評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,592評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,394評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內(nèi)容