基於改進MapReduce模型的BP神經網路並行化研究
摘要:為了提高BP神經網路演算法並行化速率,利用神經網路並行化思想,提出了一種基於Hadoop平台的改進MapReduce編程模型及並行化的實現。採用MapReduce編程模型,用神經網路訓練集的一組樣本的鍵/值替代單一鍵/值,通過分組標記將同一value值對應的reduce工作方式分散為多個reduce進行工作,實現各個任務節點並行處理大數據,從而減少了處理大規模數據集的運行時間。選用不同大小數據集進行測試,通過與傳統的神經網路並行化進行對比,發現改進後的MapReduce並行編程模型提高了神經網路的並行速率,在處理大數據集時具有一定的優越性。
正文內容:
0 引言
BP神經網路[1]是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。但是,傳統BP神經網路在訓練時間、逼近精度以及內存空間的利用方面都存在一定的問題。因此,並行化神經網路是發展的必然趨勢。文獻[2]中,「神經網路並行化提高了訓練的容錯度」反映出神經網路並行化可以保證良好的容錯性和可靠性;文獻[3]指出在並行化過程中,並行過程中隱藏層節點數目一般選擇輸入向量維度的2倍;文獻[4]提出「並行化過程中仍舊存在訓練易陷入癱瘓,訓練時間較長等問題」。目前,由Google公司提出的MapReduce並行計算模型[5-7]是並行化的常用實現方式。一方面,MapReduce通過把數據集進行大規模操作,分發給網路上的每個節點來實現可靠性。另一方面,其本身為分散式系統,可高度並行處理數據,一定程度上縮短了處理時間。本文在原有MapReduce模型的Map和Reduce上分別做出改進,減少了MapReduce在神經網路並行化中不必要的消耗時間,從而提高了BP神經網路的並行化速率。
1 BP神經網路
1.1 BP神經網路的拓撲結構
BP神經網路是應用最廣泛的神經網路之一。在BP神經網路中,單個樣本有 個輸入和 個輸出,在輸入層和輸出層之間有一個或多個隱含層。每一個節點都與上一層的所有節點相連,稱為全連接。層與層間的節點通過激勵函數與權值相聯繫。本實驗激勵函數選用Sigmoid轉換函數:
根據Hornik的結論[8]:如果BP神經網路的輸入層與輸出層選用線性轉換函數,隱含層選用Sigmoid轉換函數,BP網路只需具有1個隱含層就可完成對任意函數的任意逼近。一般地,增加隱含層節點數,要比增加隱含層數容易獲得較小的誤差,其訓練效果更容易實現。因此,本訓練網路設計選取1個隱含層。
1.2 BP神經網路的原理
BP神經網路分為兩個過程[9],前向傳播過程和反向傳播過程。
前向傳播過程中,輸入信號經過隱含層計算後傳遞給輸出層。若輸出值與預期值的偏差 大於誤差可接受範圍,則進入誤差反向傳播過程。誤差 經過隱含層向輸入層傳遞進行誤差調整,不斷調整各層之間的權值,直至輸出誤差達到可接受範圍或達到最大學習次數。過程如圖1所示。
2 MapReduce模型
MapReduce模型是Google公司提出的一個編程模型[10],用來處理大規模數據集的並行運算。Map和Reduce是它的主要思想,極大地方便了編程人員在不懂得分散式並行編程的情況下,將自己的程序運行在分散式系統上。MapReduce模型提供了並行計算框架,能夠自主完成計算任務的並行處理。自動劃分計算數據和計算任務,並自動分配執行任務和收集計算結果。許多底層細節全部交由系統負責,對編程人員保持透明性。
MapReduce編程模型通過一組輸入鍵/值,經過2個庫函數map函數和reduce函數,得到另一組輸出鍵/值,工作原理如圖2所示。用戶自定義庫函數首先將初始鍵/值作為用戶自定義的map方法的輸入,得到輸出鍵/值,然後將具有相同key值的value放到一個集合中得到values集合。鍵值作為reduce的輸入值,reduce將接收數據交給用戶自定義的reduce函數進行處理,形成新的對,並將其作為最終輸出結果。
3 BP神經網路的MapReduce並行方法
BP神經網路雖然已經是應用最廣泛的神經網路之一,但其在處理海量數據時存在訓練時間過長、精度不夠精準等問題不可忽視。運用MapReduce模型對神經網路進行並行化,可一定程度上避免這些問題。Map和Reduce是MapReduce的主要思想。Map階段,系統會自動將待處理數據分成多個數據塊。每個數據塊對應一個計算任務節點,這些任務節點並行完成數據處理。同時,MapReduce運用數據/代碼互定位減少通信延遲,從而縮短神經網路運行時間。該模型可以順序處理神經網路的訓練集,並大規模分發給各個節點來保證訓練結果的可靠性。
BP神經網路的MapReduce模型實現主要分為兩個階段[11]:Map階段和Reduce階段。在Map階段,將原始數據集即樣本數據作用到網路中,系統會自動將數據集分塊成為實際的神經網路訓練集,經過一系列次數的迭代得到權值矩陣;而Reduce階段則是綜合Map階段輸出的權值矩陣再次處理得到新的權值矩陣,然後根據權值來判斷是否繼續迭代。以下是實現的具體流程。
Map階段[12-13]處理數據前,首先從HDFS文件系統上獲得初始權值,以初始整個網路。在Map階段中,每一個Map節點利用一條訓練數據在當前網路中進行正向傳播。現設節點a和節點b之間的權值為wab,節點b的閥值為m,每個節點的輸出值為xb,而節點輸出值是根據上一層所有節點輸出值、當前節點與上一層所有節點的權值、閥值和激勵函數實現的,計算公式如下:
BP神經網路的主要目的是反覆修正權值和閥值,使得誤差函數值達到最小,以輸出期望得到的結果。反向傳播計算較正向傳播過程複雜,是基於WidrowHoff學習規則,通過沿著相對誤差網路權值改變數,根據梯度下降法來調整網路的權值和閥值,並經調整後輸出中間鍵/值。Reduce階段,在獲得中間鍵/值後把具有相同key值的多組value值累加在一起,將一串value值輸出為一個value值,完成權值矩陣的更新。根據實驗條件及輸出結果,判定是否重新進行迭代處理。實驗中需定義一個滿足Hadoop序列的WeightWritable介面類用於實驗的數據傳遞,其中也記錄經過Map訓練後的所有value值。
Mapper函數偽代碼如下:
輸入:key,value
輸出:keyWritable,WeightWritable
Mapper(key,value)
{
利用樣本數據在當前網路中正向傳播;
反向傳播計算權值改變數;
獲得當前網路權值,賦值keyWritable;
獲得本次訓練權值改變數,賦值WeightWritable;
Emit(keyWritable,WeightWritable);
}
Reduce階段以Map階段輸出的中間鍵/值作為輸入,輸出為,其中需要判斷是否進行下一次迭代訓練。此時,值為1需要進行迭代訓練。Reduce主要是統計擁有相同key值的多個value值,最後輸出平均值,即實現「歸併」功能。Reduce會讀取HDFS文件系統保存的上一次訓練後的權值用作結果對比。若二者差值未達到足夠小的水平,則需要再進行迭代處理,並用訓練後的結果作為下一次迭代的輸入權值。
Reducer函數偽代碼如下:
輸入:keyWritable,WeightWritable
輸出:key,value』
Reducer(keyWritable,WeightWritable)
{
while(未處理完所有WeightWritable)
{
收集Map階段輸出的WeightWritable;
}
統計計算得出本次訓練權值改變數;
計算本次訓練後網路權值value』;
if(|value』–value|
Emit(key,value』);
else
進入下一次迭代計算;
}
4 改進MapReduce模型
改進後的MapReduce模型基本繼承了原來MapReduce模型的Mapper函數和Reducer函數的基本功能。雖然原有的MapReduce模型在神經網路並行化過程中分布可靠,與未並行化相比減少了數據的處理時間,但是在並行處理時因頻繁訪問I/O消耗了一定的工作時間,某種程度上增加了實際的處理時間。在此基礎上,提出了兩種改進方法:一是在原來輸入數據為一組樣本的情況下,將輸入數據改為一組樣本,以減少Map的數量,從而減少資源的消耗和Map階段處理數據的時間;二是在Reduce階段將原來的key值替換為一個元祖tuple。該元祖包括已有key值和新加入的分組編號,使多個reduce並行工作,從而減少處理時間。改進的MapReduce模型工作原理,如圖3所示。
4.1 Map部分
在改進後的MapReduce模型中,用戶定義的Mapper函數接收數據的鍵/值對集合,即一組樣本的而不是輸入單一的。Map操作的實質是通過把輸入自動分割成多個數據片而分到不同的機器上運行。實驗中採取3台機器將數據分片,然後輸入到各個機器進行處理。同一台機器同時間段只能允許一個Map節點進行工作。實驗證明,適當的Map個數會降低數據處理時間,提高運行速率。Map節點數量過多或過少都會降低速率。
從任務執行過程來看,首先啟動用戶程序,每個作業執行中都會有一個主控程序,由主控程序分配Map個數和Reduce個數。被指派工作的Map節點數量要根據機器數來分配,需要保證多個Map處於同一時間片能夠處理所有的樣本。經過處理後,生成傳給指派的Mapper函數,產生中間鍵/值放入緩存中。Reduce將這些作為自己的輸入,使用中間key值進行歸併,輸出到最後的結果中。若需要繼續迭代,需將處理結果作為下一輪MapReduce過程的Map階段的輸入。
4.2 Reduce部分
由MapReduce模型工作原理可知,Reduce階段的輸入有key和WeightWritable兩部分。未改進的MapReduce模型中,key的類型為DoubleWritable,用來描述特定的邊;而改進後模型將key替換為一個元組tuple,其類型為TupleWritable。這個元組包含Seq和key兩個屬性,其中Seq為IntWritable類型,用來標識分組組號,key為DoubleWritable類型,仍用來描述特定的邊。每個樣本訓練後,每個邊都對應著一個權值變化量。假設有m 個樣本,則未改進時每個Reduce的輸入值WeightWritable都有m 個值。一個Reduce要對m 個數據進行處理,若m 特別大,消耗的時間會較長;假設將樣本數據分為k 組,則每組有 個數據,即每個reduce的WeightWritable對應著m/k 個數據,讓k 個reduce並行工作來完成改進前一個reduce完成的工作,從而縮短處理時間。表1為Reduce改進前與改進後的輸入值情況。
5 基於MapReduce改進模型的BP神經網路並行方法
根據改進的MapReduce模型,Map階段的初始鍵值不再是單一鍵值而是一組神經網路訓練集的鍵值,相當於將一個神經網路訓練分散成多個子神經網路進行訓練,其他過程基本繼承原來的訓練過程,從而計算輸出誤差,然後將生成的中間鍵值傳遞到reduce階段。
Map函數偽代碼如下:
輸入:key,value
輸出:tuple[seq,key],WeightWritable
Mapper(key,value)
{
利用一組樣本數據在當前網路中正向傳播;
反向傳播計算權值改變數;
獲得當前網路權值,賦值tuple[seq,key];
獲得本次訓練權值改變數,賦值WeightWritable;
計算此次訓練實驗誤差;
Emit(tuple[seq,key],WeightWritable);
}
在Reduce階段,將BP神經網路訓練集在Map階段的訓練結果(tuple[seq,key],Weight-Writable)作為輸入,其中用元組tuple替代未改進前的key值,將大數據集下的同一key值對應的單一reduce工作方式改為多個reduce並行工作方式,從而減少並行處理時間。
Reduce函數偽代碼如下:
輸入:tuple[seq,key],WeightWritable
輸出:key,value』
Reducer(tuple[seq,key],WeightWritable)
{
while(未處理完所有WeightWritable)
{
收集Map階段輸出的WeightWritable;
}
統計計算得出本次訓練權值改變數;
計算本次訓練後網路權值value』;
if(|value』–value|
Emit(key,value』);
else
進入下一次迭代計算;
}
圖4為基於BP神經網路演算法改進的MapReduce並行編程模型工作流程。
6 實驗及結果分析
本實驗採用1台物理機虛擬3台虛擬機,即1個Master和2個Slave節點,節點之間在區域網中相互連通。為了實現節點間在同一區域網上定向通信,配置使用靜態地址。各節點的IP分布如表2所示(處理器型號Intel Core i5 2.7,內存6 GB)。
實驗利用原有的MapReduce模型和改進後的MapReduce模型分別對不同大小的數據集進行並行化處理,結果如表3所示。
如表3所示,實驗中,隨著數據量的增大,程序的運行時間變長,但使用改進的MapReduce模型優化效果也越明顯。實驗中發現,程序運行時間大多消耗在Map階段。因此,只有數據集龐大到一定程度,Reduce階段的模型改進效果才會更加顯著。
7 結 語
本文對基於MapReduce的BP神經網路演算法進行研究,完成了BP神經網路的並行化,並基於此提出了一種改進後的MapReduce模型,並將MapReduce改進模型運用到BP神經網路中,成功減少了並行處理數據的時間,提高了並行化速率。因實驗條件有限,無法對過大數據集進行實驗,未來將會繼續對過大數據集進行試驗。此外,選取合適的作業調度可以提高整個系統的計算性能,而多台機器共享MapReduce集群可以減少一定代價。因此,接下來將繼續進行研究,以期使MapReduce模型更加成熟。
參考文獻:
[1] 朱珍.基於神經網路集成分類器預處理的支持向量機分類演算法[J].科技通報,2013,29(04):26-27.
[2] Ripley.B.D.模式識別與神經網路[M].北京:人民郵電出版社,2009.
Ripley.B.D.Pattern Recognition and Neural Network[M].Beijing:Posts & Telecom Press,2009.
[3] 朱啟敏.基於雲計算平台的神經網路計算方法及其應用研究[D].廣州:華南理工大學,2014.
[4] ZHU Chen-jie,RAO Ruo-nan.The Improved BP Algorithm Based on MapReduce and Genetic Algorithm[J].CSSS,2012,28(10):9-10.
[5] Baroni M,Bernardini S.BootCaT:Bootstrapping Corpora and Terms from the Web[C].Proceedings of LREC,2004:1313-1316.
[6] Ghermawat S,Gobioff H,Leung S T.The Google File System[C].ACM SIGOPS Operating Systems Review ACM,2003:29-43.
[7] 劉鵬.實戰Hadoop:開啟通向雲計算的捷徑[M].北京:電子工業出版社,2011.
[9] 朱晨傑,楊永麗.基於mapreduce的BP神經網路演算法的研究[J].微型電腦應用,2012,28(10):9-12.
[10]周峰,李旭偉.一種改進的MapReduce並行編程模型[J].計算機技術與信息發展,2009(02):65-66.
[11]崔紅艷,曹建芳,史昊.一種基於MapReduce的並行PSO-BP神經網路演算法[J].科技通報,2017,33(04):110-115.
[12]陳俊傑,強彥.基於模擬退火的MapReduce調度演算法[J].計算機工程,2012,38(19):45-48.
[13]冼進,余桂城.基於雲計算的作業調度演算法研究[J].計算機與數字工程,2014,39(07):39-42.
作者:李 楠,於孟渤,賈珍珍,王一惠,李昕宸,鄒淑雪
單位:吉林大學 計算機科學與技術學院,吉林 長春 130012
作者簡介:李 楠,女,學士,主要研究方向為物聯網工程;
於孟渤,男,學士,主要研究方向為計算機科學與技術;
賈珍珍,女,學士,主要研究方向為物聯網工程;
王一惠,女,學士,主要研究方向為物聯網工程;
李昕宸,女,學士,主要研究方向為物聯網工程;
鄒淑雪,女,博士,講師,通訊作者,主要研究方向為計算智能、生物信息學。
本文刊登在《通信技術》2018年第4期(轉載請註明出處,否則禁止轉載)


※三維視頻的深度圖快速編碼演算法
※基於隨機森林的低階數字調製識別演算法研究
TAG:通信技術編輯部 |