一種基于spark的遺傳算法優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)并行化方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及機(jī)器學(xué)習(xí)算法并行化領(lǐng)域,特別涉及一種基于spark分布式計(jì)算框架的遺傳算法優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)并行化方法。
【背景技術(shù)】
[0002]BP(Back Propagat1n)神經(jīng)網(wǎng)絡(luò)是 1986 年由 Rinehart 和 McClelland 為首的科學(xué)家小組提出,是一種按誤差逆?zhèn)鞑ニ惴ㄓ?xùn)練的多層前饋網(wǎng)絡(luò)。BP神經(jīng)網(wǎng)絡(luò)的主要思想,包括正向傳播信號(hào)和反向傳播誤差。在正向傳播過程中,輸入信號(hào)通過隱層處理后傳遞給輸出層。若輸出值與預(yù)期的值不等且大于誤差可接受范圍,則進(jìn)入誤差反向傳播過程。誤差通過隱層向輸入層傳遞,進(jìn)行誤差調(diào)整。通過不斷調(diào)整各層之間的權(quán)值,使得輸出誤差達(dá)到可接受范圍或達(dá)到最大學(xué)習(xí)次數(shù)為止。
[0003]遺傳算法(Genetic Algorithm)是一類借鑒生物界的進(jìn)化規(guī)律(適者生存,優(yōu)勝劣汰遺傳機(jī)制)演化而來的隨機(jī)化搜索方法。它是由美國(guó)的J.Holland教授1975年首先提出,其主要特點(diǎn)是直接對(duì)結(jié)構(gòu)對(duì)象進(jìn)行交叉和變異操作;具有內(nèi)在的隱并行性和更好的全局尋優(yōu)能力;采用概率化的尋優(yōu)方法,能自動(dòng)獲取和指導(dǎo)優(yōu)化的搜索空間,自適應(yīng)地調(diào)整搜索方向,不需要確定的規(guī)則。
[0004]BP神經(jīng)網(wǎng)絡(luò)算法存在收斂速度慢和容易陷入局部極小點(diǎn)的缺點(diǎn),基于遺傳算法優(yōu)化的BP神經(jīng)網(wǎng)絡(luò),首先用遺傳算法優(yōu)化BP網(wǎng)絡(luò)的權(quán)值和閾值,以提高網(wǎng)絡(luò)的收斂速率,克服易陷入局部極小的不足。
[0005]傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法,是在單機(jī)上串行處理數(shù)據(jù)集,但是隨著信息化社會(huì)的飛速發(fā)展,需要進(jìn)行數(shù)據(jù)挖掘的數(shù)據(jù)量急劇增大,達(dá)到了海量數(shù)據(jù)的級(jí)別,因此傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法在處理海量數(shù)據(jù)集時(shí)會(huì)有很大的問題,比如耗時(shí)非常長(zhǎng),甚至是內(nèi)存不足無法訓(xùn)練等問題。
[0006]Spark是Apache推出的分布式計(jì)算框架,提供了并行編程模型,用戶只需調(diào)用相關(guān)的API即可完成分布式處理程序,為大數(shù)據(jù)的處理提供了有利的條件。因此,基于spark框架實(shí)現(xiàn)遺傳算法優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)算法并行化,可以彌補(bǔ)上述問題。
【發(fā)明內(nèi)容】
[0007]為了能更好的解決海量數(shù)據(jù)條件下的訓(xùn)練效率問題,本發(fā)明提出了一種基于spark的遺傳算法優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)并行化方法,采用新一代并行計(jì)算技術(shù),在不影響訓(xùn)練精度的條件下,提高BP神經(jīng)網(wǎng)絡(luò)的收斂速度,提高訓(xùn)練效率,實(shí)現(xiàn)BP神經(jīng)網(wǎng)絡(luò)在多個(gè)節(jié)點(diǎn)上并行計(jì)算。
[0008]本發(fā)明采用基于新一代分布式計(jì)算框架spark,實(shí)現(xiàn)遺傳算法優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)并行化方法,包括如下步驟:
[0009]步驟1:數(shù)據(jù)預(yù)處理,將全局訓(xùn)練集切分成多個(gè)子集和,并且存儲(chǔ)到HDFS或者其他的分布式文件系統(tǒng)中;
[0010]步驟2:采用spark并行編程模型改進(jìn)遺傳算法對(duì)BP神經(jīng)網(wǎng)絡(luò)的權(quán)值進(jìn)行全局進(jìn)化尋優(yōu),經(jīng)過一定次數(shù)的進(jìn)化迭代后,得到優(yōu)化的網(wǎng)絡(luò)初始權(quán)值。具體流程如下:
[0011](I)在spark集群中啟動(dòng)實(shí)現(xiàn)map接口的作業(yè),各個(gè)節(jié)點(diǎn)將部分訓(xùn)練數(shù)據(jù)作為RDD輸入,將每個(gè)個(gè)體編碼成染色體,生成新的種群RDD數(shù)據(jù)集;
[0012](2)將新生成的種群RDD作map轉(zhuǎn)換處理,根據(jù)適應(yīng)度函數(shù)計(jì)算每個(gè)個(gè)體的適應(yīng)度值;
[0013](3)由個(gè)體適應(yīng)度值所決定的某個(gè)規(guī)則,如輪盤賭方法,選擇將進(jìn)入下一代的個(gè)體,生成優(yōu)勝劣汰后的種群RDD ;
[0014](4)將(3)中生成的種群RDD作交叉操作;
[0015](5)將⑷中生成新的種群RDD做變異操作;
[0016](6)若迭代次數(shù)滿足條件或結(jié)果達(dá)到收斂條件,得到初始網(wǎng)絡(luò)權(quán)值,結(jié)束;否則,進(jìn)入(2)進(jìn)行下一輪的迭代。
[0017]步驟3:在各計(jì)算節(jié)點(diǎn)上,都采用優(yōu)化后的網(wǎng)絡(luò)初始權(quán)值建立自身的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu);
[0018]步驟4:采用spark并行編程模型改進(jìn)并行的BP神經(jīng)網(wǎng)絡(luò)算法,對(duì)原始訓(xùn)練數(shù)據(jù)集進(jìn)行迭代訓(xùn)練。具體流程如下:
[0019](I)在Driver進(jìn)程中讀取網(wǎng)絡(luò)初始權(quán)值,并廣播到每個(gè)計(jì)算節(jié)點(diǎn);
[0020](2)在每個(gè)計(jì)算節(jié)點(diǎn)上用初始權(quán)值都實(shí)例化一個(gè)網(wǎng)絡(luò)結(jié)構(gòu);
[0021](3)在每個(gè)計(jì)算節(jié)點(diǎn)上,使用批量訓(xùn)練的模式將部分樣本作用于網(wǎng)絡(luò)上,進(jìn)行一定次數(shù)的迭代后輸出網(wǎng)絡(luò)權(quán)值;
[0022](4)綜合各個(gè)節(jié)點(diǎn)的輸出獲得新的網(wǎng)絡(luò)權(quán)值,并根據(jù)網(wǎng)絡(luò)權(quán)值的調(diào)整量決定是否進(jìn)行再次迭代。
[0023]步驟5:輸出訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。
[0024]與現(xiàn)有技術(shù)相比,本發(fā)明所提供的一種基于spark的遺傳算法優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)并行化方法,能更好的解決海量數(shù)據(jù)條件下的訓(xùn)練效率問題。通過采用新一代并行計(jì)算技術(shù),改進(jìn)遺傳算法對(duì)BP神經(jīng)網(wǎng)絡(luò)的權(quán)值進(jìn)行全局進(jìn)化尋優(yōu),經(jīng)過一定次數(shù)的進(jìn)化迭代后,得到優(yōu)化的神經(jīng)網(wǎng)絡(luò)初始權(quán)值,再使用并行的BP神經(jīng)網(wǎng)絡(luò)算法進(jìn)行迭代,最終輸出網(wǎng)絡(luò)結(jié)構(gòu)。在訓(xùn)練過程中,各個(gè)階段都是可以多節(jié)點(diǎn)并行處理的,這樣能大大提升BP神經(jīng)網(wǎng)絡(luò)的收斂速度,在不影響訓(xùn)練精度的條件下,提高訓(xùn)練的效率。
【附圖說明】
[0025]圖1為本發(fā)明方法的流程圖。
[0026]圖2為改進(jìn)的并行遺傳算法流程圖。
[0027]圖3為改進(jìn)的遺傳算法并行化示意圖
[0028]圖4為改進(jìn)的并行BP神經(jīng)網(wǎng)絡(luò)算法流程圖。
[0029]圖5為BP神經(jīng)網(wǎng)絡(luò)并行化示意圖。
【具體實(shí)施方式】
[0030]下文與圖示本發(fā)明原理的附圖一起提供對(duì)本發(fā)明一個(gè)或者多個(gè)實(shí)施例的詳細(xì)描述。結(jié)合這樣的實(shí)施例描述本發(fā)明,但是本發(fā)明不限于任何實(shí)施例。本發(fā)明的范圍僅由權(quán)利要求書限定,并且本發(fā)明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細(xì)節(jié)以便提供對(duì)本發(fā)明的透徹理解。出于示例的目的而提供這些細(xì)節(jié),并且無這些具體細(xì)節(jié)中的一些或者所有細(xì)節(jié)也可以根據(jù)權(quán)利要求書實(shí)現(xiàn)本發(fā)明。
[0031]如上所述,本發(fā)明所提供的一種基于spark的遺傳算法優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)并行化方法,更好的克服海量訓(xùn)練數(shù)據(jù)條件下的問題,通過遺傳算法對(duì)BP神經(jīng)網(wǎng)絡(luò)的權(quán)值進(jìn)行全局進(jìn)化尋優(yōu),經(jīng)過一定次數(shù)的進(jìn)化迭代后,再使用BP神經(jīng)網(wǎng)絡(luò)算法進(jìn)行迭代,并且各個(gè)階段都是可以并行處理的,這樣能大大提升BP神經(jīng)網(wǎng)絡(luò)的收斂速度,提高訓(xùn)練的效率。以下結(jié)合說明書附圖和【具體實(shí)施方式】對(duì)本發(fā)明的方法做進(jìn)一步詳細(xì)說明。
[0032]在執(zhí)行算法之前,需要根據(jù)具體的應(yīng)用場(chǎng)景對(duì)一些參數(shù)進(jìn)行初始化,如遺傳算法的最大迭代次數(shù)、染色體編碼規(guī)則、個(gè)體適應(yīng)度函數(shù)、進(jìn)行選擇操作的具體函數(shù)、進(jìn)行交叉操作的概率Pc、具體的基因交換規(guī)則,進(jìn)行變異操作的概率Pm等。
[0033]參考圖1,本發(fā)明的具體步驟包括:步驟1:數(shù)據(jù)預(yù)處理,將數(shù)據(jù)處理為文本向量,將全局訓(xùn)練集切分成多個(gè)子集和,并且存儲(chǔ)到HDFS或者其他的分布式文件系統(tǒng)中;步驟2:采用spark并行編程模型改進(jìn)遺傳算法對(duì)BP神經(jīng)網(wǎng)絡(luò)的權(quán)值進(jìn)行全局進(jìn)化尋優(yōu),經(jīng)過一定次數(shù)的進(jìn)化迭代后,得到優(yōu)化的網(wǎng)絡(luò)初始權(quán)值;步驟3:在各計(jì)算節(jié)點(diǎn)上,都采用優(yōu)化后的網(wǎng)絡(luò)初始權(quán)值建立自身的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu);步驟4:采用spark并行編程模型改進(jìn)并行的BP神經(jīng)網(wǎng)絡(luò)算法,對(duì)原始訓(xùn)練數(shù)據(jù)集進(jìn)行迭代訓(xùn)練,直到結(jié)果收斂或滿足最大迭代次數(shù);步驟5:輸出訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。
[0034]具體的,參考圖2和圖3,本發(fā)明的步驟2中使用改進(jìn)的并行遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò)初始權(quán)值,具體包括如下步驟:
[0035](I)個(gè)體編碼
[0036]將遺傳算法的初始輸入數(shù)據(jù)存儲(chǔ)在HDFS上,建立初始種群數(shù)據(jù)集RDD。在spark集群中啟動(dòng)實(shí)現(xiàn)map接口的作業(yè),各個(gè)節(jié)點(diǎn)將部分訓(xùn)練數(shù)據(jù)作為RDD輸入,在具體處理函數(shù)中,每次讀取一個(gè)個(gè)體對(duì)象,根據(jù)具體的染色體編碼規(guī)則,將個(gè)體編碼成染色體,并輸出該染色體對(duì)象,生成新的種群RDD數(shù)據(jù)集。
[0037](2)計(jì)算適應(yīng)度
[0038]將編碼后的個(gè)體計(jì)算其適應(yīng)度。具體地,將新生成的種群RDD作map轉(zhuǎn)換處理,在具體處理函數(shù)中,每次處理一個(gè)染色體對(duì)象,根據(jù)具體的適應(yīng)度函數(shù),計(jì)算每個(gè)個(gè)體的適應(yīng)度值,將每個(gè)個(gè)體和其適應(yīng)度值組成新的對(duì)象,即〈個(gè)體,適應(yīng)度值 >,并輸出該對(duì)象,生成新的RDD。
[0039](3)選擇操作
[0040]綜合(2)中所有節(jié)點(diǎn)的輸出,在具體處理函數(shù)中,將由適應(yīng)度值所決定的某個(gè)規(guī)則(如輪盤賭方法),復(fù)制選擇進(jìn)入下一代的個(gè)體,輸出需要進(jìn)入下一代的個(gè)體,生成優(yōu)勝劣汰后的種群數(shù)據(jù)集RDD。
[0041](4)交叉操作
[0042]得到選擇操作的種群RDD后