蔣瀟偉,嚴天宏,徐 騫,何 波,杜海平,李衛(wèi)華
(1.中國計量大學 機電工程學院,浙江 杭州 310018;2.中國海洋大學 信息科學與工程學院,山東 青島 266100;3. 伍倫貢大學 工程與信息系統(tǒng)系,澳大利亞 伍倫貢 2522)
超限學習機(ELM)是一種單隱層的前饋型神經(jīng)網(wǎng)絡,自2006年被提出以來[1-2],因其訓練速度快識別精度高,已經(jīng)成為機器學習和人工智能領域的一大研究熱點.特別是幾種深層ELM算法的相繼提出,使得ELM在深度學習算法領域的應用越來越廣泛,已經(jīng)在目標檢測與跟蹤[3-4]、數(shù)據(jù)分析[5-6]、機器人[7-8]、可穿戴設備[9]、智能電網(wǎng)[10]、健康醫(yī)療[11-12]等領域?qū)崿F(xiàn)了具體應用.
多層超限學習機(ML-ELM)[13]是仿照堆疊自動編碼器(SAE)[14]的結構,將SAE中的基本結構自動編碼器(AE)替換成ELM,然后將ELM-AE堆疊起來組成ML-ELM算法.后來,論文[15]將ML-ELM的特征學習過程和最后的目標分類過程分割開來,變成兩個相互獨立的過程,提出一種分層的超限學習機算法(H-ELM).與其他深度學習算法相比,多層ELM算法在訓練時通過隨機生成輸入權重和偏置計算出輸出權重,不需要反復迭代求解,所以它的訓練速度快,這是它在深度學習領域最大的貢獻[16].
但是目前提出的深層超限學習機算法當網(wǎng)絡層數(shù)較淺時,隨機特征映射使得樣本特征無法得到充分學習和利用;當網(wǎng)絡層數(shù)較深時,隨機學習的樣本特征經(jīng)過高層抽象后有效性會降低.本文借鑒DenseNet學習算法[17]的網(wǎng)絡結構,結合超限學習機理論,提出了兩種密集連接的多層ELM算法——Dense-HELM和Dense-KELM. Dense-HELM的基本結構是常規(guī)超限學習機,Dense-KELM的基本結構是基于核函數(shù)的超限學習機.這種密集連接的網(wǎng)絡結構讓算法在網(wǎng)絡層數(shù)很淺時就能充分提取樣本中的有效信息,使學習到的樣本特征得到最大化利用,從而顯著提高算法的識別精度.
根據(jù)文[2]中的ELM相關理論,給定n組訓練樣本D={(Xk,tk)|k=1,…,n},其中Xk=[xk1,…,xkd]是維數(shù)為d的輸入向量,tk=[tk1,…,tkc]是一個一維向量,表示樣本的標簽,c是樣本標簽的類數(shù).當樣本組數(shù)k確定時,tk對應標簽[tk1,…,tkc]中的某個定值.
ELM算法fELM可由下式表示:
(1)
式(1)中,hm(am,bm,x)=amx+bm,h(·)表示激活函數(shù),L是隱層神經(jīng)元的個數(shù)βm=[βm1,…,βmc]T是隱層神經(jīng)元hm的輸出權重.輸入權重am和偏置bm都是隨機產(chǎn)生的.公式(1)的矩陣形式如下:
Hβ=T.
(2)
其中,
(3)
為了提高算法的泛化能力和魯棒性[18-19],在公式(3)中添加了正則項(I/C),C是正則項系數(shù).
因此,ELM算法fELM可以表示成如下形式:
(4)
根據(jù)核函數(shù)理論中的Mercer條件[20],可以通過定義核函數(shù)K來獲取核矩陣Ω:
Ω=HHT.
(5)
Ω(i,j)=K(xi,xj),(i,j=1,2,…,n).
結合公式(4)和(5),可以得到基于核函數(shù)的ELM算法K-ELM的表達式[21]:
(6)
Dense-HELM以前饋的形式將原始輸入數(shù)據(jù)和每層學習的特征與后面所有的隱層相連接,共同組成后面隱層的輸入,形成一種密集連接的網(wǎng)絡結構.Dense-HELM的網(wǎng)絡結構如圖1.
Dense-HELM的訓練過程分為兩個獨立的階段:無監(jiān)督的特征學習階段和有監(jiān)督的特征分類階段.在無監(jiān)督的特征學習階段,利用稀疏自動編碼器求取隱層的權重.ELM自動編碼器的目的是通過優(yōu)化權重,使重建的輸出與輸入近似.因此ELM-AE可以由下式表示:
hθ(x)?x.
(7)
式(7)中:θ={βi,bi},βi是隱藏層權重,bi是隨機偏置.
圖1 3隱層的Dense-HELM算法網(wǎng)絡結構圖Figure 1 Network structure diagram of three-layer Dense-HELM algorithm
為了生成更稀疏有效的輸入特征,需要對ELM-AE添加稀疏約束,形成ELM稀疏自動編碼器.它的數(shù)學模型可以表示成如下方程:
(8)
式(8)中:X表示輸入數(shù)據(jù),H表示隨機提取的樣本特征,β表示隱藏層的權重,1表示懲罰項的懲罰方式.
(9)
式(9)中,p(β)=‖Hβ-X‖2,q(β)=‖β‖是懲罰項.
本文采用快速迭代的收縮閾值分割算法(FISTA)[22]來解決公式(3)中的線性逆問題.FISTA算法最小化了一個復雜度為O(1/j2)平滑凸函數(shù),j是迭代次數(shù).FISTA算法的詳細迭代過程如下.
1)計算光滑凸函數(shù)p的梯度p的Lipschitz常數(shù)γ.
2)令y1=β0∈Rn,t1=1為初始狀態(tài),j(j≥1),開始迭代:
a.
βj=sγ(yj).
(10)
式(10)中,
(11)
(12)
(13)
通過上面的迭代步驟,可以從缺損的數(shù)據(jù)中恢復原始數(shù)據(jù).利用計算得到的β作為ELM稀疏自動編碼器的權重,原始數(shù)據(jù)可以用輸入和提取特征的內(nèi)積表示.
隱層學習的樣本特征可以用下式表示:
Hi=g(Hi-1·βi).
(14)
Hi表示第i層學習的樣本特征(i∈[1,K]),βi是第i層的權重,g(·)是激活函數(shù).在本文提出的Dense-HELM算法中Hi-1不僅僅是第i-1層學習的特征,它還包含原始輸入以及第i-1層之前所有學習到的樣本特征.Hi-1可以表示成如下形式:
Ηi-1=[Η1,Η2,…,Ηi-1].
(15)
[H1,H2,…,Hi-1]是由H1,H2,…,Hi-1組成的矩陣,組合方式與Inception算法[23]一樣.
無監(jiān)督的特征學習之后,將學習到的樣本特征作為隱藏層最后一層的輸出Hfinal,根據(jù)已知標簽T計算網(wǎng)絡最后一層的輸出權重βfinal,進行有監(jiān)督的特征分類.最后一層輸出權重的計算方法與原始的ELM一樣,將公式(2)中的H、β分別用Hfinal、βfinal替換:
Hfinalβfinal=T.
(16)
根據(jù)公式(3)可以計算出βfinal:
(17)
Dense-HELM算法采用密集連接的網(wǎng)絡結構,使得樣本特征信息在層與層之間得到充分利用,在不增加算法網(wǎng)絡深度的情況下,顯著提高算法的識別精度.但是,基于常規(guī)ELM的Dense-HELM算法,存在原始ELM固有的一些缺點:1)隱層神經(jīng)元個數(shù)的不確定性,增加了手動調(diào)優(yōu)的難度;2)隨機產(chǎn)生的輸入權重和偏置,無法保證訓練的學習模型是最優(yōu)模型,而且算法的識別結果存在較大波動;3)通過偽逆求得的輸出權重,存在一定的重構誤差.為解決以上問題,本文在ML-KELM[24]的基礎上又提出一種基于核函數(shù)的密集連接的多層超限學習機算法Dense-KELM.
Dense-KELM算法在訓練時不需要設置隱層神經(jīng)元的個數(shù)Li、輸入權重ai和偏置bi等參數(shù),它以K-ELM為基本結構,采用KELM-AE學習各隱層之間的特征映射.Dense-KELM算法的網(wǎng)絡結構如圖2所示.
圖2 3隱層的Dense-KELM算法網(wǎng)絡結構圖Figure 2 Network structure diagram of three-layer Dense-KELM algorithm
Ω(i)β(i)=X(i).
(18)
Ω(i)是輸入矩陣X(i)通過核函數(shù)K(i)(xi,xj)映射得到的核矩陣.同樣,Dense-KELM采用密集連接的網(wǎng)絡結構之后,公式(18)中的Ω(i)不僅僅是第i層的核矩陣,而是之前所有隱藏層核矩陣的組合.Ω(i)可以表示成如下形式:
Ω(i)=[Ω(1),Ω(2),…,Ω(i)].
(19)
式(19)中[Ω(1),Ω(2),…,Ω(i)]表示第1,2,…,i層的核矩陣.
根據(jù)公式(6),可以計算出公式(18)中的β(i):
(20)
令最后一層提取的特征Xfinal=Xi+1,Xfinal可以由下面的公式計算得到
Xfinal=X(i+1)=g(X(i)(β(i))T).
(21)
g(·)是任意激活函數(shù),當?shù)趇+1層的節(jié)點數(shù)與第i層相等時,g可以是分段線性函數(shù).
在進行有監(jiān)督的特征分類時,輸出層是樣本標簽T,輸出權重是βfinal,通過核函數(shù)Kfinal(xi,xj)計算出Xfinal的核矩陣Ωfinal,將公式(18)中的Ω(i)、β(i)、X(i)分別用Ωfinal、βfinal和T替換:
Ωfinalβfinal=T.
(22)
根據(jù)公式(20)可得輸出矩陣βfinal:
(23)
由核函數(shù)理論可知,核矩陣Ωfinal一定是可逆方陣,Dense-KELM不需要用偽逆來求解輸出權重β.
文中驗證算法的基準數(shù)據(jù)集都來自于UCI數(shù)據(jù)庫[25],按照標簽類別分為二分類和多分類兩大部分.每個數(shù)據(jù)集的樣本特征和樣本個數(shù)都不相同,說明提出的算法具有很好的適用性.驗證算法使用的數(shù)據(jù)集的具體信息如表1.
表1 驗證算法使用的基準數(shù)據(jù)集Table 1 The benchmark datasets used by the verification algorithm
實驗所采用的硬件設備和軟件環(huán)境具體如下:Win7 64位系統(tǒng),Intel(R) Xeon(R) 2.4 G CPU, 128 G內(nèi)存,MATLAB R2013b.文中提到的四種算法H-ELM、ML-KELM、Dense-HELM和Dense-KELM,都以5層網(wǎng)絡結構為例.實驗時,在H-ELM和Dense-HELM算法中Ni(i=1,2,3.)表示第i層隱藏層神經(jīng)元的個數(shù),其中N1=N2∈{10,20,…,200},N3∈{100,200,…,5000}.Ci∈{10-2,10-1,…,102}表示第i層的正則項系數(shù),si∈{1,2,…,60}表示第i層激活函數(shù)的比例因子,通過調(diào)整si可以放大或縮小激活函數(shù)的輸出幅值;在ML-KELM和Dense-KELM中ki表示第i層核函數(shù)中的參數(shù),選擇的核函數(shù)不同,參數(shù)ki的個數(shù)和具體含義也不同,當采用線性核函數(shù)時,核函數(shù)本身并不需要設置參數(shù).為了方便手動調(diào)參,令H-ELM和Dense-HELM算法中前兩層隱層神經(jīng)元的個數(shù)以及正則化系數(shù)和比例因子相同;令ML-KELM和Dense-KELM算法中每層的正則化系數(shù)和核函數(shù)參數(shù)也相同.經(jīng)過測試,這樣的設置對實驗結果的影響可以忽略不計.文中ML-KELM和Dense-KELM默認采用徑向基核函數(shù),如果徑向基核函數(shù)不適用該樣本,則采用其他核函數(shù).
表2是四種訓練好的算法在20組基準數(shù)據(jù)集上的測試精度.文中的測試精度計算方式是:測試集上正確識別的樣本個數(shù)/測試樣本總個數(shù)×100%,它表示訓練好的算法在測試樣本上識別的準確率.實驗時,首先將數(shù)據(jù)集順序隨機打亂,然后取前75%作為訓練樣本,后25%作為測試樣本.H-ELM和Dense-HELM,每層的輸入權重和偏置都是隨機產(chǎn)生的,每次產(chǎn)生的結果會有波動,因此,表2中H-ELM和Dense-HELM的測試精度是執(zhí)行50~100次的平均結果.由表2中的實驗結果可見,本文提出的算法Dense-KELM的識別精度最高.密集連接后Dense-HELM的測試精度比H-ELM提高了3.86%,Dense-KELM比ML-KELM提高了6.28%,Dense-KELM在Dense-HELM的基礎上進行改進后,測試精度比原先提高了11.45%.
表2 四種算法在基準數(shù)據(jù)集上的測試精度Table 2 Average test accuracy of the four algorithms on the benchmark datasets %
表3中四種算法在基準數(shù)據(jù)集上的訓練時間是算法在同一參數(shù)下執(zhí)行50~100次的平均結果.結合表1各個數(shù)據(jù)集的詳細信息,從表3中可以看出當數(shù)據(jù)集的樣本個數(shù)較少時,基于核函數(shù)的兩種算法ML-KELM和Dense-KELM不需要設置各層神經(jīng)元的個數(shù)和輸入權重,直接由核函數(shù)計算出核矩陣,未知參數(shù)的個數(shù)由核矩陣的維數(shù)決定,大大縮短了算法的訓練時間;Dense-KELM是密集連接的網(wǎng)絡結構,每層的核矩陣維數(shù)大于ML-KELM,所以算法訓練時間略大于ML-KELM.當數(shù)據(jù)集的樣本個數(shù)較大時,網(wǎng)絡中各層核矩陣的維數(shù)會隨著輸入樣本的個數(shù)增加而增大,四種算法中Dense-HELM的訓練時間最短.因為密集連接的網(wǎng)絡結構可以降低各層神經(jīng)元的個數(shù),減少算法的訓練參數(shù),當數(shù)據(jù)集樣本個數(shù)較大和網(wǎng)絡層數(shù)較深時,能顯著提高算法的訓練速度.總的來說,本文提出的兩種算法Dense-HELM和Dense-KELM在顯著提高算法識別精度同時,算法的訓練時間并沒有明顯增加.
表3 四種算法在基準數(shù)據(jù)集上的平均訓練時間Table 3 Average training time of the four algorithms on the benchmark datasets s
算法的訓練時間與算法中未知參數(shù)的個數(shù)有關,本文4種算法中未知參數(shù)的個數(shù)不僅與訓練樣本的規(guī)模有關還與該樣本的特征數(shù)量大小以及算法隱層神經(jīng)元的個數(shù)設置有關.樣本數(shù)量和隱層神經(jīng)元個數(shù)相同時,樣本的特征越多算法的訓練時間越長.為了更加明確的表示訓練樣本的規(guī)模對4種算法訓練時間的影響,本文在Spambase數(shù)據(jù)集進行實驗.實驗過程中4種算法的其他參數(shù)值保持不變(都取測試精度最優(yōu)時的值),不斷增加訓練樣本的個數(shù),觀察4種算法的訓練時間與樣本個數(shù)的關系.結果如圖3所示.
圖3 四種算法的訓練時間與樣本個數(shù)的關系Figure 3 Relationship between the training time of four algorithms and the number of samples
本文在現(xiàn)有多層超限學習機算法的基礎上提出了兩種密集連接的多層超限學習機算法:Dense-HELM和Dense-KELM.這兩種算法都以前饋的形式將原始輸入數(shù)據(jù)和每層學習的特征與后面所有的隱層相連接,共同組成后面隱層的輸入,形成一種密集連接的網(wǎng)絡結構.這種密集連接的網(wǎng)絡結構讓算法在網(wǎng)絡層數(shù)很淺時就能充分提取樣本中的有效信息,使學習到的樣本特征得到最大化利用,顯著提高算法的識別精度.其中Dense-KELM是Dense-HELM的改進算法,它以K-ELM為基本結構,采用KELM-AE學習各隱層之間的特征映射,解決了Dense-HELM手動調(diào)參困難及訓練模型是次優(yōu)模型和識別結果波動大等不足.同時它又兼具Dense-HELM密集連接的網(wǎng)絡結構優(yōu)勢,顯著提高算法的識別精度.本文對提出的兩種算法在20組基準數(shù)據(jù)集上進行了實驗.實驗結果顯示,密集連接后Dense-HELM的測試精度比H-ELM提高了3.86%,Dense-KELM比ML-KELM提高了6.28%,Dense-KELM在Dense-HELM的基礎上進行改進后,測試精度比原先提高了11.45%.當訓練樣本規(guī)模較小時,Dense-KELM的訓練時間略大于ML-KELM,卻遠小于H-ELM和Dense-HELM;當樣本規(guī)模較大時,Dense-HELM的訓練時間最短.這表明了本文提出的兩種算法具有顯著的有效性和實用性.