本發(fā)明涉及數(shù)據(jù)識(shí)別領(lǐng)域,具體涉及一種分布式數(shù)據(jù)識(shí)別方法及系統(tǒng)。
背景技術(shù):
在現(xiàn)代數(shù)據(jù)識(shí)別應(yīng)用中,例如圖像識(shí)別、手寫文字辨識(shí)、系統(tǒng)模式辨識(shí)中,神經(jīng)元網(wǎng)絡(luò)算法已經(jīng)被大量應(yīng)用。而在多種神經(jīng)元網(wǎng)絡(luò)算法中,反向傳播神經(jīng)元網(wǎng)絡(luò)(Back Propagation Neural Network,BPNN)又是應(yīng)用最為廣泛的一種算法。目前已經(jīng)有數(shù)學(xué)證明給出明確結(jié)論,在一定數(shù)量的神經(jīng)元和一定數(shù)量網(wǎng)絡(luò)層的支持下,通過每個(gè)神經(jīng)元中的線性部分和非線性部分的組合,該神經(jīng)元網(wǎng)絡(luò)可以以任意精度逼近任何連續(xù)函數(shù)。以上特性為BPNN的廣泛應(yīng)用奠定了堅(jiān)實(shí)的基礎(chǔ)。因?yàn)槿魏我环N數(shù)據(jù)辨識(shí)應(yīng)用的本質(zhì)即為函數(shù)擬合,而BPNN的特性可以良好的適用數(shù)據(jù)辨識(shí)應(yīng)用的需求。
典型結(jié)構(gòu)的BPNN中包括輸入層和輸出層,輸入層包含多個(gè)輸入端,輸出層包含多個(gè)輸出端,BPNN中還包括多個(gè)神經(jīng)元,神經(jīng)元處于隱層中。在執(zhí)行數(shù)據(jù)辨識(shí)中,待辨識(shí)數(shù)據(jù)從輸入層輸入,辨識(shí)結(jié)果從輸出層輸出。
但是在當(dāng)前大數(shù)據(jù)應(yīng)用的背景下,BPNN的先天缺陷導(dǎo)致其在大數(shù)據(jù)處理中的效率極為低下,主要原因?yàn)椋鹤鳛橛斜O(jiān)督的啟發(fā)式機(jī)器學(xué)習(xí)算法,BPNN需要對(duì)算法進(jìn)行訓(xùn)練。而伴隨數(shù)據(jù)體量增大,訓(xùn)練時(shí)間將大大變長(zhǎng),嚴(yán)重影響算法效率。
技術(shù)實(shí)現(xiàn)要素:
因此,本發(fā)明要解決的技術(shù)問題在于克服現(xiàn)有的數(shù)據(jù)識(shí)別方法效率低缺陷。
有鑒于此,本發(fā)明提供一種分布式數(shù)據(jù)識(shí)別方法,包括:
對(duì)所有待識(shí)別數(shù)據(jù)進(jìn)行分割以形成多個(gè)數(shù)據(jù)塊,所述數(shù)據(jù)塊中包括用于訓(xùn)練的待識(shí)別數(shù)據(jù)和用于檢測(cè)的待識(shí)別數(shù)據(jù);
MapReduce架構(gòu)中的各個(gè)Map Function計(jì)算單元分別獲取不同的所述數(shù)據(jù)塊;
所述各個(gè)Map Function計(jì)算單元分別利用獲取到的數(shù)據(jù)塊中的用于訓(xùn)練的待識(shí)別數(shù)據(jù)對(duì)本地預(yù)設(shè)的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練;
在訓(xùn)練過程結(jié)束后,所述各個(gè)Map Function計(jì)算單元分別利用經(jīng)過訓(xùn)練的所述神經(jīng)網(wǎng)絡(luò)模型對(duì)獲取到的數(shù)據(jù)塊中的用于檢測(cè)的待識(shí)別數(shù)據(jù)進(jìn)行識(shí)別以得到識(shí)別結(jié)果;
所述MapReduce架構(gòu)中的Reduce Function單元獲取所述各個(gè)Map Function計(jì)算單元的所述識(shí)別結(jié)果,并對(duì)所有識(shí)別結(jié)果進(jìn)行篩選以得到一個(gè)識(shí)別結(jié)果。
優(yōu)選地,所述對(duì)所有待識(shí)別數(shù)據(jù)進(jìn)行分割以形成多個(gè)數(shù)據(jù)塊,包括:
采用自助算法對(duì)所有待識(shí)別數(shù)據(jù)進(jìn)行有放回抽樣,以形成多個(gè)子樣本集合,所述自助算法中的有放回次數(shù)與所述Map Function計(jì)算單元的數(shù)量相同;
分別對(duì)所述子樣本集合中的待識(shí)別數(shù)據(jù)進(jìn)行歸一化處理以得到歸一化待識(shí)別數(shù)據(jù)sk;
采用數(shù)據(jù)結(jié)構(gòu)<instancek,targetk,type>分別將sk存儲(chǔ)在多個(gè)數(shù)據(jù)塊中,其中,instancek為sk,targetk為sk的訓(xùn)練目標(biāo),type為待識(shí)別數(shù)據(jù)的用途,所述用途包括訓(xùn)練用途和檢測(cè)用途;
將所有數(shù)據(jù)塊存儲(chǔ)至分布式文件系統(tǒng)中。
優(yōu)選地,所述各個(gè)Map Function計(jì)算單元分別利用獲取到的數(shù)據(jù)塊中的用于訓(xùn)練的待識(shí)別數(shù)據(jù)對(duì)本地預(yù)設(shè)的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,包括:
各個(gè)Map Function計(jì)算單元分別從所述分布式文件系統(tǒng)中讀取不同的數(shù)據(jù)塊;
各個(gè)Map Function計(jì)算單元中的神經(jīng)網(wǎng)絡(luò)模型分別根據(jù)字段type確定sk的用途,對(duì)于訓(xùn)練用途的sk,則神經(jīng)網(wǎng)絡(luò)模型從輸入層輸入sk,針對(duì)每一層的神經(jīng)元執(zhí)行正向傳遞;
當(dāng)正向傳遞執(zhí)行至輸出層后,正向傳遞過程結(jié)束,神經(jīng)網(wǎng)絡(luò)模型對(duì)訓(xùn)練數(shù)據(jù)sk進(jìn)行反向傳遞;
各個(gè)Map Function計(jì)算單元針對(duì)每一訓(xùn)練用途的sk執(zhí)行預(yù)定次數(shù)的正向傳遞和反向傳遞,直至所有訓(xùn)練用途的sk均被處理完畢。
優(yōu)選地,所述針對(duì)每一層的神經(jīng)元執(zhí)行正向傳遞,包括:
在所述神經(jīng)網(wǎng)絡(luò)模型的每一個(gè)神經(jīng)元內(nèi),其線性部分執(zhí)行:
Ij=∑iwijoj′+θj,
其中Ij為線性部分輸出,wij為該神經(jīng)元權(quán)值,θj為該神經(jīng)元偏移量,oj′為上一層神經(jīng)元非線性部分輸出;
在每一個(gè)神經(jīng)元非線性部分,執(zhí)行:
oj為非線性部分輸出(也即每一個(gè)神經(jīng)元輸出至下一層神經(jīng)元的輸出),Ij為該神經(jīng)元內(nèi)的線性部分輸出;
所述神經(jīng)網(wǎng)絡(luò)模型對(duì)訓(xùn)練數(shù)據(jù)sk進(jìn)行反向傳遞,包括:
在所述神經(jīng)網(wǎng)絡(luò)模型的輸出層執(zhí)行:
Errj=oj(1-oj)(tj-oj),
Errj為輸出層誤差敏感度,tj為sk所對(duì)應(yīng)的targetk;
在所述神經(jīng)網(wǎng)絡(luò)模型的隱層執(zhí)行:
Errj=oj(1-oj)∑kErrkwkj,
Errk為隱層中反向傳遞過程中上一層的誤差敏感度,wkj為反向過程中上一層神經(jīng)元權(quán)重;在反向傳遞過程中,每一個(gè)神經(jīng)元通過誤差敏感度調(diào)整自身權(quán)值w和偏移量θ:Δwij=Errjoj,wij=wij+Δwij,Δθj=Errj,θj=θj+Δθj。
優(yōu)選地,所述神經(jīng)網(wǎng)絡(luò)模型為反向傳播神經(jīng)元網(wǎng)絡(luò)模型,所述各個(gè)Map Function計(jì)算單元在執(zhí)行所述利用獲取到的數(shù)據(jù)塊中的用于訓(xùn)練的待識(shí)別數(shù)據(jù)對(duì)本地預(yù)設(shè)的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練的步驟之前,分別獨(dú)立初始化本地的神經(jīng)網(wǎng)絡(luò)模型的參數(shù),所述參數(shù)包括每一個(gè)神經(jīng)元的權(quán)值w和偏移量θ。
相應(yīng)地,本發(fā)明還提供一種分布式數(shù)據(jù)識(shí)別系統(tǒng),包括:管理終端和多個(gè)計(jì)算終端,其中
所述管理終端用于對(duì)所有待識(shí)別數(shù)據(jù)進(jìn)行分割以形成多個(gè)數(shù)據(jù)塊,所述數(shù)據(jù)塊中包括用于訓(xùn)練的待識(shí)別數(shù)據(jù)和用于檢測(cè)的待識(shí)別數(shù)據(jù);
所述計(jì)算終端用于啟動(dòng)MapReduce架構(gòu)中的各個(gè)Map Function計(jì)算單元分別獲取不同的所述數(shù)據(jù)塊;所述各個(gè)Map Function計(jì)算單元分別利用獲取到的數(shù)據(jù)塊中的用于訓(xùn)練的待識(shí)別數(shù)據(jù)對(duì)本地預(yù)設(shè)的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練;在訓(xùn)練過程結(jié)束后,所述各個(gè)Map Function計(jì)算單元分別利用經(jīng)過訓(xùn)練的所述神經(jīng)網(wǎng)絡(luò)模型對(duì)獲取到的數(shù)據(jù)塊中的用于檢測(cè)的待識(shí)別數(shù)據(jù)進(jìn)行識(shí)別以得到識(shí)別結(jié)果;
所述管理終端還用于啟動(dòng)所述MapReduce架構(gòu)中的Reduce Function單元獲取所述各個(gè)Map Function計(jì)算單元的所述識(shí)別結(jié)果,并對(duì)所有識(shí)別結(jié)果進(jìn)行篩選以得到一個(gè)識(shí)別結(jié)果。
優(yōu)選地,所述管理終端用于采用自助算法對(duì)所有待識(shí)別數(shù)據(jù)進(jìn)行有放回抽樣,以形成多個(gè)子樣本集合,所述自助算法中的有放回次數(shù)與所述Map Function計(jì)算單元的數(shù)量相同;分別對(duì)所述子樣本集合中的待識(shí)別數(shù)據(jù)進(jìn)行歸一化處理以得到歸一化待識(shí)別數(shù)據(jù)sk;采用數(shù)據(jù)結(jié)構(gòu)<instancek,targetk,type>分別將sk存儲(chǔ)在多個(gè)數(shù)據(jù)塊中,其中,instancek為sk,targetk為sk的訓(xùn)練目標(biāo),type為待識(shí)別數(shù)據(jù)的用途,所述用途包括訓(xùn)練用途和檢測(cè)用途;將所有數(shù)據(jù)塊存儲(chǔ)至分布式文件系統(tǒng)中。
優(yōu)選地,所述多個(gè)計(jì)算終端用于分別啟動(dòng)各個(gè)Map Function計(jì)算單元分別從所述分布式文件系統(tǒng)中讀取不同的數(shù)據(jù)塊;各個(gè)Map Function計(jì)算單元中的神經(jīng)網(wǎng)絡(luò)模型分別根據(jù)字段type確定sk的用途,對(duì)于訓(xùn)練用途的sk,則神經(jīng)網(wǎng)絡(luò)模型從輸入層輸入sk,針對(duì)每一層的神經(jīng)元執(zhí)行正向傳遞;當(dāng)正向傳遞執(zhí)行至輸出層后,正向傳遞過程結(jié)束,神經(jīng)網(wǎng)絡(luò)模型對(duì)訓(xùn)練數(shù)據(jù)sk進(jìn)行反向傳遞;各個(gè)Map Function計(jì)算單元針對(duì)每一訓(xùn)練用途的sk執(zhí)行預(yù)定次數(shù)的正向傳遞和反向傳遞,直至所有訓(xùn)練用途的sk均被處理完畢。
優(yōu)選地,所述計(jì)算終端在所述神經(jīng)網(wǎng)絡(luò)模型的每一個(gè)神經(jīng)元內(nèi),其線性部分執(zhí)行:
Ij=∑iwijoj′+θj,
其中Ij為線性部分輸出,wij為該神經(jīng)元權(quán)值,θj為該神經(jīng)元偏移量,oj′為上一層神經(jīng)元非線性部分輸出;
在每一個(gè)神經(jīng)元非線性部分,執(zhí)行:
oj為非線性部分輸出(也即每一個(gè)神經(jīng)元輸出至下一層神經(jīng)元的輸出),Ij為該神經(jīng)元內(nèi)的線性部分輸出;
所述計(jì)算終端在所述神經(jīng)網(wǎng)絡(luò)模型的輸出層執(zhí)行:
Errj=oj(1-oj)(tj-oj),
Errj為輸出層誤差敏感度,tj為sk所對(duì)應(yīng)的targetk;
在所述神經(jīng)網(wǎng)絡(luò)模型的隱層執(zhí)行:
Errj=oj(1-oj)∑kErrkwkj,
Errk為隱層中反向傳遞過程中上一層的誤差敏感度,wkj為反向過程中上一層神經(jīng)元權(quán)重;在反向傳遞過程中,每一個(gè)神經(jīng)元通過誤差敏感度調(diào)整自身權(quán)值w和偏移量θ:Δwij=Errjoj,wij=wij+Δwij,Δθj=Errj,θj=θj+Δθj。
優(yōu)選地,所述神經(jīng)網(wǎng)絡(luò)模型為反向傳播神經(jīng)元網(wǎng)絡(luò)模型,所述各個(gè)Map Function計(jì)算單元在執(zhí)行所述利用獲取到的數(shù)據(jù)塊中的用于訓(xùn)練的待識(shí)別數(shù)據(jù)對(duì)本地預(yù)設(shè)的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練的步驟之前,分別獨(dú)立初始化本地的神經(jīng)網(wǎng)絡(luò)模型的參數(shù),所述參數(shù)包括每一個(gè)神經(jīng)元的權(quán)值w和偏移量θ。
根據(jù)本發(fā)明提供的分布式數(shù)據(jù)識(shí)別方法及系統(tǒng),通過對(duì)所有待識(shí)別數(shù)據(jù)進(jìn)行分割以形成多個(gè)數(shù)據(jù)塊實(shí)現(xiàn)了基于數(shù)據(jù)切割,然后采用分布式計(jì)算框架的對(duì)分布式的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,并利用訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)模型分別輸出識(shí)別結(jié)果,最終通過引入多數(shù)投票機(jī)制從各個(gè)識(shí)別結(jié)果中篩選識(shí)別結(jié)果,該分布式數(shù)據(jù)識(shí)別方案具有較高的識(shí)別效率,并且不會(huì)由于樣本集合的切割導(dǎo)致辨識(shí)精度的下降。
附圖說明
為了更清楚地說明本發(fā)明具體實(shí)施方式或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)具體實(shí)施方式或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施方式,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例中的分布式數(shù)據(jù)識(shí)別方法的流程圖;
圖2為應(yīng)用本發(fā)明和現(xiàn)有技術(shù)的數(shù)據(jù)辨識(shí)精度比對(duì)圖;
圖3為應(yīng)用本發(fā)明和現(xiàn)有技術(shù)的數(shù)據(jù)辨識(shí)時(shí)間比對(duì)圖;
圖4為本發(fā)明提供的技術(shù)方案的伸縮性展示圖;
圖5為本發(fā)明實(shí)施例中的分布式數(shù)據(jù)識(shí)別系統(tǒng)的結(jié)構(gòu)圖。
具體實(shí)施方式
下面將結(jié)合附圖對(duì)本發(fā)明的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
此外,下面所描述的本發(fā)明不同實(shí)施方式中所涉及的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互結(jié)合。
本發(fā)明的一個(gè)實(shí)施例提供了一種分布式數(shù)據(jù)識(shí)別方法,該方法可以基于現(xiàn)有的Hadoop技術(shù)(一種基于MapReduce計(jì)算模型的分布式計(jì)算框架)來(lái)實(shí)現(xiàn)。在執(zhí)行分布式處理時(shí),首先從HDFS(Hadoop Distributed File System,Hadoop分布式文件系統(tǒng))中,將數(shù)據(jù)以數(shù)據(jù)塊的形式讀出。然后,每一塊數(shù)據(jù)都被送入一個(gè)Map Function(mapper)進(jìn)行分布式處理。處理后的數(shù)據(jù)會(huì)以臨時(shí)輸出(intermediate output)的形式(具體為鍵-值形式),被Reduce Function(reducer)根據(jù)鍵的不同進(jìn)行收集,并進(jìn)行二次處理,最終處理后的結(jié)果被保存回HDFS中。
如圖1所示,該方法具體包括如下步驟:
S1,對(duì)所有待識(shí)別數(shù)據(jù)進(jìn)行分割以形成多個(gè)數(shù)據(jù)塊,所述數(shù)據(jù)塊中包括用于訓(xùn)練的待識(shí)別數(shù)據(jù)和用于檢測(cè)的待識(shí)別數(shù)據(jù),其中待識(shí)別數(shù)據(jù)可以是經(jīng)過矢量化處理的圖像、文字等各種形式的結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù);
S2,MapReduce架構(gòu)中的各個(gè)Map Function計(jì)算單元分別獲取不同的所述數(shù)據(jù)塊;
S3,所述各個(gè)Map Function計(jì)算單元分別利用獲取到的數(shù)據(jù)塊中的用于訓(xùn)練的待識(shí)別數(shù)據(jù)對(duì)本地預(yù)設(shè)的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練;
S4,在訓(xùn)練過程結(jié)束后,所述各個(gè)Map Function計(jì)算單元分別利用經(jīng)過訓(xùn)練的所述神經(jīng)網(wǎng)絡(luò)模型對(duì)獲取到的數(shù)據(jù)塊中的用于檢測(cè)的待識(shí)別數(shù)據(jù)進(jìn)行識(shí)別以得到識(shí)別結(jié)果;
S5,所述MapReduce架構(gòu)中的Reduce Function單元獲取所述各個(gè)Map Function計(jì)算單元的所述識(shí)別結(jié)果,并對(duì)所有識(shí)別結(jié)果進(jìn)行篩選以得到一個(gè)識(shí)別結(jié)果。例如可以利用多數(shù)投票算法篩選識(shí)別結(jié)果,具體地,多數(shù)投票算法是指參與投票實(shí)體對(duì)某一問題根據(jù)自身判斷結(jié)果進(jìn)行投票,如果某一結(jié)果得票數(shù)超過參與投票者總數(shù)的一半,則將該結(jié)果作為問題的解。本發(fā)明可以對(duì)現(xiàn)有的多數(shù)投票算法略作修改,即某一結(jié)果的得票數(shù)最多,則將其作為數(shù)據(jù)識(shí)別的最終結(jié)果。
根據(jù)本發(fā)明提供的分布式數(shù)據(jù)識(shí)別方法,通過對(duì)所有待識(shí)別數(shù)據(jù)進(jìn)行分割以形成多個(gè)數(shù)據(jù)塊實(shí)現(xiàn)了基于數(shù)據(jù)切割,然后采用分布式計(jì)算框架的對(duì)分布式的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,并利用訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)模型分別輸出識(shí)別結(jié)果,最終通過引入多數(shù)投票機(jī)制從各個(gè)識(shí)別結(jié)果中篩選識(shí)別結(jié)果,該分布式數(shù)據(jù)識(shí)別方案具有較高的識(shí)別效率,并且不會(huì)由于樣本集合的切割導(dǎo)致辨識(shí)精度的下降。
本發(fā)明的另一個(gè)實(shí)施例還提供了一種具體的分布式數(shù)據(jù)識(shí)別方法,該方法包括如下步驟:
步驟一:
首先采用“自助法”對(duì)海量訓(xùn)練樣本進(jìn)行有放回抽樣。設(shè)分布式計(jì)算集群中有m個(gè)mapper(Map Function計(jì)算單元),自助次數(shù)為n。則算法將有放回次數(shù)設(shè)置為n,并經(jīng)過采樣后形成m個(gè)子樣本集合。由此實(shí)現(xiàn)對(duì)原始訓(xùn)練數(shù)據(jù)集的切割,樣本總體滿足。在每一個(gè)樣本中,針對(duì)每一條訓(xùn)練數(shù)據(jù)sk={a1,a2,a3,...,ain}進(jìn)行歸一化處理,其中,a1,a2,a3,…,ain為sk中的元素,in為向量長(zhǎng)度。處理依據(jù)為:nai=(ai-amin))/(amax-amin)),nai為sk中某一元素ai歸一化后的值,amin為sk中值最小的某一元素,amax為sk中值最大的某一元素。
步驟二:
對(duì)每一條訓(xùn)練數(shù)據(jù)sk,采用數(shù)據(jù)結(jié)構(gòu)<instancek,targetk,type>存儲(chǔ)于數(shù)據(jù)塊中。其中,instancek為sk,targetk為sk的訓(xùn)練目標(biāo)target為針對(duì)某一訓(xùn)練數(shù)據(jù)預(yù)先給定的辨識(shí)結(jié)果,type包含兩種字符串值“train”或“test”,如果sk為訓(xùn)練數(shù)據(jù),則字段type中被標(biāo)注train,用以顯式的告知算法該數(shù)據(jù)僅用以進(jìn)行訓(xùn)練使用。最終,m個(gè)子樣本集合中的所有數(shù)據(jù)都被處理好后,每一個(gè)子樣本集合被存入一個(gè)數(shù)據(jù)塊。最終,m個(gè)訓(xùn)練數(shù)據(jù)塊被存儲(chǔ)至HDFS(Hadoop Distributed File System,Hadoop分布式文件系統(tǒng))。
步驟三:
集群中每一個(gè)mapper實(shí)例化一個(gè)BPNN(反向傳播神經(jīng)元網(wǎng)絡(luò),Back Propagation Neural Network)實(shí)例,每一個(gè)BPNN獨(dú)立初始化自身參數(shù),主要包含每一個(gè)神經(jīng)元的權(quán)值w和偏移量θ。然后,每一個(gè)mapper以并行的方式從HDFS中讀取一個(gè)訓(xùn)練數(shù)據(jù)塊,進(jìn)而從每個(gè)數(shù)據(jù)塊中依次輸入每一條訓(xùn)練數(shù)據(jù)sk。
對(duì)每一條訓(xùn)練數(shù)據(jù)sk,mapper中的BPNN首先解析字段type中的值,如果值為train,則BPNN從輸入層輸入sk。針對(duì)神經(jīng)元網(wǎng)絡(luò)中每一層的神經(jīng)元,算法執(zhí)行“正向傳遞”,亦即在每一個(gè)神經(jīng)元內(nèi),其線性部分執(zhí)行:
Ij=∑iwijoj′+θj,
其中Ij為線性部分輸出,wij為該神經(jīng)元權(quán)值,θj為該神經(jīng)元偏移量,oj′為上一層神經(jīng)元非線性部分輸出。
在每一個(gè)神經(jīng)元非線性部分,執(zhí)行:
oj為非線性部分輸出(也即每一個(gè)神經(jīng)元輸出至下一層神經(jīng)元的輸出),Ij為該神經(jīng)元內(nèi)的線性部分輸出。
當(dāng)正向傳遞執(zhí)行至輸出層后,正向傳遞過程結(jié)束,BPNN啟動(dòng)針對(duì)訓(xùn)練數(shù)據(jù)sk的“反向傳遞”過程。反向傳遞從輸出層開始執(zhí)行,在輸出層:
Errj=oj(1-oj)(tj-oj),
Errj為輸出層誤差敏感度,tj為sk所對(duì)應(yīng)的targetk。在隱層則執(zhí)行:
Errj=oj(1-oj)ΣkErrkwkj,
Errk為隱層中反向傳遞過程中上一層的誤差敏感度,wkj為反向過程中上一層神經(jīng)元權(quán)重。在反向傳遞過程中,每一個(gè)神經(jīng)元通過誤差敏感度調(diào)整自身權(quán)值w和偏移量θ:
Δwij=Errjoj,
wij=wij+Δwij,
Δθj=Errj,
θj=θj+Δθj,
執(zhí)行一定次數(shù)的正向傳遞和反向傳遞,對(duì)sk的訓(xùn)練過程結(jié)束。該mapper啟動(dòng)對(duì)下一條訓(xùn)練數(shù)據(jù)sk+1的訓(xùn)練過程。直到所有被標(biāo)注為“train”的數(shù)據(jù)都被處理,則訓(xùn)練過程結(jié)束。
步驟四:
算法開始數(shù)據(jù)辨識(shí)過程。在該過程中,集群中所有被訓(xùn)練完畢的數(shù)據(jù)同時(shí)輸入一條待辨識(shí)數(shù)據(jù),然后執(zhí)行正向傳遞過程,并輸出臨時(shí)輸出鍵值對(duì):<instancek,ojm>,其中instancek為待辨識(shí)數(shù)據(jù),同時(shí)也是該輸出的“鍵”;ojm為在該mapper內(nèi)正向傳遞后在BPNN輸出層的輸出結(jié)果,亦即辨識(shí)結(jié)果,同時(shí)也是該輸出的“值”。由于集群中具有m個(gè)mapper,每一個(gè)mapper對(duì)instancek都有自己的辨識(shí)結(jié)論,因此集群中會(huì)有數(shù)個(gè)不同的ojm。
集群?jiǎn)?dòng)一個(gè)reducer(Reduce Function單元),對(duì)以上所有ojm進(jìn)行收集。并且,在該reducer中執(zhí)行二次計(jì)算,對(duì)收集到的所有辨識(shí)結(jié)果ojm進(jìn)行“多數(shù)投票”得票最多的一個(gè)ojm值,作為對(duì)instancek的最終辨識(shí)結(jié)果,并以鍵值對(duì)<instancek,rk>的形式輸出至HDFS,其中rk為最終辨識(shí)結(jié)果。
本發(fā)明實(shí)施例對(duì)標(biāo)準(zhǔn)BPNN算法進(jìn)行了改進(jìn),通過Hadoop分布式計(jì)算架構(gòu),對(duì)BPNN方法進(jìn)行了基于數(shù)據(jù)分割的解耦,并實(shí)現(xiàn)了其分布式訓(xùn)練過程,使BPNN可以有效應(yīng)用于大數(shù)據(jù)辨識(shí)應(yīng)用中。
為保證數(shù)據(jù)切割后的樣本子集不會(huì)對(duì)數(shù)據(jù)辨識(shí)精度造成影響,本方法在mapper中引入自助法以實(shí)現(xiàn)對(duì)切割數(shù)據(jù)的采樣,在數(shù)據(jù)樣本子集中盡可能保留有原數(shù)據(jù)樣本的樣本分部特性,數(shù)據(jù)測(cè)試結(jié)果證明了該方法的有效性。
在數(shù)據(jù)最終辨識(shí)結(jié)果決定過程中,在分布式框架的reducer中引入多數(shù)投票規(guī)則,可以以較大的概率過濾掉錯(cuò)誤辨識(shí)結(jié)果而保留正確結(jié)果,實(shí)現(xiàn)了通過一組弱分類器構(gòu)建強(qiáng)分類器的方法。
本方法具有極好的可擴(kuò)展性,集群中調(diào)用的mapper數(shù)量越多,算法辨識(shí)速度越快,同時(shí)也能夠保證數(shù)據(jù)辨識(shí)的精確度。
在一個(gè)具體實(shí)施例中,可以采用符合MapReduce編程規(guī)范的Java開發(fā)環(huán)境來(lái)實(shí)現(xiàn)本發(fā)明提供的技術(shù)方案。算法運(yùn)行硬件環(huán)境為包含五臺(tái)計(jì)算機(jī)的具體集群,其中一臺(tái)為管理節(jié)點(diǎn),四臺(tái)為實(shí)際計(jì)算節(jié)點(diǎn)。
本實(shí)施例采用的數(shù)據(jù)集為標(biāo)準(zhǔn)benchmark數(shù)據(jù)集鳶尾花數(shù)據(jù)集(Iris Dataset)。在算法性能測(cè)試中,采用“數(shù)據(jù)復(fù)制”方式將鳶尾花數(shù)據(jù)集進(jìn)行擴(kuò)充,生成包含有1000條訓(xùn)練數(shù)據(jù)和1000條測(cè)試數(shù)據(jù)(待辨識(shí)數(shù)據(jù))的數(shù)據(jù)集合。集群中調(diào)用10個(gè)mapper,為觀察不同數(shù)據(jù)數(shù)量對(duì)算法精確度的影響,每一個(gè)mapper依次輸入從10至1000條訓(xùn)練數(shù)據(jù),精確度測(cè)試結(jié)果如圖2所示。
由圖2可以看出,本發(fā)明所提方法非但精確度不會(huì)因樣本切割導(dǎo)致辨識(shí)精度下降,反而由于采樣和投票技術(shù)的引入,使其準(zhǔn)確度較普通的BPNN有了一定程度的提升。
在效率測(cè)試中,依然采用數(shù)據(jù)復(fù)制方式,將鳶尾花數(shù)據(jù)集體積擴(kuò)充到1MB至1GB,其中80%的數(shù)據(jù)為訓(xùn)練數(shù)據(jù),剩余20%的數(shù)據(jù)為待辨識(shí)數(shù)據(jù),測(cè)試結(jié)果如圖3所示。
由圖3可以看出,隨著數(shù)據(jù)體積增大,本方法所需時(shí)間遠(yuǎn)遠(yuǎn)小于現(xiàn)有的利用BPNN識(shí)別數(shù)據(jù)的方法。
圖4示出了彈性測(cè)試結(jié)果,由圖4可以看出,隨著集群內(nèi)調(diào)用的mapper數(shù)量增加,本方法所需的數(shù)據(jù)辨識(shí)的執(zhí)行時(shí)間可進(jìn)一步下降,證明了算法的彈性(伸縮性)良好。
本發(fā)明的另一個(gè)實(shí)施例還提供了一種分布式數(shù)據(jù)識(shí)別系統(tǒng),如圖5所示該系統(tǒng)包括:管理終端51和多個(gè)計(jì)算終端52,其中
所述管理終端51用于對(duì)所有待識(shí)別數(shù)據(jù)進(jìn)行分割以形成多個(gè)數(shù)據(jù)塊,所述數(shù)據(jù)塊中包括用于訓(xùn)練的待識(shí)別數(shù)據(jù)和用于檢測(cè)的待識(shí)別數(shù)據(jù);
所述計(jì)算終端52用于啟動(dòng)MapReduce架構(gòu)中的各個(gè)Map Function計(jì)算單元分別獲取不同的所述數(shù)據(jù)塊;所述各個(gè)Map Function計(jì)算單元分別利用獲取到的數(shù)據(jù)塊中的用于訓(xùn)練的待識(shí)別數(shù)據(jù)對(duì)本地預(yù)設(shè)的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練;在訓(xùn)練過程結(jié)束后,所述各個(gè)Map Function計(jì)算單元分別利用經(jīng)過訓(xùn)練的所述神經(jīng)網(wǎng)絡(luò)模型對(duì)獲取到的數(shù)據(jù)塊中的用于檢測(cè)的待識(shí)別數(shù)據(jù)進(jìn)行識(shí)別以得到識(shí)別結(jié)果;
所述管理終端51還用于啟動(dòng)所述MapReduce架構(gòu)中的Reduce Function單元獲取所述各個(gè)Map Function計(jì)算單元的所述識(shí)別結(jié)果,并對(duì)所有識(shí)別結(jié)果進(jìn)行篩選以得到一個(gè)識(shí)別結(jié)果。
根據(jù)本發(fā)明提供的分布式數(shù)據(jù)識(shí)別裝置,通過對(duì)所有待識(shí)別數(shù)據(jù)進(jìn)行分割以形成多個(gè)數(shù)據(jù)塊實(shí)現(xiàn)了基于數(shù)據(jù)切割,然后采用分布式計(jì)算框架的對(duì)分布式的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,并利用訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)模型分別輸出識(shí)別結(jié)果,最終通過引入多數(shù)投票機(jī)制從各個(gè)識(shí)別結(jié)果中篩選識(shí)別結(jié)果,該分布式數(shù)據(jù)識(shí)別方案具有較高的識(shí)別效率,并且不會(huì)由于樣本集合的切割導(dǎo)致辨識(shí)精度的下降。
優(yōu)選地,所述管理終端用于采用自助算法對(duì)所有待識(shí)別數(shù)據(jù)進(jìn)行有放回抽樣,以形成多個(gè)子樣本集合,所述通過自助算法中形成的子樣本個(gè)數(shù)與所述Map Function計(jì)算單元的數(shù)量相同;分別對(duì)所述子樣本集合中的待識(shí)別數(shù)據(jù)進(jìn)行歸一化處理以得到歸一化待識(shí)別數(shù)據(jù)sk;采用數(shù)據(jù)結(jié)構(gòu)<instancek,targetk,type>分別將sk存儲(chǔ)在多個(gè)數(shù)據(jù)塊中,其中,instancek為sk,targetk為sk的訓(xùn)練目標(biāo),type為待識(shí)別數(shù)據(jù)的用途,所述用途包括訓(xùn)練用途和檢測(cè)用途;將所有數(shù)據(jù)塊存儲(chǔ)至分布式文件系統(tǒng)中。
優(yōu)選地,所述多個(gè)計(jì)算終端用于分別啟動(dòng)各個(gè)Map Function計(jì)算單元分別從所述分布式文件系統(tǒng)中讀取不同的數(shù)據(jù)塊;各個(gè)Map Function計(jì)算單元中的神經(jīng)網(wǎng)絡(luò)模型分別根據(jù)字段type確定sk的用途,對(duì)于訓(xùn)練用途的sk,則神經(jīng)網(wǎng)絡(luò)模型從輸入層輸入sk,針對(duì)每一層的神經(jīng)元執(zhí)行正向傳遞;當(dāng)正向傳遞執(zhí)行至輸出層后,正向傳遞過程結(jié)束,神經(jīng)網(wǎng)絡(luò)模型對(duì)訓(xùn)練數(shù)據(jù)sk進(jìn)行反向傳遞;各個(gè)Map Function計(jì)算單元針對(duì)每一訓(xùn)練用途的sk執(zhí)行預(yù)定次數(shù)的正向傳遞和反向傳遞,直至所有訓(xùn)練用途的sk均被處理完畢。
優(yōu)選地,所述計(jì)算終端在所述神經(jīng)網(wǎng)絡(luò)模型的每一個(gè)神經(jīng)元內(nèi),其線性部分執(zhí)行:
Ij=∑iwijoj′+θj,
其中Ij為線性部分輸出,wij為該神經(jīng)元權(quán)值,θj為該神經(jīng)元偏移量,oj′為上一層神經(jīng)元非線性部分輸出;
在每一個(gè)神經(jīng)元非線性部分,執(zhí)行:
oj為非線性部分輸出(也即每一個(gè)神經(jīng)元輸出至下一層神經(jīng)元的輸出),Ij為該神經(jīng)元內(nèi)的線性部分輸出;
所述計(jì)算終端在所述神經(jīng)網(wǎng)絡(luò)模型的輸出層執(zhí)行:
Errj=oj(1-oj)(tj-oj),
Errj為輸出層誤差敏感度,tj為sk所對(duì)應(yīng)的targetk;
在所述神經(jīng)網(wǎng)絡(luò)模型的隱層執(zhí)行:
Errj=oj(1-oj)∑kErrkwkj,
Errk為隱層中反向傳遞過程中上一層的誤差敏感度,wkj為反向過程中上一層神經(jīng)元權(quán)重;在反向傳遞過程中,每一個(gè)神經(jīng)元通過誤差敏感度調(diào)整自身權(quán)值w和偏移量θ:Δwij=Errjoj,wij=wij+Δwij,Δθj=Errj,θj=θj+Δθj。
優(yōu)選地,所述神經(jīng)網(wǎng)絡(luò)模型為反向傳播神經(jīng)元網(wǎng)絡(luò)模型,所述各個(gè)Map Function計(jì)算單元在執(zhí)行所述利用獲取到的數(shù)據(jù)塊中的用于訓(xùn)練的待識(shí)別數(shù)據(jù)對(duì)本地預(yù)設(shè)的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練的步驟之前,分別獨(dú)立初始化本地的神經(jīng)網(wǎng)絡(luò)模型的參數(shù),所述參數(shù)包括每一個(gè)神經(jīng)元的權(quán)值w和偏移量θ。
本發(fā)明實(shí)施例對(duì)標(biāo)準(zhǔn)BPNN算法進(jìn)行了改進(jìn),通過Hadoop分布式計(jì)算架構(gòu),對(duì)BPNN方法進(jìn)行了基于數(shù)據(jù)分割的解耦,并實(shí)現(xiàn)了其分布式訓(xùn)練過程,使BPNN可以有效應(yīng)用于大數(shù)據(jù)辨識(shí)應(yīng)用中。
為保證數(shù)據(jù)切割后的樣本子集不會(huì)對(duì)數(shù)據(jù)辨識(shí)精度造成影響,本系統(tǒng)在mapper中引入自助法以實(shí)現(xiàn)對(duì)切割數(shù)據(jù)的采樣,在數(shù)據(jù)樣本子集中盡可能保留有原數(shù)據(jù)樣本的樣本分部特性,數(shù)據(jù)測(cè)試結(jié)果證明了該系統(tǒng)的有效性。
在數(shù)據(jù)最終辨識(shí)結(jié)果決定過程中,在分布式框架的reducer中引入多數(shù)投票規(guī)則,可以以較大的概率過濾掉錯(cuò)誤辨識(shí)結(jié)果而保留正確結(jié)果,實(shí)現(xiàn)了通過一組弱分類器構(gòu)建強(qiáng)分類器的系統(tǒng)。
本系統(tǒng)具有極好的可擴(kuò)展性,集群中調(diào)用的mapper數(shù)量越多,算法辨識(shí)速度越快,同時(shí)也能夠保證數(shù)據(jù)辨識(shí)的精確度。
顯然,上述實(shí)施例僅僅是為清楚地說明所作的舉例,而并非對(duì)實(shí)施方式的限定。對(duì)于所屬領(lǐng)域的普通技術(shù)人員來(lái)說,在上述說明的基礎(chǔ)上還可以做出其它不同形式的變化或變動(dòng)。這里無(wú)需也無(wú)法對(duì)所有的實(shí)施方式予以窮舉。而由此所引伸出的顯而易見的變化或變動(dòng)仍處于本發(fā)明創(chuàng)造的保護(hù)范圍之中。