張亮亮,喻高航
(杭州電子科技大學(xué)理學(xué)院,浙江 杭州 310018)
深度學(xué)習(xí)(Deep Learning,DL)[1]在許多實(shí)際領(lǐng)域中取得了顯著的成功,如圖像分類[2]、目標(biāo)檢測(cè)[3]和人臉識(shí)別[4]等,但在大規(guī)模數(shù)據(jù)集上訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)仍然很費(fèi)時(shí)。一階優(yōu)化算法是深度學(xué)習(xí)中廣泛使用的方法,如動(dòng)量梯度算法。常用的動(dòng)量梯度算法主要有重球法(Heavy Ball Method,HB)[5]和Nesterov加速梯度法(Nesterov’s Accelerated Gradient Method,NAG)[6]。當(dāng)動(dòng)量方向?yàn)橛欣较驎r(shí),動(dòng)量梯度算法通常能夠加速優(yōu)化,但是,動(dòng)量項(xiàng)在迭代過(guò)程中積累過(guò)多歷史梯度信息導(dǎo)致超調(diào),造成迭代過(guò)程中的震蕩現(xiàn)象[7],在一定程度上阻礙了算法的收斂速度。“比例—積分—微分”優(yōu)化控制器(Proportional-Integral-Derivative Controller,PID)[8]是一種通過(guò)控制系統(tǒng)誤差來(lái)調(diào)整系統(tǒng)的反饋控制方法,可以有效克服超調(diào)現(xiàn)象,具有魯棒性,已廣泛應(yīng)用于無(wú)人駕駛和智能機(jī)器人等實(shí)際控制領(lǐng)域。文獻(xiàn)[9]提出一種加速深度神經(jīng)網(wǎng)絡(luò)優(yōu)化的PID算法,在PID控制器與大規(guī)模優(yōu)化算法之間建立聯(lián)系。實(shí)際應(yīng)用中,PID控制器中的微分項(xiàng)通常采用一階差分近似,在優(yōu)化過(guò)程中無(wú)法有效利用二階信息。為此,本文采用擬牛頓方程,提出一類預(yù)條件動(dòng)量梯度算法。
深度學(xué)習(xí)中常見的一類學(xué)習(xí)問(wèn)題是回歸與分類等監(jiān)督學(xué)習(xí)問(wèn)題,提供了包含輸入數(shù)據(jù)和帶有標(biāo)簽的訓(xùn)練數(shù)據(jù)集。對(duì)已知樣本構(gòu)成的訓(xùn)練集{(x1,y1),(x2,y2),…,(xn,yn)},監(jiān)督學(xué)習(xí)通常需要求解經(jīng)驗(yàn)風(fēng)險(xiǎn)最小化(Empirical Risk Minimization,ERM)[10]模型:
(1)
通過(guò)優(yōu)化模型參數(shù)θ,進(jìn)而預(yù)測(cè)未知樣本x的標(biāo)簽值y,其中l(wèi)i(θ)是第i個(gè)樣本關(guān)于θ的損失函數(shù),n是樣本總數(shù),xi∈Rd是第i個(gè)樣本的輸入特征向量,d是特征向量維數(shù),yi∈R是第i個(gè)樣本的標(biāo)簽(或目標(biāo))。
求解模型(1)最常用的是一階優(yōu)化算法,比如梯度下降法(Gradient Descent Method, GD):
(2)
式中,α是學(xué)習(xí)率,一般取常數(shù),k是迭代次數(shù)。梯度下降法的算法簡(jiǎn)單,易于實(shí)現(xiàn),但收斂速度慢。為了加速訓(xùn)練神經(jīng)網(wǎng)絡(luò),目前深度學(xué)習(xí)領(lǐng)域常用的是隨機(jī)梯度算法或動(dòng)量梯度算法,其中經(jīng)典的動(dòng)量方法包括重球法[5]:
(3)
其迭代格式可寫為:
(4)
另外一種常用的動(dòng)量梯度方法是Nesterov加速梯度法[6]:
(5)
兩種動(dòng)量方法中的參數(shù)β∈(0,1)決定動(dòng)量項(xiàng)的權(quán)重。

(6)
離散形式為:
(7)
式中,e(t)是系統(tǒng)誤差,t是系統(tǒng)響應(yīng)時(shí)間,kp,ki,kd是PID的權(quán)重系數(shù),分別控制PID中P項(xiàng),I項(xiàng)和D項(xiàng)。
對(duì)式(4)和式(5)中第1行公式兩邊同時(shí)除以βk+1,得到:
(8)
對(duì)式(8)從k+1到1列舉并相加可得:
(9)
將式(9)代入式(4)和式(5)中的第2行公式,可得:
(10)



(11)

(12)
令θ=θk-1,有:
(13)

(14)
當(dāng)kd=0時(shí),式(14)可退化為HB算法;當(dāng)kd≠0,令Qk=(βI/kd-Bk),式(14)改寫為:
(15)
稱式(15)為預(yù)條件動(dòng)量梯度算法(Preconditioned Momentum Gradient Algorithm,PMG)。
預(yù)條件因子Qk中Bk的更新迭代,可以采用擬牛頓算法中常用的BFGS修正公式[12]:
(16)

式(14)進(jìn)一步寫為:
(17)
基于BFGS的預(yù)條件動(dòng)量梯度算法的主要步驟如下。

輸入:目標(biāo)函數(shù)f(θ),初始迭代點(diǎn)θ0∈Rn,初始迭代矩陣B0=I(I∈Rn×n單位矩陣),最大迭代次數(shù)K,容忍誤差ε,參數(shù)α>0,β∈(0,1),kd>0;計(jì)算梯度值Δf(θ0),如果不滿足終止條件,用最速下降法計(jì)算θ1=θ0-αΔf(θ0),計(jì)算Δf(θ1),置k=1。當(dāng)Δf(θk)>ε或k PMG算法在每次迭代中保持2個(gè)序列的更新,即{Vk},{θk}。當(dāng)kd=0時(shí),PMG算法退化為HB算法。與PID算法相比,PMG算法中{Bk}的計(jì)算能夠較好地利用目標(biāo)函數(shù)的二次信息。預(yù)條件的選取還可以有其他不同的方式,如DFP修正公式、對(duì)角矩陣Bk=diag(λ1,λ2,…,λn)或與譜投影梯度方法[13]類似的仿射單位矩陣等。 引理[14]設(shè){Fk}k≥0是一個(gè)非負(fù)實(shí)數(shù)序列,且滿足條件Fk+1≤a1Fk+a2Fk-1,?k≥1,其中a2≥0,a1+a2<1且系數(shù)至少有1個(gè)是正的。那么序列{Fk}k≥0對(duì)所有的k≥1滿足關(guān)系式 Fk+1≤qk(1+δ)F0 (18) 定理設(shè)目標(biāo)函數(shù)f(θ)是μ-強(qiáng)凸的和L-利普希茲連續(xù)的,θ*∈Rn是函數(shù)f(·)的全局最優(yōu)點(diǎn),則算法PMG產(chǎn)生的序列{θk}k≥1滿足: 可以證明以下不等式成立, (19) (20) (21) 根據(jù)式(19)—式(21),可得: (22) 因?yàn)閒(θ)是μ-強(qiáng)凸的和L-利普希茲連續(xù)的,由凸優(yōu)化理論有: (23) 將式(23)代入式(22),可得: (24) (25) 當(dāng)PMG算法中參數(shù)α,kd滿足 為了驗(yàn)證本文提出的PMG算法的有效性,分別在一些小規(guī)模的測(cè)試函數(shù)和大規(guī)模的CFIAR數(shù)據(jù)集上對(duì)PMG算法、PID算法、HB算法和NAG算法進(jìn)行數(shù)值對(duì)比實(shí)驗(yàn)。 例3f3(x)=-[cosx1+1][cos2x2+1]是一個(gè)非凸二維三角函數(shù),初始點(diǎn)[-2,1]。 例4f4(x)=sin(x1+x2)+(x1-x2)2-1.5x1+2.5x2+1是多峰函數(shù),初始點(diǎn)[-10,2]。 關(guān)于PMG算法的參數(shù)設(shè)定為:步長(zhǎng)α使用回溯法,初始步長(zhǎng)α=0.5,動(dòng)量參數(shù)常設(shè)為β=0.9,根據(jù)文獻(xiàn)[8]和文獻(xiàn)[15]提出的PID參數(shù)選擇方法選取參數(shù)kd。實(shí)驗(yàn)運(yùn)行環(huán)境為Windows 10操作系統(tǒng)下的MATLAB 2016b,配置內(nèi)存為Intel Core i7-3667U 8GB的筆記本。記錄4種算法的終止迭代次數(shù)、運(yùn)行時(shí)間和算法的終止誤差,結(jié)果如表1所示。 表1 不同動(dòng)量梯度算法求解算例的結(jié)果 從表1可以看出,與HB算法和NAG算法相比,PID算法比常用的動(dòng)量梯度方法更有效。由于PMG算法能夠較好地利用目標(biāo)函數(shù)的二次信息,在4種算法中,PMG算法的迭代次數(shù)和運(yùn)行時(shí)間都有一定的優(yōu)勢(shì),說(shuō)明PMG算法可以有效提升算法的效率。 為了更直觀比較算法效率,針對(duì)測(cè)試函數(shù)例1的迭代收斂過(guò)程,分別從目標(biāo)函數(shù)值和梯度范數(shù)值兩個(gè)角度說(shuō)明變化情況,結(jié)果如圖1所示。 圖1 不同算法測(cè)試部分函數(shù)隨迭代步數(shù)變化的情況 從圖1可以看出,HB算法與NAG算法都有明顯的震蕩,而PMG算法和PID算法均能克服超調(diào)現(xiàn)象,其中PMG算法表現(xiàn)更好。 圖2 不同算法訓(xùn)練數(shù)據(jù)集精度隨迭代變化的情況 從圖2可以看出,PMG算法的預(yù)測(cè)精度最高,表明高階信息的有效利用使得PMG算法的性能得到較大提升。 動(dòng)量梯度算法因積累過(guò)多歷史梯度信息會(huì)導(dǎo)致超調(diào)問(wèn)題,阻礙算法的收斂。針對(duì)這個(gè)不足,本文將預(yù)條件因子與動(dòng)量梯度法相結(jié)合,提出一種預(yù)條件動(dòng)量梯度算法,在提高算法效率的同時(shí)克服了超調(diào)問(wèn)題,有效改善了迭代過(guò)程中出現(xiàn)的震蕩現(xiàn)象。但是,預(yù)條件因子生成方法是多樣化的,選取合適的預(yù)條件會(huì)花費(fèi)額外的時(shí)間,后期將針對(duì)最優(yōu)預(yù)條件因子的選取問(wèn)題展開進(jìn)一步研究。3 收斂性分析










4 數(shù)值實(shí)驗(yàn)
4.1 測(cè)試函數(shù)






4.2 CFIAR數(shù)據(jù)集


5 結(jié)束語(yǔ)