葛泉波 ,張建朝 ,楊秦敏 ,李 宏
(1.南京信息工程大學(xué)自動化學(xué)院,江蘇南京,210044;2.杭州電子科技大學(xué)自動化學(xué)院,浙江杭州 310018;3.浙江大學(xué)控制科學(xué)與工程學(xué)院,浙江杭州 310063;4.中國飛行試驗研究院,陜西西安 710089)
BP(back propagation)神經(jīng)網(wǎng)絡(luò),其計算過程由正向和反向過程組成,廣泛應(yīng)用于如圖像分類[1-2]、目標(biāo)檢測[3]和人臉識別[4]等領(lǐng)域,其能否成功的關(guān)鍵因素為網(wǎng)絡(luò)的泛化能力.雖然BP神經(jīng)網(wǎng)絡(luò)在人工智能領(lǐng)域取得了巨大的成功,但是面對越來越龐大的數(shù)據(jù)集,進行深度網(wǎng)絡(luò)的訓(xùn)練需要消耗巨大的計算成本,即使使用高配置的GPU服務(wù)器也需花費較長的訓(xùn)練時間.因此,在不犧牲甚至提高準(zhǔn)確率的基礎(chǔ)上,盡可能地加快深度網(wǎng)絡(luò)模型的訓(xùn)練速度尤為重要.這樣不僅可以節(jié)省訓(xùn)練時間,也可以節(jié)約硬件設(shè)備的成本[5].BP神經(jīng)網(wǎng)絡(luò)的性能主要取決于其網(wǎng)絡(luò)結(jié)構(gòu)與優(yōu)化算法.對于一個神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),其全部信息主要體現(xiàn)在網(wǎng)絡(luò)連接權(quán)重的分布上,網(wǎng)絡(luò)權(quán)重直接影響了BP神經(jīng)網(wǎng)絡(luò)的收斂速度與精度.優(yōu)化學(xué)習(xí)算法作為修正權(quán)重的關(guān)鍵,決定著BP神經(jīng)網(wǎng)絡(luò)性能優(yōu)劣.
目前,大多數(shù)的優(yōu)化算法是基于迭代的方法,該類方法通過迭代優(yōu)化輔助目標(biāo)函數(shù),向著最優(yōu)解決方案尋找一組參數(shù)(即權(quán)重)[6-8],主要使用的算法是基于隨機梯度下降(stochastic gradient descent,SGD)的改進算法.SGD動量策略是同時考慮過去和現(xiàn)在的梯度來更新網(wǎng)絡(luò)參數(shù),但該方法存在超調(diào)問題,即權(quán)值超過最優(yōu)解而不改變更新方向的現(xiàn)象[9].這種超調(diào)問題阻礙了SGD動量的收斂,耗費了更多的訓(xùn)練時間和資源.在自動控制文獻[10-11]中,梯度優(yōu)化算法與傳統(tǒng)控制有相似之處.在反饋控制系統(tǒng)中比例積分微分(proportional integral derivative,PID)控制器[12-13]由于其簡單、功能和廣泛的適用性,是最常用的反饋控制機制.其控制的基本思想是控制動作應(yīng)與當(dāng)前誤差(系統(tǒng)輸出與期望輸出之差)、過去誤差(積分)、未來誤差(導(dǎo)數(shù))成正比.文獻[14]指出,自適應(yīng)機制通過利用移動平均梯度和移動平均平方梯度來計算自適應(yīng)指數(shù)衰減速率,實現(xiàn)自適應(yīng)學(xué)習(xí)率,這種自適應(yīng)調(diào)整方式有很大優(yōu)勢,并且有望產(chǎn)生更好的深層模型學(xué)習(xí)結(jié)果.
學(xué)習(xí)率是訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)(deep neural networks,DNN)最重要的超參數(shù)之一,其選擇的合適與否直接影響網(wǎng)絡(luò)優(yōu)化的好壞.根據(jù)學(xué)習(xí)率的設(shè)置,深度學(xué)習(xí)優(yōu)化器可以分為兩類:手動調(diào)整的學(xué)習(xí)率優(yōu)化器,如SGD[15]、SGD動量和Nesterovs動量[16],以及自適應(yīng)學(xué)習(xí)率優(yōu)化器,比如AdaGrad[17]、RMSProp[18]和Adam[19]等.目前優(yōu)化算法的主要思想是根據(jù)神經(jīng)網(wǎng)絡(luò)特性修改學(xué)習(xí)率,從而改進學(xué)習(xí)率太小而導(dǎo)致緩慢的收斂速度,而學(xué)習(xí)率太大影響收斂速度.因此優(yōu)化學(xué)習(xí)的穩(wěn)定性取決于超參數(shù)的選擇,而且配置學(xué)習(xí)算法的超參數(shù)的方法是層出不窮的,需要手動調(diào)整敏感的超參數(shù),通過調(diào)優(yōu)階段以獲得預(yù)期的理想性能.然而這種調(diào)優(yōu)需要非常昂貴的人力和時間資源,每個超參數(shù)的設(shè)置通常需要在多個階段進行多次測試[20].
為了解決該問題,首先結(jié)合傳統(tǒng)PID原理,對SGD進行重整合,通過分析得出梯度的累積類似于PI控制,而積分環(huán)節(jié)使得梯度更新受到歷史梯度影響,因此出現(xiàn)較大超調(diào)量.通過結(jié)合傳統(tǒng)控制理論的微分環(huán)節(jié)校正思想,在迭代過程引入微分項,從而有效提高算法對于瞬時梯度改變的靈敏度,有效改善了權(quán)重更新滯后于實際梯度改變的缺點.在此基礎(chǔ)上,通過引入指數(shù)衰減的歷史平方梯度及歷史梯度的指數(shù)衰減值來實現(xiàn)學(xué)習(xí)率自適應(yīng)改變,有效地解決了固定學(xué)習(xí)率導(dǎo)致算法收斂速率過慢的問題.最后結(jié)合指數(shù)加權(quán)移動平均法,進一步克服了迭代初始階段較大誤差的問題.
卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)是基于前饋神經(jīng)網(wǎng)絡(luò)的深層神經(jīng)網(wǎng)[2,9-10,21].CNN的三大特性,即局部感知、權(quán)值共享及降采樣顯著減少了網(wǎng)絡(luò)的參數(shù),大大降低了訓(xùn)練網(wǎng)絡(luò)的計算復(fù)雜度,這也決定了CNN的在數(shù)據(jù)處理的優(yōu)越性,使得CNN在手寫體識別、圖像分類等深度學(xué)習(xí)領(lǐng)域得到廣泛應(yīng)用,成為計算機視覺系統(tǒng)的核心技術(shù).
卷積運算實際上是對圖像的矩陣運算,通過卷積核與輸入數(shù)據(jù)一部分進行卷積運算,提取出該部分的特征.卷積公式如下[21]:
從圖1可以看出,在神經(jīng)網(wǎng)絡(luò)訓(xùn)練模型中,反向傳播類似于控制系統(tǒng)的反饋環(huán)節(jié),梯度相當(dāng)于誤差,實際標(biāo)簽值相當(dāng)于理想值,控制系統(tǒng)的目標(biāo)是連續(xù)測量輸出系統(tǒng)的狀態(tài),并通過控制單元將其更新到所需的狀態(tài).而神經(jīng)網(wǎng)絡(luò)模型是學(xué)習(xí)一個能夠描述輸出輸入關(guān)系的近似函數(shù),兩者具有相似性.
圖1 神經(jīng)網(wǎng)絡(luò)訓(xùn)練模型與控制系統(tǒng)聯(lián)系[9]Fig.1 The connection between neural network training model and control system[9]
在卷積神經(jīng)網(wǎng)絡(luò)中,為了得到最優(yōu)的權(quán)值,需對模型創(chuàng)建代價損失函數(shù),然后選擇合適的優(yōu)化算法使損失函數(shù)值最小,其形式化描述如下[22]:
其中:m表示樣本數(shù),fi(w;x)表示單個樣本i的損失函數(shù),X表示約束集.在卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練問題中,損失函數(shù)fi(w;x)可定義為[14]
其中:(xi,yi)是訓(xùn)練樣本序列,x為單個樣本xi的集合.為了求解問題(2),隨機梯度下降法是最常用的方法,它的更新規(guī)則如下[19]:
其中:α表示學(xué)習(xí)率,?wJ(wt)為函數(shù)J(w)在wt上的梯度值.上面算法與PID控制輸入輸出公式對比,可以看出都是利用了當(dāng)前信息更新,相當(dāng)于比例環(huán)節(jié).如果更新的權(quán)重如果要改變下降的方向,由于歷史梯度累積的存在,權(quán)重將不會及時改變[11],這一現(xiàn)象通常被稱作超調(diào).
目前,在神經(jīng)網(wǎng)絡(luò)訓(xùn)練中常用的優(yōu)化算法主要是SGD算法及其改進,在實際應(yīng)用中也取得了比較不錯的成績.然而,這種基于迭代的優(yōu)化方法在實際應(yīng)用中也存在許多的問題[9-10].
1) 傳統(tǒng)基于SGD的優(yōu)化算法中出現(xiàn)過大的超調(diào)量將導(dǎo)致收斂過程頻繁震蕩,影響算法收斂速率.該類方法主要考慮利用過去和現(xiàn)在的梯度來更新網(wǎng)絡(luò)參數(shù),歷史梯度值的累積過程容易造成權(quán)重的值超過其目標(biāo)值的現(xiàn)象,并且可能不會改變更新方向,因此阻礙算法收斂,耗費巨大的訓(xùn)練時間.
2) 在稀疏特征處理過程中,固定學(xué)習(xí)率的機制將嚴(yán)重影響優(yōu)化算法的收斂速率.學(xué)習(xí)率作為BP網(wǎng)絡(luò)重要參數(shù),其適合與否直接決定網(wǎng)絡(luò)優(yōu)劣,而目前主要以手動調(diào)節(jié)為主,該方式在大型網(wǎng)絡(luò)操作難度較大且固定學(xué)習(xí)率對于網(wǎng)絡(luò)適應(yīng)性較差,即當(dāng)權(quán)重參數(shù)遠(yuǎn)離最優(yōu)點,希望調(diào)大學(xué)習(xí)率以加快訓(xùn)練,而當(dāng)離最優(yōu)點較近時則希望調(diào)小學(xué)習(xí)率以提高精度.
因此,在研究如何有效克服迭代過程出現(xiàn)超調(diào)量問題的基礎(chǔ)上,進一步有效應(yīng)用自適應(yīng)學(xué)習(xí)率對于進一步提高優(yōu)化算法的收斂速率有很大必要性.對此,本文提出的解決方案如下:
1) 結(jié)合傳統(tǒng)控制系統(tǒng)原理,引入微分環(huán)節(jié)來解決隨機梯度下降算法存在超調(diào)問題.微分環(huán)節(jié)通過有效利用當(dāng)前時刻梯度的瞬時變化率校正梯度更新,從而保證梯度隨著迭代進行而單調(diào)收斂到最優(yōu)值.
2) 針對學(xué)習(xí)率的不適應(yīng)性導(dǎo)致的收斂率差和收斂速率慢等問題,提出一種基于二階矩的自適應(yīng)學(xué)習(xí)率機制.該機制主要通過將過去平方梯度(二階矩)的平均值和過去梯度的指數(shù)衰減平均值添加到學(xué)習(xí)率調(diào)節(jié)過程中,以此來增強學(xué)習(xí)率的自適應(yīng)性并提高相應(yīng)的收斂速率,同時給出了相應(yīng)的悔界證明.
結(jié)合上述問題分析,本文所提出的帶微分項的自適應(yīng)梯度下降法流程如下圖所示.
圖2 算法框圖Fig.2 Algorithm block diagram
在完全信息反饋設(shè)置中,在線優(yōu)化問題是一個分析迭代優(yōu)化方法的靈活框架.在線問題可描述如下:在每一輪t,優(yōu)化算法選擇一個動作wt ∈X,其中X?Rd,則遭受的損失為J(wt).因此,經(jīng)過T輪之后,算法的悔函數(shù)可定義為[22]
為了快速訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)模型,本文結(jié)合自適應(yīng)梯度算法和PID原理的優(yōu)勢,提出一個帶微分項的自適應(yīng)梯度優(yōu)化算法(adaptive stochastic gradient descent with differential,AdaSGD-D),具體描述如下:在每一輪t ∈{1,···,T}[19],
αt為學(xué)習(xí)率,ηt表示微分步長.與文獻[19,22]中的更新規(guī)則相比,式(9)給出的模型參數(shù)更新規(guī)則增加了跟Dt相關(guān)的一項,它能有效地提高模型的訓(xùn)練速度.
本文提出的AdaSGD-D算法流程參見算法1.
算法1帶微分項的自適應(yīng)梯度下降法(AdaSGD-D).
對AdaSGD-D算法的悔界分析,是一個非常重要的工作,它能從理論上保證新算法的收斂性和收斂速度,以提高算法的工程可用性.為了完成本文算法的悔界分析,需要如下標(biāo)準(zhǔn)假設(shè)[22]:
超參數(shù)β1t是影響算法收斂性能的一個重要參數(shù).從式(10)右邊第2項可以看出,β1t需要滿足一定的衰減條件,比如β1t是時間t的一個遞減函數(shù)[22].因此,獲得β1t=β1μt?1條件下定理1的一種具體形式更能夠直觀地表達悔界結(jié)果的內(nèi)涵,從而可在工程應(yīng)用過程中超參數(shù)取值方面起到良好的指導(dǎo)作用.
與文獻[9]相比,本文分析了收斂速率,從理論上保證所提算法是收斂的.文獻[9]基于PID原理進行更新,沒有采用自適應(yīng)步長.在悔界的理論分析中,動量的上界與梯度的上界都是G∞,而常步長不影響結(jié)論的推導(dǎo),其分析過程與在線梯度下降算法相似,因此理論上的悔界與在線梯度下降算法的悔界相似,即[25].但是所提算法的悔界可達到O(Tκ)(0 ≤.尤其當(dāng)梯度是稀疏時(在實際應(yīng)用中,梯度通常是稀疏的),所提算法的收斂速度比文獻[9]更快.由此可知,新算法中引入了自適應(yīng)學(xué)習(xí)機制,可利用訓(xùn)練數(shù)據(jù)的稀疏特征來顯著提高深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練速度.與文獻[22]的工作相比,新算法采用了基于PID原理的微分環(huán)節(jié)校正思想,從而可有效改善文獻[20]中權(quán)重更新滯后于實際梯度改變的缺陷不足.雖然新算法的理論結(jié)果在框架上與文獻[22]類似,但由于新方法在文獻[22]的模型更新基礎(chǔ)上增加了一個有效的微分項,從而可起到改善算法收斂性能的作用.同時該微分項的影響也在悔界結(jié)果表達式中顯示體現(xiàn).實驗結(jié)果表明AdaSGD-D的訓(xùn)練性能優(yōu)于文獻[22].目前本文得到的上界可能比較寬松,在未來的工作中將試著推導(dǎo)一個更緊的上界.
在本文的仿真實驗里,首先在MNIST手寫體分類數(shù)據(jù)集中分別使用所提出的帶微分項的自適應(yīng)梯度優(yōu)化算法(AdaSGD-D)及傳統(tǒng)的帶動量的隨機梯度下降法(stochastic gradient descent with momentum,SGD-M)[16]、Adam[19]訓(xùn)練了一個簡單的多層感知網(wǎng)絡(luò),以證明AdaSGD-D的優(yōu)勢;然后在CIFAR-10圖像數(shù)據(jù)集上訓(xùn)練了一個基于卷積神經(jīng)網(wǎng)絡(luò)的分類模型,通過結(jié)果來證明所提AdaSGD-D算法精度及收斂速率都得到提升及所做工作的必要性.
MNIST數(shù)據(jù)集[13]:MNIST數(shù)據(jù)集包含60,000手寫體的訓(xùn)練樣本和10,000個測試樣本從0到9的數(shù)字.圖像為28×28像素,并且以灰度格式顯示.如圖3所示.
圖3 MNIST數(shù)據(jù)集部分圖像Fig.3 Partial images of MNIST dataset
CIFAR-10數(shù)據(jù)集[22]:包含6萬張RGB彩色圖像,其形狀為32×32.共有10類,每類包括60,000張圖像.為了進行訓(xùn)練和測試,將數(shù)據(jù)集按照5:1的比例進行劃分,即訓(xùn)練集使用50,000張,測試集10,000張圖像.如圖4所示.
圖4 CIFAR-10數(shù)據(jù)集部分圖像Fig.4 Partial images of CIFAR-10 dataset
在本小節(jié)基于MNIST手寫體分類數(shù)據(jù)集中,分別使用所提出的帶微分項的自適應(yīng)梯度優(yōu)化算法(Ada-SGD-D)及常規(guī)帶動量的隨機梯度下降法(SGD-M)、Adam訓(xùn)練了一個簡單的多層感知網(wǎng)絡(luò).多層感知網(wǎng)絡(luò)使用ReLU非線性激活函數(shù),隱藏層1000個節(jié)點,softmax輸出層.每批次128張圖片,共100輪數(shù).3種優(yōu)化算法訓(xùn)練統(tǒng)計如下圖5-8所示.
圖5 訓(xùn)練損失曲線Fig.5 Training loss curve
圖6 訓(xùn)練準(zhǔn)確度曲線Fig.6 Training accuracy curve
圖7 驗證損失曲線Fig.7 Verification loss curve
圖8 驗證準(zhǔn)確度曲線Fig.8 Verification accuracy curve
從圖5-8中可以得出如下結(jié)論:
1) AdaSGD-D算法的訓(xùn)練準(zhǔn)確度(在訓(xùn)練集中預(yù)測正確的次數(shù)與所有預(yù)測次數(shù)的比值)高于SGD-M和Adam算法.由于AdaSGD-D算法引入了微分項和自適應(yīng)學(xué)習(xí)機制,不僅利用了梯度的歷史信息,同時也利用梯度的未來信息和當(dāng)前信息,有效改善了模型訓(xùn)練的速度.在訓(xùn)練MNIST數(shù)據(jù)集上訓(xùn)練100輪次后進行觀察,從第5輪次到第35輪次,AdaSGD-D算法的訓(xùn)練精度可達99.85%,其他兩種方法精度大約為97.5%.隨著訓(xùn)練輪次的增加,在第50輪次后,AdaSGD-D和SGD-M算法的訓(xùn)練準(zhǔn)確度均可達到100%,而Adam算法的訓(xùn)練精度為99.8%.因此,AdaSGD-D算法在模型訓(xùn)練過程初始階段的訓(xùn)練速度要快于SGD-M和Adam算法;在模型訓(xùn)練過程末尾階段,訓(xùn)練準(zhǔn)確度能達到100%,高于Adam算法.
2) AdaSGD-D算法的驗證準(zhǔn)確度(在測試集中預(yù)測正確的次數(shù)與所有預(yù)測次數(shù)的比值)高于SGD-M和Adam算法.新算法引入了微分項,可利用梯度的未來信息,使得算法的收斂速度加快.自適應(yīng)學(xué)習(xí)機制針對測試數(shù)據(jù)的稀疏特征,自適應(yīng)調(diào)整學(xué)習(xí)速率以提高測試準(zhǔn)確度.在測數(shù)據(jù)集上測試100輪次后進行觀察,AdaSGD-D算法的收斂速度最快,在第15輪次時就可穩(wěn)定收斂,驗證準(zhǔn)確度可達98.45%.SGD-M算法的收斂速度次之,在第35輪次時才逐漸收斂,驗證準(zhǔn)確度為98.28%.Adam算法收斂速度最慢,在第40輪次左右才逐漸收斂,驗證準(zhǔn)確度為97.65%.因此,AdaSGD-D算法在模型驗證過程中的驗證準(zhǔn)確度都優(yōu)于SGD-M和Adam算法,而且AdaSGD-D的驗證準(zhǔn)確度比Adam算法高出近1%.
在本小節(jié)中,利用CIFAR-10圖像數(shù)據(jù)集中的數(shù)據(jù)訓(xùn)練了一個基于ResNet18[23]的圖像分類器,其中梯度優(yōu)化算法分別使用了所提出的基于帶微分項的自適應(yīng)梯度優(yōu)化算法(AdaSGD-D)及傳統(tǒng)帶動量的隨機梯度下降法(SGD-M)和Adam自適應(yīng)梯度優(yōu)化算法,3種優(yōu)化算法的性能如圖9-12所示.
圖9 訓(xùn)練損失曲線Fig.9 Training loss curve
從圖9-12中可以得出如下結(jié)論:
1) AdaSGD-D算法的訓(xùn)練準(zhǔn)確度高于SGD-M和Adam算法.由于微分項和自適應(yīng)學(xué)習(xí)機制的引入,AdaSGD-D算法同時利用了梯度的歷史信息,當(dāng)前信息和未來信息,有效改善了模型訓(xùn)練的速度.在訓(xùn)練數(shù)據(jù)集上訓(xùn)練100輪次后進行觀察,AdaSGD-D算法的收斂速度最快,在第55輪左右訓(xùn)練的精度可達99.13%,而Adam和SGD-M算法在80輪之后才達到穩(wěn)定收斂,此時SGD-M的訓(xùn)練精度為99%,Adam的訓(xùn)練精度大約在98.63%.隨著訓(xùn)練輪次的增加,在第85輪次后,所有方法的訓(xùn)練準(zhǔn)確度均可達到100%.因此,新算法在模型訓(xùn)練過程初始階段的速度快于SGD-M和Adam算法;在模型訓(xùn)練過程末尾階段,訓(xùn)練準(zhǔn)確度也優(yōu)于SGD-M和Adam算法.
2) AdaSGD-D算法的驗證準(zhǔn)確度高于SGD-M和Adam算法.AdaSGD-D算法引入了微分項,可利用梯度的未來信息,加快算法的收斂速度.同時采用了自適應(yīng)學(xué)習(xí)機制,針對測試數(shù)據(jù)的稀疏性,自適應(yīng)調(diào)整學(xué)習(xí)速率來提高測試準(zhǔn)確度.在測試數(shù)據(jù)集上,測試100輪次后進行觀察,AdaSGD-D,SGD-M和Adam算法均在第50輪次后達到穩(wěn)定收斂,AdaSGD-D的測試準(zhǔn)確度最高,可達到91.52%,SGD-M算法次之,其測試準(zhǔn)確度可達到88.96%,Adam算法的測試準(zhǔn)確度最低,為88.47%.因此,AdaSGD-D算法在模型驗證過程中的準(zhǔn)確度都優(yōu)于SGD-M和Adam算法,而且在模型驗證的末尾階段,AdaSGD-D算法的驗證準(zhǔn)確度比SGD-M算法高出2.56%,比Adam算法高出3.05%.
圖10 訓(xùn)練準(zhǔn)確度曲線Fig.10 Training accuracy curve
圖11 驗證損失曲線Fig.11 Verification loss curve
圖12 驗證準(zhǔn)確度曲線Fig.12 Verification accuracy curve
針對大規(guī)模神經(jīng)網(wǎng)絡(luò)優(yōu)化收斂速率慢、權(quán)重更新滯后于實際梯度改變及固定學(xué)習(xí)率無法適應(yīng)訓(xùn)練過程的問題,本文提出了一種帶微分項的自適應(yīng)梯度優(yōu)化算法.首先,重新整合了傳統(tǒng)的隨機梯度下降算法,并結(jié)合傳統(tǒng)控制論思想,引入微分項,有效解決權(quán)重更新滯后于實際梯度問題;其次,本論文加入了自適應(yīng)調(diào)節(jié)機制,通過引入過去平方梯度值,對學(xué)習(xí)率進行自適應(yīng)調(diào)整;然后利用過去梯度的指數(shù)衰減平均值并引入偏差校正,有效地實現(xiàn)了動態(tài)調(diào)節(jié)學(xué)習(xí)率,進一步提高了神經(jīng)網(wǎng)絡(luò)的訓(xùn)練速率.
附錄
定理1的證明:參照文獻[22]的證明思路.根據(jù)wt+1的更新規(guī)則有