沈哲鈞,凌志揚(yáng)
(東華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,上海201620)
隨著機(jī)器學(xué)習(xí)、深度學(xué)習(xí)理論的不斷發(fā)展,現(xiàn)代預(yù)測(cè)技術(shù)中,主要包括人工神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)以及極限學(xué)習(xí)機(jī)等模型作為代表的預(yù)測(cè)方法在傳統(tǒng)平臺(tái)上都已經(jīng)有著廣泛的研究實(shí)踐與應(yīng)用。
傳統(tǒng)神經(jīng)網(wǎng)絡(luò)方法一定程度上改善了基于時(shí)間序列預(yù)測(cè)模型的很多不足,但是容易出現(xiàn)局部最小、過度的信號(hào)迭代、過多的參數(shù)設(shè)定以及較慢的學(xué)習(xí)速度導(dǎo)致的較長(zhǎng)模型訓(xùn)練時(shí)間等問題。極限學(xué)習(xí)機(jī)模型的優(yōu)勢(shì)在于,神經(jīng)網(wǎng)絡(luò)模型比較簡(jiǎn)單,而且可以靈活地處理非線性信息序列的問題,通過基于影響因素的非線性映射來預(yù)測(cè)數(shù)據(jù)[1],有效降低了網(wǎng)絡(luò)參數(shù)計(jì)算時(shí)間,在保證預(yù)測(cè)準(zhǔn)確率的基礎(chǔ)上提高了模型訓(xùn)練時(shí)間以及表現(xiàn)出較好的模型泛化性能的條件下,在各個(gè)領(lǐng)域的應(yīng)用前景正日趨廣闊[2]。
同時(shí),針對(duì)極限學(xué)習(xí)機(jī)方法的各種改進(jìn)研究也越來越多。文獻(xiàn)[3]將小波分解與核極限學(xué)習(xí)機(jī)相結(jié)合克服ELM中存在的過擬合等缺陷;文獻(xiàn)[4]采用Cholesky分解將核極限學(xué)習(xí)機(jī)(KELM)從離線模式擴(kuò)展到在線模式,提高網(wǎng)絡(luò)的在線學(xué)習(xí)效率;文獻(xiàn)[5]針對(duì)單個(gè)在線極限學(xué)習(xí)機(jī)輸出不穩(wěn)定的情況,根據(jù)數(shù)據(jù)訓(xùn)練誤差自適應(yīng)地調(diào)整在線模型集成權(quán)重,選擇性能更好的模型用于集成預(yù)測(cè),改進(jìn)了模型的預(yù)測(cè)準(zhǔn)確度和穩(wěn)定性。缺點(diǎn)在于多個(gè)模型訓(xùn)練造成的時(shí)間復(fù)雜度卻有所增加。
本文針對(duì)以上問題,通過集成學(xué)習(xí)的方式,提出多個(gè)在線核極限學(xué)習(xí)機(jī)的模型訓(xùn)練框架,得到比單個(gè)模型更好的學(xué)習(xí)性能。同時(shí)借助大數(shù)據(jù)技術(shù)提出基于MapReduce的多個(gè)在線核極限學(xué)習(xí)機(jī)集成學(xué)習(xí)模型的并行算法(MROS-KELM),有效地改進(jìn)了多個(gè)在線核極限學(xué)習(xí)機(jī)訓(xùn)練造成的時(shí)間復(fù)雜度問題。
根據(jù)給定的訓(xùn)練樣本集 {(xi,ti),i=1,2,…,L},采用隨機(jī)方式從中挑選部分樣本,將挑選出的樣本組成新的訓(xùn)練樣本 (xi,ti),i=1,2,…,N0,N0>L,其中xi為輸入變量,ti為輸出變量。極限學(xué)習(xí)機(jī)通過以下函數(shù)來估計(jì)實(shí)際輸出,其函數(shù)形式可表示為:
其中,L為隱層節(jié)點(diǎn)個(gè)數(shù),g(x)為激活函數(shù),是連接i個(gè)隱含層節(jié)點(diǎn)的輸出權(quán)值。
式(1)可表示成矩陣形式為:
極限學(xué)習(xí)機(jī)訓(xùn)練目標(biāo)的最優(yōu)化模型可以表示成:
其中,βN為隱層輸出權(quán)值;φ為常參數(shù);εi為理論輸出ti與實(shí)際輸出f(x)的最大絕對(duì)誤差;h(xi)為隱層關(guān)于樣本xi的輸出向量,求解上式,可得:
其中,HN=[hT(x1),…,hT(xN)]T為神經(jīng)網(wǎng)絡(luò)關(guān)于訓(xùn)練樣本集的隱含層輸出矩陣,TN=[t1,…,tN]T為訓(xùn)練樣本的目標(biāo)矩陣。得到ELM模型的實(shí)際最優(yōu)輸出為:
在ELM的訓(xùn)練過程中,f(xop)是通過隨意賦值的方式產(chǎn)生,因此容易產(chǎn)生一系列非最優(yōu)的輸入權(quán)值和隱層節(jié)點(diǎn)的問題。為了得到更穩(wěn)定的輸出權(quán)值,針對(duì)電價(jià)數(shù)據(jù)的特點(diǎn),將 RBF(radial basis function)作為極限學(xué)習(xí)機(jī)的核函數(shù)通過Mercer條件定義ELM核矩陣:
其中,i,j=1,2,…,N;K(xi,xj) 為核函數(shù),是該核矩陣位于第i列、第j列的元素。因此式(7)可以寫成:
其中,αRBF為KELM模型的輸出權(quán)值。從式(8)的推導(dǎo)可得,核極限學(xué)習(xí)機(jī)通過核函數(shù)將輸出數(shù)據(jù)映射至高維空間,通過核映射避免了隨機(jī)賦值導(dǎo)致的一定概率的隱層權(quán)值偏差,得到穩(wěn)定的輸出值。
針對(duì)ELM的離線狀態(tài)到在線狀態(tài)的拓展模型訓(xùn)練算法分為2個(gè)階段[6],對(duì)此可闡釋如下。
Step 1離線階段。利用隨機(jī)設(shè)置的輸入權(quán)值wi和bi(i=1,2,…,N0) 計(jì)算隱含層輸出矩陣H0;并計(jì)算初始輸出權(quán)值,其數(shù)學(xué)公式可表述如下:
其中,初始中間矩陣P0=(0)-1,T0=[t1,t2,…,tN0]T;
設(shè)置k=0。
Step 2在線階段
(1)假設(shè)k+1時(shí)刻以前的歷史電價(jià)訓(xùn)練樣本(Xt,Yt)已經(jīng)被全部訓(xùn)練完成,其中Xt={xi},Yt={yi},M表示離線狀態(tài)結(jié)束后初始化訓(xùn)練數(shù)據(jù)個(gè)數(shù),假設(shè)k+1時(shí)刻的訓(xùn)練數(shù)據(jù)為 (Xs,Ys), 而且針對(duì)第k+1 個(gè)獲取的實(shí)時(shí)電價(jià)數(shù)據(jù):wk+1=(xM+k+1,tM+k+1), 令Tk+1=[tM+k+1]T,計(jì)算新到k+1時(shí)刻訓(xùn)練樣本的隱含層輸出矩陣Hk+1,計(jì)算公式如下:
(2)計(jì)算輸出權(quán)值,即:
(3)置k=k+1,若k<N,返回Step 1中的式(9);否則算法結(jié)束。
(1)串行數(shù)據(jù)處理算法[7]。使用串行數(shù)據(jù)處理算法的設(shè)計(jì)過程如圖1所示。該算法對(duì)每一個(gè)核極限學(xué)習(xí)機(jī)模型的權(quán)重矩陣H進(jìn)行串行化處理,依次選取每個(gè)節(jié)點(diǎn)進(jìn)行訓(xùn)練,通過長(zhǎng)時(shí)間的集群處理,可基于容錯(cuò)率來提高模型算法的穩(wěn)定性。
圖1 串行數(shù)據(jù)處理算法Fig.1 Serial data processing algorithm
(2)并行數(shù)據(jù)處理算法。本文提出的基于MapReduce的多個(gè)在線核極限學(xué)習(xí)機(jī)模型的并行算法(MROS-KELM)如圖2所示,該算法分別在Map階段和Reduce階段對(duì)每一個(gè)核極限學(xué)習(xí)機(jī)模型的權(quán)重矩陣H以及輸出的權(quán)值β進(jìn)行并行化處理,避免了串行數(shù)據(jù)算法中每一個(gè)核極限學(xué)習(xí)機(jī)模型只有一個(gè)節(jié)點(diǎn)在運(yùn)算處理的缺點(diǎn),明顯提高了集群運(yùn)算效率。
圖2 并行數(shù)據(jù)處理算法Fig.2 Parallel data processing algorithm
集成學(xué)習(xí)的基本思想是通過多個(gè)單一學(xué)習(xí)器集成組合在一起,使其共同完成學(xué)習(xí)任務(wù),結(jié)合不同模型的結(jié)果進(jìn)行新的組合來求出最終結(jié)果,得到比單個(gè)模型更好的學(xué)習(xí)性能。研究得到多個(gè)在線核極限學(xué)習(xí)機(jī)訓(xùn)練模型框架如圖3所示,本文在集成學(xué)習(xí)框架下根據(jù)Bagging、隨機(jī)森林以及交叉驗(yàn)證思想結(jié)合多個(gè)在線核極限學(xué)習(xí)機(jī)提出基于集成學(xué)習(xí)在線核極限學(xué)習(xí)機(jī)模型。其中,(,)、 (,)分別表示子模型m的第k組訓(xùn)練數(shù)據(jù)、驗(yàn)證數(shù)據(jù),最后結(jié)果為子模型的測(cè)試數(shù)據(jù)。
圖3 多個(gè)在線核極限學(xué)習(xí)機(jī)訓(xùn)練模型框架Fig.3 Multiple online kernel extreme learning machine training model framework
然而,在傳統(tǒng)串行數(shù)據(jù)處理技術(shù)的環(huán)境下,基于集成學(xué)習(xí)的多個(gè)在線核極限學(xué)習(xí)機(jī)模型卻會(huì)使該集成框架的并行處理優(yōu)勢(shì)受到限制,因此本文通過MapReduce的并行處理技術(shù)對(duì)OS-KELM模型進(jìn)行并行化處理。針對(duì)OS-KELM模型的并行訓(xùn)練主要用最大期望(EM)算法,EM算法在數(shù)學(xué)中??捎糜趯ふ以诓蝗菀子^察的隱形變量的模型中的參數(shù)最大似然估計(jì)。文中,關(guān)于EM算法的流程步驟可分述如下。
(1)初始化分布參數(shù)。
(2)EM過程具體如下:
① E Step:估計(jì)未知參數(shù)期望值,給出當(dāng)前的參數(shù)估計(jì)。
②M Step:重新估計(jì)分布參數(shù),使數(shù)據(jù)訓(xùn)練的似然性最大。
(3)重復(fù),直到收斂結(jié)束。
通過MapReduce過程實(shí)現(xiàn)EM算法基本上遵循以下的操作過程:在每一次迭代過程中,Mapper過程訓(xùn)練數(shù)據(jù)實(shí)例。Reducer整合各類期望參數(shù),為下一輪迭代生成參數(shù)估計(jì)。
其中,Mapper過程主要處理2個(gè)部分。對(duì)每一部分內(nèi)容可做研究表述如下。
(1)初始化OS-KELM模型。根據(jù)框架相關(guān)參數(shù),對(duì)OS-KELM模型初始化中間轉(zhuǎn)移矩陣Pm,k、隱層矩陣Hm,k、 輸入權(quán)重βm,K。
(2)map()函數(shù)運(yùn)算。 訓(xùn)練OS-KELM模型的Mapper部分算法的偽代碼詳見如下。
Form=0 ToM-1
IfchooseForThisModel() Then
添加到blockm中;
countm++;
Ifcountm≥BThen
GetSubSpace(blockm);
Hm,k=calH();
Tm,k=calH(blockm);
輸出 ((m,km,TrainTag),(Hm,k,Tm,k));//輸出一個(gè)key/value對(duì)
countm=0;
km++;
EndIf
EndIf
IfchooseForValid() Then
添加到validm中;
If≥BThen
GetSubSpace(validm);
calH();
calH(validm);
輸出((m,,ValidTag),(,));
0;
;
EndIf
EndIf
EndFor
在每次OS-KELM模型訓(xùn)練的迭代過程中,Reducer部分偽代碼詳見如下。
整個(gè)MapReduce過程需要迭代多次,直到OSKELM模型的訓(xùn)練參數(shù)達(dá)到收斂。
下面擬詳盡給出OS-KELM并行化算法代碼的設(shè)計(jì)實(shí)現(xiàn)。在這里使用ArrayWritable數(shù)組數(shù)據(jù)類型,用來分別存儲(chǔ)OS-KELM模型的中間轉(zhuǎn)移矩陣、隱層矩陣、輸入權(quán)重的一行數(shù)據(jù),代表收集到的相關(guān)值的集合。
4.1.1 初始化 OS-KELM 模型
Mapper最先要處理的就是KELM模型。根據(jù)相關(guān)參數(shù),對(duì)KELM模型初始化中間轉(zhuǎn)移矩陣、隱層矩陣、輸入權(quán)重。該過程在Mapper的setup()初始化方法中完成。部分的代碼如圖4所示。
4.1.2 Map 方法實(shí)現(xiàn)
OS-KELM模型的并行化map()函數(shù)部分可做解析闡述如下。
研究可知,輸入的<key,value>對(duì)中,key值是訓(xùn)練數(shù)據(jù);Value值存儲(chǔ)的是測(cè)試數(shù)據(jù)。對(duì)每個(gè)訓(xùn)練實(shí)例來說,輸出多個(gè)stripes并且每個(gè)訓(xùn)練實(shí)例都輸出相同的key值集合。每個(gè)key值都會(huì)在M-step進(jìn)行優(yōu)化處理。
圖4 模型初始化階段Fig.4 Model initialization phase
而輸出的<key,value>對(duì)包括著:在q狀態(tài)開始時(shí)的初始化中間轉(zhuǎn)移矩陣概率、q狀態(tài)產(chǎn)生隱層矩陣概率、q狀態(tài)輸入權(quán)重調(diào)整概率。在討論時(shí),該部分研究中可參考設(shè)計(jì)代碼如下。
//將map()結(jié)果發(fā)射出去
for(inti=0;i<kelm.numStates;i++){
Pi_tmp[i]=newDoubleWritable(kelm.initialProbabilities[i]);
}
piStripe.set(pi_tmp);
context.write(new Text('initial'),piStripe);
for(inti=0;i<kelm.numStates;i++){
for(intj=0;j<kelm.sigmaSize;j++){
em_tmp[j]=newDoubleWritable(kelm.adjustmentMatrix[i][j]);
}
adjustmentStripe.set(em_tmp);
Context.write(newText('adjust from'+hiddenSequence.toString()),adjustmentStripe);
}
輸入的<key,value>對(duì)是Mapper部分的輸出,即<string‘initial’, initialProbabilities>;<string‘emit from’, +states, Stripe adjustmentMatrix>和<string ‘produce from’, +states, Stripe produceMatrix>;Reducer部分對(duì)不同的Mapper部分發(fā)射來的數(shù)據(jù)進(jìn)行整合迭代,即KELM在線狀態(tài),為下一輪迭代做準(zhǔn)備。因此輸出的<key,value>對(duì)依然為<string ‘initial’, initialProbabilities>; <string ‘emit from’, +states, Stripe adjustmentMatrix>和<string‘produce from’, +states, Stripe produceMatrix>。
MROS-KELM算法的Reducer實(shí)現(xiàn)部分研究中可參考如下設(shè)計(jì)代碼。
Public static class KelmParallelReduce extends Reducer<Text, ArrayWritable,Text,ArrayWritable>{
Private ArrayWritable Cf;
Private DoubleWritable( ) Cf_tmp;
Double[]doubleValue;
{
{
//reduce 函數(shù)部分
Public void reduce(Text key, Iterable<ArrayWritable> values, Context context)
Throws IOException InterruptedException{..
本文對(duì)在線核極限學(xué)習(xí)機(jī)模型算法(OSKELM)、基于集成學(xué)習(xí)的在線核極限學(xué)習(xí)機(jī)模型算法(EOS-KELM)以及提出的基于MapReduce的多個(gè)在線核極限學(xué)習(xí)機(jī)模型的并行算法(MROSKELM)進(jìn)行實(shí)驗(yàn)性能對(duì)比。對(duì)此可展開論述如下。
實(shí)驗(yàn)環(huán)境:在搭建異構(gòu)環(huán)境的Hadoop集群上進(jìn)行了實(shí)驗(yàn)。本地測(cè)試平臺(tái)包含1個(gè)主節(jié)點(diǎn)(NameNode和JobTracker)和 2個(gè)從節(jié)點(diǎn)(DataNodes和TaskTrackers)。通過在每個(gè)節(jié)點(diǎn)上搭載各種CPU類型、內(nèi)存大小和磁盤空間來測(cè)量集群中的異構(gòu)性。每臺(tái)服務(wù)器配置為Xeon E5-2620 v2(6核雙線程)CPU、16 G內(nèi)存,集群中的所有節(jié)點(diǎn)都與千兆以太網(wǎng)交換機(jī)連接,并在Centos6.4 64位操作系統(tǒng)上運(yùn)行。
在實(shí)驗(yàn)中,集群環(huán)境部署配置的系統(tǒng)是市場(chǎng)上企業(yè)應(yīng)用最多,結(jié)合最好的穩(wěn)定版本Hadoop 2.6.0,塊大小為128 MB,JDK版本8。并為此集群中的每個(gè)數(shù)據(jù)塊維護(hù)3個(gè)副本,以提高數(shù)據(jù)的可用性。
在這里,真實(shí)數(shù)據(jù)使用的是MINIST和ImageNet數(shù)據(jù)集。其中,MINIST數(shù)據(jù)集是最受歡迎的深度學(xué)習(xí)數(shù)據(jù)集之一,這是一個(gè)手寫數(shù)字?jǐn)?shù)據(jù)集,包含一組60 000個(gè)示例的訓(xùn)練集和一個(gè)包含10 000個(gè)示例的測(cè)試集。這是一個(gè)很好的數(shù)據(jù)庫(kù),用于在實(shí)際數(shù)據(jù)中嘗試引入學(xué)習(xí)技術(shù)和深度識(shí)別模式,同時(shí)可以在數(shù)據(jù)預(yù)處理中花費(fèi)最少的時(shí)間和成本。
主要用于對(duì)各個(gè)算法的準(zhǔn)確率、訓(xùn)練速率進(jìn)行評(píng)測(cè)。數(shù)據(jù)集的特征數(shù)、訓(xùn)練樣本和測(cè)試樣本數(shù)以及數(shù)據(jù)塊大小見表1。
表1 數(shù)據(jù)集說明Tab.1 Dataset description
MROS-KELM、EOS-KELM、OS-KELM 采用作為激活核函數(shù)。在真實(shí)數(shù)據(jù)測(cè)評(píng)中,由于數(shù)據(jù)集比較小,為了比較其準(zhǔn)確性將隱含層節(jié)點(diǎn)數(shù)L設(shè)定為60。
真實(shí)數(shù)據(jù)集的準(zhǔn)確率與訓(xùn)練時(shí)間見表2,從測(cè)評(píng)表中可以推得以下結(jié)論:
(1)EOS-KELM的訓(xùn)練準(zhǔn)確度和測(cè)試準(zhǔn)確度都高于OS-KELM。說明基于集成學(xué)習(xí)的模型算法在減少噪聲數(shù)據(jù)影響與增加準(zhǔn)確率方面具有優(yōu)勢(shì)。
(2)MROS-KELM的訓(xùn)練準(zhǔn)確率與測(cè)試準(zhǔn)確率都與EOS-KELM基本相同。在提升模型訓(xùn)練準(zhǔn)確率的同時(shí),訓(xùn)練時(shí)間相比較EOS-KELM有明顯的減少。
MROS-KELM的Map階段和Reduce階段算法分析與EOS-KELM的算法對(duì)比分析可推得,MROS-KELM并沒有改變EOS-KELM的執(zhí)行過程,因此MROS-KELM方法在保證原有集成框架算法的優(yōu)點(diǎn)的基礎(chǔ)上同時(shí)也使用 MapReduce框架,MROSKELM具備更好的模型并行處理能力,在Map階段與Reduce階段分別對(duì)各子模型的H和β矩陣進(jìn)行并行計(jì)算,加速了各個(gè)模型的訓(xùn)練流程,因此相比EOS-KELM方法,MROS-KELM的訓(xùn)練速度更快。
表2 數(shù)據(jù)集結(jié)果評(píng)測(cè)Tab.2 Dataset result evaluation
其中,針對(duì)MROS-KELM和EOS-KELM基于不同數(shù)據(jù)塊大小情況下的準(zhǔn)確率比較如圖5所示。由圖5可以看出,MROS-KELM和EOS-KELM分別在2種不同數(shù)據(jù)集的不同數(shù)據(jù)塊大小下的準(zhǔn)確率基本一致。其中,每個(gè)數(shù)據(jù)塊的前兩項(xiàng)和后兩項(xiàng)分別是ImageNet數(shù)據(jù)集和MINIST數(shù)據(jù)集的準(zhǔn)確性能對(duì)比,只有ImageNet數(shù)據(jù)集下的不同大小數(shù)據(jù)塊的準(zhǔn)確率略有偏差,主要是因?yàn)閿?shù)據(jù)的特征數(shù)量和訓(xùn)練樣本數(shù)量的規(guī)模與MINIST數(shù)據(jù)集相比帶來更多的數(shù)據(jù)噪聲所造成的影響。綜合來說,在大數(shù)據(jù)環(huán)境下基于MapReduce的MROS-KELM算法并不會(huì)影響EOS-KELM集成算法的準(zhǔn)確性。
圖5 不同數(shù)據(jù)塊下的準(zhǔn)確率比較Fig.5 Comparison of accuracy under different data blocks
圖6 展示了基于MapReduce的多個(gè)在線核極限學(xué)習(xí)機(jī)模型的并行算法(MROS-KELM)、基于集成學(xué)習(xí)的在線核極限學(xué)習(xí)機(jī)模型算法(EOSKELM)以及在線核極限學(xué)習(xí)機(jī)模型算法(OSKELM)訓(xùn)練時(shí)間隨訓(xùn)練樣本數(shù)量的變化趨勢(shì)。從圖6中可以看出MROS-KELM的訓(xùn)練時(shí)間隨著訓(xùn)練樣本數(shù)量呈線性增長(zhǎng),也說明了MROS-KELM模型算法具有更好的泛化性能。同時(shí)也可以對(duì)比出MROS-KELM比OS-KELM訓(xùn)練速度快了一個(gè)數(shù)量級(jí),這說明MROS-KELM通過并行化的算法更好地提高了模型訓(xùn)練效率。
圖6 訓(xùn)練時(shí)間隨訓(xùn)練樣本數(shù)變化Fig.6 Training time varies with the number of training samples
本文主要對(duì)大數(shù)據(jù)并行處理技術(shù)結(jié)合多個(gè)在線核極限學(xué)習(xí)機(jī)模型算法的問題進(jìn)行探討。針對(duì)傳統(tǒng)的串行數(shù)據(jù)處理技術(shù)難以處理多個(gè)極限學(xué)習(xí)機(jī)模型所造成的模型訓(xùn)練時(shí)間過長(zhǎng)的缺點(diǎn),研究中通過MapReduce并行處理技術(shù)提出基于MapReduce的在線核極限學(xué)習(xí)機(jī)集成學(xué)習(xí)的并行模型算法,通過算例測(cè)試驗(yàn)證了本文的基于MapReduce的集成學(xué)習(xí)算法可以有效提高模型的準(zhǔn)確度和實(shí)時(shí)的訓(xùn)練速度,也說明了本文使用的基于大數(shù)據(jù)處理技術(shù)的預(yù)測(cè)模型在大數(shù)據(jù)環(huán)境中具備良好的適應(yīng)性。