• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      深度學習常用優(yōu)化算法研究

      2019-07-19 01:30:48
      關鍵詞:動量集上梯度

      賈 桐

      (華北計算機系統(tǒng)工程研究所,北京 100083)

      0 引言

      隨著人工智能技術的盛行,深度學習越來越受到學術界和工業(yè)界的關注,而優(yōu)化算法的選擇和使用則直接決定了一個深度學習任務的成敗[1]。本文將依次介紹深度學習領域常用的梯度下降和其啟發(fā)式變種優(yōu)化算法,從理論角度剖析每種算法的設計思想和原理,分析算法的優(yōu)缺點,并在實際數(shù)據(jù)集上對比不同優(yōu)化算法的性能,最后對深度學習任務中優(yōu)化算法的使用技巧和注意事項進行總結。

      1 深度學習建模

      1.1 優(yōu)化建模

      深度學習[2](deep learning)本質(zhì)為一個無約束優(yōu)化問題,可以將其建模為一個最小化期望風險(expected risk)的問題,形式化表示如下:

      minJ(θ)εD~p(x,y)L(f(x;θ)

      (1)

      其中,x和y分別為樣本的特征向量和監(jiān)督值;f為模型的推理函數(shù),θ為該推理函數(shù)的參數(shù),形式固定;L為損失函數(shù),一般情況下回歸問題的損失函數(shù)定義為平方誤差(mean squared error),分類問題的損失函數(shù)定義為交叉熵(cross entropy)。

      通常情況下假設所有樣本滿足獨立同分布的條件,因此目標函數(shù)可以定義為所有訓練樣本上的經(jīng)驗風險[3](empirical risk):

      minJ(θ)=εD~p(x,y)L(f(x;θ),y)

      (2)

      因此求解一個深度學習模型的最優(yōu)解,可等價地轉(zhuǎn)換為求解式(2)表示的一個無約束優(yōu)化問題。

      1.2 優(yōu)化策略

      一般而言,考慮到深度學習龐大的參數(shù)量和高度非凸性,通常采用迭代式、基于梯度信息的優(yōu)化求解策略。選擇迭代式的算法,使得可以持續(xù)優(yōu)化目標函數(shù),逐步逼近并收斂于最優(yōu)解所在位置。而采取梯度信息而不計算Hessian矩陣,從理論角度,算法迭代的每一步都使用采樣數(shù)據(jù)進行優(yōu)化,因此具有很強的隨機性,所以此時采用更精確的方式計算優(yōu)化方向并無太大意義;從工程角度,由于深度學習模型本身巨大的參數(shù)量,計算Hessian矩陣會帶來非常巨大的時間和空間開銷,甚至實際設備資源和任務實效要求根本無法滿足支持計算Hessian[4]。

      因此一般而言,只計算目標函數(shù)關于訓練參數(shù)的梯度,并且在具體每一步優(yōu)化迭代中,會隨機從所有訓練樣本中抽樣部分樣本用于當前梯度計算,即選擇批數(shù)據(jù)量。

      1.3 批數(shù)據(jù)量選擇

      以最基本的梯度下降(gradient descent)優(yōu)化算法為例,根據(jù)批數(shù)據(jù)量大小選擇的不同,優(yōu)化算法可分為批梯度下降算法(batch gradient descent)、隨機梯度下降算法(stochastic gradient descent)和迷你批梯度下降算法(mini-batch gradient descent)。批梯度下降算法在每一步迭代過程中使用全部訓練樣本,因此參數(shù)更新方向最穩(wěn)定,但是時間開銷和空間開銷最大;與之恰恰相反,隨機梯度下降算法在每一步迭代過程中只使用隨機抽樣的一個樣本,因此時間和空間開銷都是最小的,但是由于樣本的隨機性,參數(shù)的更新方向是最不穩(wěn)定的;迷你批梯度下降算法則是二者的折中,算法每一次迭代隨機從n個樣本中采樣m個樣本,因此該方式中和了批梯度下降和隨機梯度下降的優(yōu)勢和劣勢,使得在空間開銷和時間開銷合理的情況下,獲得相對較為穩(wěn)定的參數(shù)更新方向。注意其中迷你批量m的大小為優(yōu)化算法的超參數(shù),一般而言當樣本分布的隨機性強時,m可設置為相對較大的值以平穩(wěn)化隨機性[5]。

      在實際優(yōu)化問題中一般均采用迷你批梯度下降算法及其變種。

      2 基于梯度計算的優(yōu)化算法

      2.1 隨機梯度下降

      隨機梯度下降[6](Stochastic Gradient Descent,SGD)是最基本的基于梯度的優(yōu)化算法,并且是其他一階優(yōu)化算法的基礎。在每一步迭代中,選擇最優(yōu)優(yōu)化方向的最直觀方式為:沿最陡峭的方向,即最速下降的方向進行迭代更新,因此隨機梯度下降算法又被稱為最速下降(steepest descent)算法,而這個方向就是梯度(最速上升方向)的反方向。因此算法每一步迭代的更新公式如下:

      (3)

      θ←θ-η⊙g

      (4)

      其中,η表示當前迭代步的學習率(learning rate)。

      2.2 動量法

      隨機梯度下降算法在每一步優(yōu)化方向更新時只使用了當前步隨機采樣樣本的信息,因此具有相對較強的隨機性,從而使得優(yōu)化方向一直“震蕩”,同時由于震蕩的原因,收斂速度相對較慢,因此引入了動量優(yōu)化算法[7](Momentum)。該算法在每一步迭代過程中,保留上一輪更新后的參數(shù)動量,并加入該輪的梯度,從而降低算法在收斂過程中的震蕩程度,同時提高收斂速度。迭代更新公式如下:

      (5)

      v←α·v-η·g

      (6)

      其中,α為動量累積系數(shù),一般設置為0.9,動量算法相當于累積過去最近1/(1-α)步更新方向。

      2.3 Nesterov動量法

      Nesterov[8]動量算法是2.2節(jié)所述動量算法的更新,該算法與Momentum唯一的不同在于,Nesterov算法會先根據(jù)當前位置預判前方地形,從而移動到一個新的預估位置,然后在該位置計算梯度,最后將所得梯度與歷史累積動量加權后的方向作為真正更新方向。因此算法迭代更新公式如下:

      (7)

      (8)

      v←α·v-η·g

      (9)

      θ←θ+v

      (10)

      對于式(7)、式(8)可以理解為優(yōu)化過程中順應大勢所趨,在主流的方向上先行邁出一步,因此在一定程度上會加速收斂速度。

      2.4 AdaGrad

      上述動量法和Nesterov動量法雖然相較于SGD優(yōu)化了更新方向,但是對于學習率卻沒有起到調(diào)節(jié)作用,因此在實際深度學習的優(yōu)化過程中,存在以下問題:(1)在每一步迭代更新中,學習率的大小需要人為設置。學習率太小導致收斂速度太慢,學習率太大又會導致在損失函數(shù)最小值點附近波動甚至發(fā)散,因此找到一個合適的學習率十分困難。(2)若想要調(diào)節(jié)學習率,就得人為設置學習率衰減策略,然而在訓練過程中,人為設置衰減策略的學習率不能夠自動匹配數(shù)據(jù)的特征。(3)所有參數(shù)維度的更新都使用相同的學習率。如果數(shù)據(jù)非常稀疏,并且特征的頻率大為不同,那么不應該對所有的特征使用相同的學習率,而應對出現(xiàn)頻率低的特征使用相對較大的學習率以保障學習充分,對出現(xiàn)頻率高的特征使用相對較小的學習率以防止過度學習。(4)很難避免鞍點(saddle point)。因此解決辦法是使用自適應學習率的優(yōu)化算法(adaptive learning rate optimization algorithm)。

      AdaGrad[9]就是最基本的自適應學習率優(yōu)化算法,其更新方式如下:

      (11)

      r←r+g⊙g

      (12)

      (13)

      θ←θ+Δθ

      (14)

      該算法利用變量r累積二階動量,從而使得更新頻繁的維度擁有較大的累積動量平方值,因此實際更新的學習率較小,從而避免了過度更新;而總是得不到更新的維度對應有較小的累積動量平方值,因此實際更新時會執(zhí)行較大的學習率,從而保障了充分更新。

      該算法雖然實現(xiàn)了不同維度上學習率自適應地調(diào)節(jié),但是存在一個嚴重的問題:訓練后期更新速度停滯不前甚至終止更新。因為隨著動量平方的不斷累積,每一個維度r的對應值都不斷增大,導致每一個維度的學習率逐漸變小,從而當訓練到后期階段時,由于學習率過小使得訓練停滯甚至提前終止。因此為了解決這個問題,之后又出現(xiàn)了更為智能的優(yōu)化算法,使得在任意特定維度上,隨著訓練階段的變換,學習率也可以進行增大縮小的自適應調(diào)節(jié)。

      2.5 RMSProp

      RMSProp[10]優(yōu)化算法是對AdaGrad算法最直接的改進,參考于動量方法在累積動量上采用滑動平均,RMSProp在累積動量平方上采取滑動平均,從而避免了累積動量平方越來越大的問題,因此該算法只是將式(12)替換為了如下形式:

      r←ρr+(1-ρ)g⊙g

      (15)

      于是該變量相當于累積過去最近1/(1-p)個迭代的動量,如果某一維度上變量相較于過去一直沒有得到有效充分的更新,那么其對應的累積動量平方值將會變小,因此學習率將會變大,這就是RMSProp算法可以使同一維度在不同時間段進行學習率自適應調(diào)節(jié)的原因。

      2.6 Adam

      Adam[11]算法為集大成于一身的優(yōu)化方式,其對于優(yōu)化方向的選擇采取了Momentum動量法的方式,對于學習率的選擇采取了RMSProp的方式。在此基礎上,該算法還對一階動量累積和二階動量累積進行了校正,近似為對期望的無偏估計。算法的迭代更新公式如下:

      (16)

      t←t+1

      (17)

      s←ρ1s+(1-ρ1)g

      (18)

      r←ρ2r+(1-ρ2)g⊙g

      (19)

      (20)

      (21)

      (22)

      θ←θ+Δθ

      (23)

      3 算法應用選擇策略

      實際應用算法時有以下選擇策略:

      (1)算法孰優(yōu)孰劣尚無定論。一般而言入門建議選擇Nesterov優(yōu)化算法或Adam優(yōu)化算法。

      (2)選擇自身熟練的優(yōu)化算法。這樣在優(yōu)化過程中可以更熟練地利用經(jīng)驗進行超參數(shù)調(diào)優(yōu),大大減少模型優(yōu)化過程帶來的意外性和不確定性。

      (3)在訓練前期選擇較大批數(shù)據(jù)量,在訓練后期選擇較小批數(shù)據(jù)量。批數(shù)據(jù)量較大時,數(shù)據(jù)方差理論上較小,因此計算所得梯度更加穩(wěn)定,從而使得在前期的訓練優(yōu)化中少走彎路,以較為平穩(wěn)的方式到達最優(yōu)點附近;在訓練后期選擇相對較小的批數(shù)據(jù)量可以充分利用數(shù)據(jù)的不穩(wěn)定性,增強隨機震蕩的程度,從而更有可能跳出鞍點。

      (4)在選擇優(yōu)化算法前需要先充分了解數(shù)據(jù),如果數(shù)據(jù)維度之間的分布均勻,那么推薦使用譬如SGD的非自適應的算法;而當數(shù)據(jù)非常稀疏時,則需優(yōu)先考慮譬如Adam等自適應優(yōu)化算法。

      (5)需要根據(jù)階段需求選擇優(yōu)化算法。在模型設計實驗階段,因為需要快速驗證新模型的效果,所以可先使用Adam算法進行快速實驗;而在模型上線或待發(fā)布階段,因為需要追求極致的效果,所以可用精調(diào)的SGD優(yōu)化算法或動量算法進行模型的極致優(yōu)化。

      (6)先用小數(shù)據(jù)集進行實驗。因為一般而言數(shù)據(jù)都是從原始特征空間中抽樣而得到的,因此優(yōu)化算法的收斂速度與數(shù)據(jù)集的大小關系不大[12]。因此可以先利用一個具有代表性的小數(shù)據(jù)集進行實驗,測試得到最好的優(yōu)化算法,并通過參數(shù)搜索尋找最優(yōu)的優(yōu)化超參數(shù)。

      (7)考慮不同算法的組合。實際優(yōu)化的時候,可以先采取Adam優(yōu)化算法進行快速逼近收斂,而后在某個特定條件下切換至SGD算法進行精確搜索。

      (8)訓練數(shù)據(jù)集一定要充分打散。這樣在使用自適應算法時,可以避免因為學習過度或不足,導致優(yōu)化方向出現(xiàn)偏差的問題。

      (9)訓練過程中需要持續(xù)監(jiān)控訓練集和驗證集。具體是監(jiān)控目標函數(shù)值以及一系列評價指標。其中監(jiān)控訓練集是為了保障模型進行充分、正確的訓練,即優(yōu)化方向正確,學習率適宜充足;而監(jiān)控驗證集是為了避免模型訓練過擬合,當出現(xiàn)訓練集上得分很好而驗證集上評價準則得分過低時,需要及時終止訓練過程,重新評估數(shù)據(jù)、模型、目標函數(shù)和優(yōu)化算法,制定新的學習策略。

      (10)為訓練過程制定合適的學習率衰減策略。因為需要保證訓練前期的學習率足夠大,快速收斂,而后期學習率相對較小,從而避免不收斂甚至發(fā)散的問題。具體的制定策略有很多,譬如每遍歷N遍數(shù)據(jù)集就衰減一次。一般采取余弦周期學習率衰減策略,有助于跳出鞍點。

      4 實驗與結果分析

      4.1 數(shù)據(jù)集介紹

      實驗中使用MNIST[13]數(shù)據(jù)集,該數(shù)據(jù)集為全球最權威的手寫體識別數(shù)據(jù)集,由美國郵政系統(tǒng)開發(fā),手寫內(nèi)容為0~9阿拉伯數(shù)字,內(nèi)容采集于美國人口統(tǒng)計局的員工和高中生。

      4.2 實驗設置

      實驗選取其中的37 000張圖片作為訓練集,5 000 張圖片作為測試集,模型選擇經(jīng)典的LeNet[14],所有優(yōu)化算法的初始學習率均設置為0.001 5。

      訓練階段,數(shù)據(jù)在進入訓練前均已充分打散,同時在所有優(yōu)化算法的訓練中批次讀入順序相同。每種優(yōu)化算法對應的模型使用相同的初始化方式和種子,每300步迭代記錄一次訓練集上的損失函數(shù)值,所有模型總訓練迭代次數(shù)均為6 000步。

      測試階段,選擇針對所有類別的準確率作為評價指標,利用每種優(yōu)化算法對應的訓練好的模型,分別在相同測試集上進行測試,得到對應的準確率評分。

      4.3 實驗結果

      4.3.1 訓練集上交叉熵損失結果

      六種優(yōu)化算法在訓練集上的交叉熵損失記錄如圖1所示,可見Adam優(yōu)化算法和RMSProp優(yōu)化算法擁有最快的收斂速度;SGD算法的收斂速度最慢。

      圖1 算法訓練損失對比

      4.3.2 測試集上準確率結果

      六種優(yōu)化算法在相同測試集上的損失及準確率評價指標對比結果如表1所示。RMSProp優(yōu)化算法的泛化性能最佳;綜合在訓練集上的表現(xiàn),SGD算法存在欠擬合的問題,而AdaGrad存在易過擬合的問題。

      4.4 結果分析

      根據(jù)上述實驗結果可得,SGD算法的收斂速度最慢;Momentum動量和Nesterov動量算法加速了SGD的收斂速度;AdaGrad算法由于梯度平方的不斷累積導致學習率不斷變小,影響了學習效率,因此收斂效果不如動量算法;RMSProp和Adam算法擁有最佳的收斂速度,同時RMSProp算法在測試集上擁有最佳的泛化效果。

      表1 六種優(yōu)化算法驗證集評價指標對比

      5 結論

      通過對深度學習各種常用優(yōu)化算法的理論分析和實驗,可得各種優(yōu)化算法針對學習率和更新方向進行了啟發(fā)式設置。動量算法對更新方向進行了優(yōu)化,提升了收斂速度,但需要精細設置超參數(shù);自適應優(yōu)化算法對學習率和方向均進行了優(yōu)化,超參數(shù)設置相對簡單,擁有較快的收斂速度,普遍作為首選優(yōu)化算法,且特別適用于稀疏數(shù)據(jù)。

      猜你喜歡
      動量集上梯度
      動量守恒定律在三個物體系中的應用
      一個改進的WYL型三項共軛梯度法
      應用動量守恒定律解題之秘訣
      Cookie-Cutter集上的Gibbs測度
      一種自適應Dai-Liao共軛梯度法
      動量相關知識的理解和應用
      鏈完備偏序集上廣義向量均衡問題解映射的保序性
      一類扭積形式的梯度近Ricci孤立子
      復扇形指標集上的分布混沌
      地溫梯度判定地熱異常的探討
      河南科技(2014年3期)2014-02-27 14:05:45
      内乡县| 淮北市| 雷州市| 岱山县| 兰州市| 手机| 拉孜县| 五大连池市| 长武县| 扶余县| 陕西省| 永吉县| 新田县| 千阳县| 清水河县| 武陟县| 文山县| 临漳县| 固阳县| 伊川县| 大邑县| 沿河| 来凤县| 罗江县| 洮南市| 儋州市| 盐源县| 简阳市| 诸城市| 和林格尔县| 佛山市| 丰台区| 宜兰市| 西和县| 崇左市| 黄陵县| 清苑县| 鲜城| 汉阴县| 右玉县| 巴东县|