本發(fā)明涉及大數(shù)據(jù)與云計算領域,尤其涉及一種基于局部收斂權陣進化的BP神經(jīng)網(wǎng)絡MapReduce訓練方法。
背景技術:
隨著大數(shù)據(jù)時代的到來,各行各業(yè)對大數(shù)據(jù)的處理速度要求越來越高,傳統(tǒng)的串行化BP神經(jīng)網(wǎng)絡訓練方法已不能滿足需求。因此,越來越多的領域采用在云計算環(huán)境下利用MapReduce并行訓練方法來實現(xiàn)對大數(shù)據(jù)的處理。但現(xiàn)有的MapReduce并行訓練過程中,Map任務只能輸出局部收斂權陣,而對這些局部收斂權陣,Reduce任務通過簡單的加權平均方法得出最終結果,這種方式存在以下缺點:
1、Map任務中訓練收斂速度慢,易陷入局部極值;
2、Reduce任務中的加權平均缺乏理論依據(jù);
3、無法保證訓練最終達到全局收斂性。
技術實現(xiàn)要素:
為解決上述問題,本發(fā)明結合遺傳算法的優(yōu)勢,將遺傳算法應用于BP神經(jīng)網(wǎng)絡MapReduce訓練中,提出了基于局部收斂權陣進化的BP神經(jīng)網(wǎng)絡MapReduce訓練方法。
本發(fā)明采用的技術方案如下:
一種基于局部收斂權陣進化的BP神經(jīng)網(wǎng)絡MapReduce訓練方法,包括以下步驟:
步驟一、將訓練樣本集劃分成多個輸入數(shù)據(jù)分片,每個輸入數(shù)據(jù)分片對應傳遞到一個Map任務中;
步驟二、各Map任務接收輸入數(shù)據(jù)分片,分別使用獲得的輸入數(shù)據(jù)分片對初始BP神經(jīng)網(wǎng)絡進行迭代訓練,首次訓練時初始BP神經(jīng)網(wǎng)絡的權陣隨機產生,Map任務結束,每個Map任務產生一個對輸入數(shù)據(jù)分片達到局部收斂的權陣,之后將各權陣傳遞到Reduce任務作為遺傳算法的初始種群;
步驟三、Reduce任務接收到所有Map任務產生的局部收斂權陣,利用遺傳算法對各局部收斂權陣進行進化,最終輸出經(jīng)遺傳算法優(yōu)化的種群;
步驟四、步驟一~三作為MapReduce訓練BP神經(jīng)網(wǎng)絡的一次迭代,當一次迭代結束后,利用步驟三輸出的種群中的各局部收斂權陣對訓練樣本集進行全局收斂性判斷;如果該輪次已經(jīng)產生對訓練樣本集全局收斂的權陣,則MapReduce訓練結束;否則選取步驟三最終輸出種群中適應度最高的個體,作為下輪MapReduce迭代時所有Map任務的初始權陣;
步驟五、重復進行步驟二~四,直到MapReduce訓練BP神經(jīng)網(wǎng)絡達到全局收斂時訓練結束。
步驟四中判斷某局部收斂權陣是否對訓練樣本集全局收斂的過程如下:每個Map任務分別將步驟三輸出種群中的每個個體作為初始權陣,通過各自的輸入數(shù)據(jù)分片對BP神經(jīng)網(wǎng)絡進行迭代訓練,得出的累積誤差取均值,得出誤差均值E,所有Map任務對于某個個體得出誤差均值集合{E1,E2,...,En},n為Map任務的個數(shù),當每個Map任務最終產生的誤差均值都達到預期誤差,即max{E1,E2,...,En}<δ時,即可判定該個體即局部收斂權陣對訓練樣本集已經(jīng)全局收斂。由于每個Map任務使用相同的初始權陣,同時所有Map接收到的輸入數(shù)據(jù)分片合并在一起就是訓練樣本集,因此,當每個Map任務最終產生的誤差均值都達到預期誤差時,即可判定該個體對訓練樣本集全局收斂,該個體即為MapReduce訓練的最終結果。
若經(jīng)過兩輪迭代未得出訓練結果,則從優(yōu)化后的種群中選取適應度最高(即誤差最小)的個體作為初始權陣進行下一輪迭代訓練。步驟四中適應度的判斷函數(shù)為其中,F(xiàn)表示適應度,E’表示每個個體代表的局部收斂權陣對于訓練樣本集的誤差,該誤差由該個體對于所有輸入數(shù)據(jù)分片得出的誤差均值E取平均獲得,即E’=(E1+E2+...+En)/n。
上述步驟所述的輸入數(shù)據(jù)分片是由訓練樣本集劃分的小樣本集。通過將大樣本集進行合理拆分,利用Map任務分別進行迭代訓練,得出一些局部收斂權陣。然后再由Reduce任務利用遺傳算法將這些局部收斂權陣進行優(yōu)化,之后再利用BP神經(jīng)網(wǎng)絡進行全局收斂,判斷收斂效果,反復多次,尋找出最優(yōu)的收斂權陣,有效提高收斂速度和訓練精度。
為提高收斂速度,步驟二中各Map任務并行訓練各輸入數(shù)據(jù)分片。
本發(fā)明在Map階段利用初始BP神經(jīng)網(wǎng)絡分片并行進行局部收斂,可有效提高收斂速度;同時,又利用遺傳算法對局部收斂權陣進行優(yōu)化,生成最優(yōu)的收斂權陣,然后再利用BP神經(jīng)網(wǎng)絡進行全局收斂,相比原有單一的BP神經(jīng)網(wǎng)絡訓練方法,有效提高了訓練的精度。
附圖說明
圖1是本發(fā)明方法的步驟流程圖。
具體實施方式
下面結合附圖對本發(fā)明進行詳細說明。
一種基于局部收斂權陣進化的BP神經(jīng)網(wǎng)絡MapReduce訓練方法,包括以下步驟:
步驟一、將訓練樣本集劃分成多個輸入數(shù)據(jù)分片(即小樣本集),每個輸入數(shù)據(jù)分片對應傳遞到一個Map任務中。
步驟二、各Map任務接收輸入數(shù)據(jù)分片,分別使用獲得的輸入數(shù)據(jù)分片對初始BP神經(jīng)網(wǎng)絡進行迭代訓練(首次訓練時初始BP神經(jīng)網(wǎng)絡的權陣隨機產),各Map任務的訓練并行進行。Map任務結束,每個Map任務產生一個對輸入數(shù)據(jù)分片達到局部收斂的權陣,之后將各權陣傳遞到Reduce任務作為遺傳算法的初始種群。
步驟三、Reduce任務接收到所有Map任務產生的局部收斂權陣,利用遺傳算法對各局部收斂權陣進行進化,最終輸出經(jīng)遺傳算法優(yōu)化的種群。
步驟四、步驟一~三作為MapReduce訓練BP神經(jīng)網(wǎng)絡的一次迭代,當一次迭代結束后,利用步驟三輸出的種群中的各局部收斂權陣對訓練樣本集進行全局收斂性判斷。具體過程如下:每個Map任務分別將步驟三輸出種群中的每個個體作為初始權陣,通過各自的輸入數(shù)據(jù)分片對BP神經(jīng)網(wǎng)絡進行迭代訓練,得出的累積誤差取均值,得出誤差均值E,所有Map任務對于某個個體得出誤差均值集合{E1,E2,...,En},n為Map任務的個數(shù),當每個Map任務最終產生的誤差均值都達到預期誤差,即max{E1,E2,...,En}<δ時,即可判定該個體對訓練樣本集已經(jīng)全局收斂。
如果該輪次已經(jīng)產生對訓練樣本集全局收斂的權陣,則MapReduce訓練結束。否則根據(jù)上文得到的每個個體對于所有Map任務的誤差均值,再取平均求出每個個體對于訓練樣本集的誤差,利用該誤差算得每個個體的適應度,選取適應度最高的個體作為下輪MapReduce迭代時所有Map任務的初始權陣。其中,適應度的判斷函數(shù)為:F表示適應度,E’表示每個個體代表的局部收斂權陣對于訓練樣本集的誤差,E’=(E1+E2+...+En)/n。
步驟五、將選取的適應度最高的個體作為MapReduce迭代時所有Map任務的初始權陣,重復進行步驟二~四,直到MapReduce訓練BP神經(jīng)網(wǎng)絡達到全局收斂時訓練結束。
由于每個計算結點上的Map任務只訓練一個小的樣本集,并行訓練的過程可大大提高訓練速度。另外,全局收斂的判斷可看作是下一輪訓練的開始,不會增加額外的計算時間。因此,該方法在時間效率上是可行的。