?

梯度下降及優化算法研究綜述

2022-06-03 12:48王昕
電腦知識與技術 2022年8期
關鍵詞:優化算法機器學習發展方向

王昕

摘要:梯度下降法是機器學習算法中廣泛使用的方法,特別是在神經網絡中。本文首先概述了梯度下降法和其三種實現框架,描述其優缺點。針對算法訓練時間緩慢的缺陷,首先從最經典且主流的梯度下降優化算法開始介紹,闡述研究動機、基本思想、其解決的問題,最后對比流行的梯度下降優化算法進行實驗分析。

關鍵詞:梯度下降法;機器學習;優化算法;發展方向

中圖分類號:TP311? ? ? ? 文獻標識碼:A

文章編號:1009-3044(2022)08-0071-03

引言

在機器學習領域中,因為有些目標模型的損失函數非常復雜,不能有效得到參數估計值的表達式。對此針對模型的損失函數優化問題,實際應用中,通常采用梯度下降法來對目標進行訓練,使其訓練的結果趨勢會降至最小值,但是梯度下降法訓練的過程極其緩慢,也對學習率和權重衰減等超參數極其敏感。至此,學者對這兩方面因素做了調整,通過動量加速平衡權重衰減和在自適應學習率的大小帶來的影響,極大改進了收斂速度和訓練消耗時長。

最新的研究進展方向表明,為了更好應對該算法下模型訓練產生的大量計算成本,第一種方法是在梯度下降法的基礎上展現了一種混合策略,如SWATS、Lookahead、AdaSVRG等算法,將動量加速思想[1]和自適應學習率方法相結合,旨在在大多非凸優化問題上,可通過很少的計算和訓練的內存成本,來提高訓練穩定性,表現出很好的泛化能力。第二種方法采用分布式訓練的策略,將模型或數據部署在不同設備上,如dbs-sgd[2]等算法,在數據較多或者模型較大時使用,可以有效地提高機器學習模型訓練的效率。

根據已有的知識,本文簡單介紹梯度下降原理思想,實驗對比經典的梯度下降優化算法,和介紹其最新領域的研究進展。

1梯度下降法

相比于最新的深度學習優化算法,梯度下降算法可以說是最初的起點。要實現梯度下降法的思想是需要不停地進行迭代,當損失函數的值小于一超參數閾值后,結束算法,這個時候梯度下降達到了最優值,由以下算法給出:

其中,[θt+1]表示第t+1時間步的參數值,[θt]表示第t時間步的參數值,[gt]表示第t時間步的梯度,[η]表示學習率。

1.1梯度下降法框架

梯度下降法由更新訓練樣本數據的規模展現了三種不同的形式:批量梯度下降法(batch gradient decent,BGD)、隨機梯度下降法(Stochastic gradient descent,SGD)、小批量隨機梯度下降法(Mini-batch gradient descent,MBGD):

針對批量梯度下降法,思想是將該整批訓練數據用于迭代計算,雖然最終會緩慢訓練至最小值,但是每次訓練都會產生大量冗余計算。對比這個不足,隨機梯度下降法通過一次執行一次更新的策略進行了改進。但是由于隨機梯度下降法抽取數據中的樣本的隨機性,導致每次更新方向的不確定,執行頻繁更新會產生振蕩。但從全局來看,隨著迭代次數的增加,還是會接近最小值。小批量梯度下降采取了BGD和SGD的優點,沒有用整批訓練數據或隨機抽取的單個樣本,而是通過每次小部分的隨機樣本來執行迭代的策略。

1.2梯度下降法帶來的問題

雖然隨機梯度下降法是一種能力很強的算法,但面對各種應用場景,仍需要進一步地擴展和增強。主要表現在以下4個方面:

(1)選擇一個合適的學習率對訓練過程有非常大的影響。學習率太小訓練會減慢收斂速度,增加消耗時長;學習率太高在訓練趨于平緩時難以收斂至最優值,會導致過大的振蕩性;

(2)每次模型參數更新使用相同的學習率。若數據樣本表現出不同頻率的特征,不希望將所有特征更新到相同的程度;

(3)學習率調整策略受限于預先指定的調整規則;

(4)高度非凸的損失函數的優化過程,訓練會陷入眾多次優的局部最小值或鞍點。

針對這4個方面的問題,國內外許多學者做了大量的改進和擴展,取得了比較好的成果。

2梯度下降優化算法研究進展

對不同的梯度下降優化算法而言,研究的核心差異在于確立尋優的下降方向和學習率調整策略。D. Im等由嚴密的實驗論證表明,不同的優化算法會選擇不同的尋優下降方向,最終達到了完全不同的局部次優。至此圍繞第一節中分析的SGD算法存在的一些問題,研究者提供了許多方案,嘗試從不同的方面對SGD進行改造,歸結起來改進方向主要分為以下兩個方面。

2.1基于動量和方差縮減

為了解決SGD在局部最優解的振蕩性,代表性的算法有帶動量的隨機梯度下降法(SGD with momentum,SGDM)等。特點是在取最小值過程中,動量加速思想能快速收斂。不僅在目標參數在局部最小值來回振蕩的時候,使得更新幅度變大,跳出鞍點,也能在梯度改變方向的時候,能夠減少更新,抑制振蕩從而加快收斂。由以下算法給出:

其中,β表示動量因子,[νt]表示第t時間步的動量,[νt-1]表示第t-1時間步的動量。涅斯捷羅夫梯度加速(Nesterov Accelerated Gradient,NAG)是對動量機制的改進,用目標函數二階導數的梯度近似值更新參數,有著更快的收斂速度,劉宇翔[3]等設計了一種基于NAG算法的投影次梯度方法,可以在保持收斂性的同時較快地達到穩定學習的精度。實驗驗證了理論分析的正確性及非精確方法的性能。

由于SGD每次隨機更新參數來估計梯度,雖然大大減少了計算代價,但也正是如此,在訓練后期對梯度估計的噪聲讓它無法進一步收斂。為此解決的代表性算法有隨機方差縮減梯度法(Stochastic Variance Reduction Gradient,SVRG)等,謝濤[4]等在方差消減思想的基礎上,設計了分布式實現算法DisSAGD:采用自適應采樣策略和動量加速思想,加快了收斂速度,在分布式集群中可以獲得近線性的加速。宋杰[5]等在訓練過程中使用小批量樣本代替全部樣本,進行平均梯度計算的同時批量減數更新,得到了基于方差縮減的BSUG算法, 通過對各算法的實驗對比,算法表現出了良好的穩定性。下表1對基于動量和方差縮減的隨機梯度下降優化算法進行歸納整理。

2.2基于自適應學習率

為了解決非凸目標函數陷入局部次優的問題和進一步提高了算法的收斂速度。代表性的算法有AdaGrad、Adadetla、RMSprop、Adam等。自適應學習率的優化方法在訓練較深復雜的神經網絡上,會得到更好的收斂性。

與自適應學習方法相比,SGD的一個缺點是,我們在所有參數中使用單一的學習率,并且該學習率在整個培訓過程中是固定的。理想情況下,更新頻率越高的參數學習率越低,更新頻率越低的參數學習率越高。至此,Dean et al.提出了AdaGrad算法,算法由下:

其中,[θt+1,i]表示第i個參數在第t+1時間步的參數值,[θt,i]表示第i個參數在第t時間步的參數值,[ε]表示避免被零除的平滑項。

不同于AdaGrad不斷的累加梯度的平方,產生訓練中后期使得學習率在達到最小值前就變得太小而梯度消失的問題。Adadelta和RMSProp另辟蹊徑。其中,Adadelta算法只累加固定大小的項,對其進行衰減平均遞歸計算,大大避免AdaGrad后期更新系數過小的問題。而RMSprop可以算作Adadelta的一個特例,引入了泄露機制,使得保留的歷史梯度信息每次都損失一部分,從而使得更新步長不再是單調遞減。

Adam算法有著所需要訓練占用的內存少,收斂快速等特點,集齊了上述自適應學習方法的優點,是主流的自適應優化方法。這類經典的自適應學習率算法在實驗中訓練效果優異,但與帶動量的隨機梯度下降相比,Adam、Adadelta、RMSprop 等自適應性優化算法的推廣效果不佳。這是因為自適應學習方法有兩個缺點:泛化性能差于SGDM和非收斂性的問題。最新研究進展以Adam算法為例,以這兩個方面學者提出了很多變體優化算法:

(1)為了解決Adam的收斂性在簡單凸優化上的不穩定的問題,Sashank J. Reddi提出了AMSGrad算法,此算法對過去梯度的“長期記憶”,經過實驗論證可以修復收斂問題。Liyuan Liu等提出了Radam算法,通過在訓練的前幾個階段使用較小的學習率,可以減少算法的不穩定,在經過圖像分類等大量實驗結果驗證了該Radam算法的有效性和魯棒性。

(2)為了增強Adam的泛化能力,Liangchen Luo等提出了AdaBound,該算法將利用學習率的動態邊界來實現從自適應方法到SGD的逐漸平滑過渡。大量實驗結果表明,AdaBound可以消除自適應方法和SGD之間的泛化差距,同時在訓練初期保持較高的學習速度。特別是在復雜的深層網絡上改進顯著。Ilya Loshchilov提出了AdamW算法,通過從梯度更新中將權重衰減分離出來,修改Adam中權重衰減的特有實現方法。實驗證明,該算法大幅提高了Adam的泛化性能,可以與SGDM在圖像分類數據集上競爭。

下表2是對基于自適應學習率的隨機梯度下降優化算法歸納整理:

3優化算法實驗對比

實驗評估了Adagrad、Adadelta、RMSprop、Adam、Adamax、NAdam自適應學習算法。學習率調整0.01,以32的批量進行訓練,以訓練10輪為標準,使用了MNIST-MLP、cifar10-VGG16的設置,在訓練前期內,在兩個模型架構的性能上對訓練集和測試集的損失值、精度值和運行時間進行對比。

3.1實驗設置

MNIST-MLP:MNIST包含訓練集為 60000 張 28×28 像素灰度圖像,測試集為 10000 同規格圖像,有10 類數字標簽。MLP神經網絡包括三層:輸入層、隱含層和輸出層,MLP神經網絡不同層之間是全連接的。

Cifar10-VGG16:CIFAR10包含60000個32×32×3圖像,帶有50000個訓練集和10000個測試集圖像,有10類數字標簽。VGG16是一個16層深的卷積神經網絡,廣泛使用3×3卷積濾波器。

3.2實驗結果對比

下面的兩種實驗設置表3和表4顯示中,Adamax算法的檢測性能最優。雖然Adam是最流行的自適應學習率算法,但很明顯,在這種經典的圖像分類識別實驗的訓練前期對比中,不管在簡單的MLP網絡還是在較深層網絡VGG16中,Adam的性能并不是最好的,雖然消耗的訓練時長占優,但是訓練集和驗證集的精度值落后于Adagrad、Adamax、NAdam算法。Adagrad訓練前期檢測精度增長迅速,隨著訓練次數的增加會趨于平緩甚至梯度消失;NAdam在Adam算法基礎上使用了動量加速思想,其收斂速度略優于Adam算法,但是兩種主干網絡下的運行時間卻是最長的。而Adamax顯然是在對比實驗里性能最好的,尤其在深層的神經網絡里,表現出有良好的運行時長消耗和較快的收斂速度。

4 結論

本文對梯度下降算法做了簡單的描述,介紹了其3種變體框架,并分析和總結了經典的梯度下降優化算法的優缺點。其中為代表的是SGDM和Adam算法,它們算法的缺陷成了后續研究者的研究動機,因此,在這兩個算法的基礎上,又出現了優秀的改進算法,并對現有的改進優化算法進行了概述。闡述了各種SGD改進算法解決的問題以及他們各自的優缺點。最后把六種典型的SGD改進算法實驗對比進行驗證。未來優化算法的研究方向我覺得仍然是在學習率這個超參數上做文章,用來提高算法的收斂速度,跳過局部次優和鞍點,因此如何自適應選擇合適的學習率仍是一大熱點研究方向;其次是在提升算法的泛化能力,在真實的數據集上仍表現出良好的性能。

參考文獻:

[1] Qian N.On the momentum term in gradient descent learning algorithms[J].Neural Networks,1999,12(1):145-151.

[2] 紀澤宇,張興軍,付哲,等.分布式深度學習框架下基于性能感知的DBS-SGD算法[J].計算機研究與發展,2019,56(11):2396-2409.

[3] 劉宇翔,程禹嘉,陶卿.梯度有偏情形非光滑問題NAG的個體收斂性[J].軟件學報,2020,31(4):1051-1062.

[4] 謝濤,張春炯,徐永健.基于歷史梯度平均方差縮減的協同參數更新方法[J].電子與信息學報,2021,43(4):956-964.

[5] 宋杰,朱勇,許冰.批量減數更新方差縮減梯度下降算法BSUG[J].計算機工程與應用,2020,56(22):117-123.

【通聯編輯:聞翔軍】

猜你喜歡
優化算法機器學習發展方向
故障樹計算機輔助分析優化算法研究與應用
混沌優化算法在TSP問題的應用
基于網絡搜索數據的平遙旅游客流量預測分析
前綴字母為特征在維吾爾語文本情感分類中的研究
探討企業工商管理現狀及發展方向
分析醫藥市場營銷的策略與發展方向
基于支持向量機的金融數據分析研究
再制造閉環供應鏈研究現狀分析
故障樹計算機輔助分析優化算法的實踐應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合