張亮亮,喻高航
(杭州電子科技大學理學院,浙江 杭州 310018)
深度學習(Deep Learning,DL)[1]在許多實際領(lǐng)域中取得了顯著的成功,如圖像分類[2]、目標檢測[3]和人臉識別[4]等,但在大規(guī)模數(shù)據(jù)集上訓練深度神經(jīng)網(wǎng)絡(luò)仍然很費時。一階優(yōu)化算法是深度學習中廣泛使用的方法,如動量梯度算法。常用的動量梯度算法主要有重球法(Heavy Ball Method,HB)[5]和Nesterov加速梯度法(Nesterov’s Accelerated Gradient Method,NAG)[6]。當動量方向為有利方向時,動量梯度算法通常能夠加速優(yōu)化,但是,動量項在迭代過程中積累過多歷史梯度信息導致超調(diào),造成迭代過程中的震蕩現(xiàn)象[7],在一定程度上阻礙了算法的收斂速度?!氨壤e分—微分”優(yōu)化控制器(Proportional-Integral-Derivative Controller,PID)[8]是一種通過控制系統(tǒng)誤差來調(diào)整系統(tǒng)的反饋控制方法,可以有效克服超調(diào)現(xiàn)象,具有魯棒性,已廣泛應(yīng)用于無人駕駛和智能機器人等實際控制領(lǐng)域。文獻[9]提出一種加速深度神經(jīng)網(wǎng)絡(luò)優(yōu)化的PID算法,在PID控制器與大規(guī)模優(yōu)化算法之間建立聯(lián)系。實際應(yīng)用中,PID控制器中的微分項通常采用一階差分近似,在優(yōu)化過程中無法有效利用二階信息。為此,本文采用擬牛頓方程,提出一類預條件動量梯度算法。
深度學習中常見的一類學習問題是回歸與分類等監(jiān)督學習問題,提供了包含輸入數(shù)據(jù)和帶有標簽的訓練數(shù)據(jù)集。對已知樣本構(gòu)成的訓練集{(x1,y1),(x2,y2),…,(xn,yn)},監(jiān)督學習通常需要求解經(jīng)驗風險最小化(Empirical Risk Minimization,ERM)[10]模型:
(1)
通過優(yōu)化模型參數(shù)θ,進而預測未知樣本x的標簽值y,其中l(wèi)i(θ)是第i個樣本關(guān)于θ的損失函數(shù),n是樣本總數(shù),xi∈Rd是第i個樣本的輸入特征向量,d是特征向量維數(shù),yi∈R是第i個樣本的標簽(或目標)。
求解模型(1)最常用的是一階優(yōu)化算法,比如梯度下降法(Gradient Descent Method, GD):
(2)
式中,α是學習率,一般取常數(shù),k是迭代次數(shù)。梯度下降法的算法簡單,易于實現(xiàn),但收斂速度慢。為了加速訓練神經(jīng)網(wǎng)絡(luò),目前深度學習領(lǐng)域常用的是隨機梯度算法或動量梯度算法,其中經(jīng)典的動量方法包括重球法[5]:
(3)
其迭代格式可寫為:
(4)
另外一種常用的動量梯度方法是Nesterov加速梯度法[6]:
(5)
兩種動量方法中的參數(shù)β∈(0,1)決定動量項的權(quán)重。
(6)
離散形式為:
(7)
式中,e(t)是系統(tǒng)誤差,t是系統(tǒng)響應(yīng)時間,kp,ki,kd是PID的權(quán)重系數(shù),分別控制PID中P項,I項和D項。
對式(4)和式(5)中第1行公式兩邊同時除以βk+1,得到:
(8)
對式(8)從k+1到1列舉并相加可得:
(9)
將式(9)代入式(4)和式(5)中的第2行公式,可得:
(10)
(11)
(12)
令θ=θk-1,有:
(13)
(14)
當kd=0時,式(14)可退化為HB算法;當kd≠0,令Qk=(βI/kd-Bk),式(14)改寫為:
(15)
稱式(15)為預條件動量梯度算法(Preconditioned Momentum Gradient Algorithm,PMG)。
預條件因子Qk中Bk的更新迭代,可以采用擬牛頓算法中常用的BFGS修正公式[12]:
(16)
式(14)進一步寫為:
(17)
基于BFGS的預條件動量梯度算法的主要步驟如下。
輸入:目標函數(shù)f(θ),初始迭代點θ0∈Rn,初始迭代矩陣B0=I(I∈Rn×n單位矩陣),最大迭代次數(shù)K,容忍誤差ε,參數(shù)α>0,β∈(0,1),kd>0;計算梯度值Δf(θ0),如果不滿足終止條件,用最速下降法計算θ1=θ0-αΔf(θ0),計算Δf(θ1),置k=1。當Δf(θk)>ε或k PMG算法在每次迭代中保持2個序列的更新,即{Vk},{θk}。當kd=0時,PMG算法退化為HB算法。與PID算法相比,PMG算法中{Bk}的計算能夠較好地利用目標函數(shù)的二次信息。預條件的選取還可以有其他不同的方式,如DFP修正公式、對角矩陣Bk=diag(λ1,λ2,…,λn)或與譜投影梯度方法[13]類似的仿射單位矩陣等。 引理[14]設(shè){Fk}k≥0是一個非負實數(shù)序列,且滿足條件Fk+1≤a1Fk+a2Fk-1,?k≥1,其中a2≥0,a1+a2<1且系數(shù)至少有1個是正的。那么序列{Fk}k≥0對所有的k≥1滿足關(guān)系式 Fk+1≤qk(1+δ)F0 (18) 定理設(shè)目標函數(shù)f(θ)是μ-強凸的和L-利普希茲連續(xù)的,θ*∈Rn是函數(shù)f(·)的全局最優(yōu)點,則算法PMG產(chǎn)生的序列{θk}k≥1滿足: 可以證明以下不等式成立, (19) (20) (21) 根據(jù)式(19)—式(21),可得: (22) 因為f(θ)是μ-強凸的和L-利普希茲連續(xù)的,由凸優(yōu)化理論有: (23) 將式(23)代入式(22),可得: (24) (25) 當PMG算法中參數(shù)α,kd滿足 為了驗證本文提出的PMG算法的有效性,分別在一些小規(guī)模的測試函數(shù)和大規(guī)模的CFIAR數(shù)據(jù)集上對PMG算法、PID算法、HB算法和NAG算法進行數(shù)值對比實驗。 例3f3(x)=-[cosx1+1][cos2x2+1]是一個非凸二維三角函數(shù),初始點[-2,1]。 例4f4(x)=sin(x1+x2)+(x1-x2)2-1.5x1+2.5x2+1是多峰函數(shù),初始點[-10,2]。 關(guān)于PMG算法的參數(shù)設(shè)定為:步長α使用回溯法,初始步長α=0.5,動量參數(shù)常設(shè)為β=0.9,根據(jù)文獻[8]和文獻[15]提出的PID參數(shù)選擇方法選取參數(shù)kd。實驗運行環(huán)境為Windows 10操作系統(tǒng)下的MATLAB 2016b,配置內(nèi)存為Intel Core i7-3667U 8GB的筆記本。記錄4種算法的終止迭代次數(shù)、運行時間和算法的終止誤差,結(jié)果如表1所示。 表1 不同動量梯度算法求解算例的結(jié)果 從表1可以看出,與HB算法和NAG算法相比,PID算法比常用的動量梯度方法更有效。由于PMG算法能夠較好地利用目標函數(shù)的二次信息,在4種算法中,PMG算法的迭代次數(shù)和運行時間都有一定的優(yōu)勢,說明PMG算法可以有效提升算法的效率。 為了更直觀比較算法效率,針對測試函數(shù)例1的迭代收斂過程,分別從目標函數(shù)值和梯度范數(shù)值兩個角度說明變化情況,結(jié)果如圖1所示。 圖1 不同算法測試部分函數(shù)隨迭代步數(shù)變化的情況 從圖1可以看出,HB算法與NAG算法都有明顯的震蕩,而PMG算法和PID算法均能克服超調(diào)現(xiàn)象,其中PMG算法表現(xiàn)更好。 圖2 不同算法訓練數(shù)據(jù)集精度隨迭代變化的情況 從圖2可以看出,PMG算法的預測精度最高,表明高階信息的有效利用使得PMG算法的性能得到較大提升。 動量梯度算法因積累過多歷史梯度信息會導致超調(diào)問題,阻礙算法的收斂。針對這個不足,本文將預條件因子與動量梯度法相結(jié)合,提出一種預條件動量梯度算法,在提高算法效率的同時克服了超調(diào)問題,有效改善了迭代過程中出現(xiàn)的震蕩現(xiàn)象。但是,預條件因子生成方法是多樣化的,選取合適的預條件會花費額外的時間,后期將針對最優(yōu)預條件因子的選取問題展開進一步研究。3 收斂性分析
4 數(shù)值實驗
4.1 測試函數(shù)
4.2 CFIAR數(shù)據(jù)集
5 結(jié)束語