毛伊敏,張瑞朋,高 波
1.江西理工大學 信息工程學院,江西 贛州 341000
2.中國地質調查局 西安地質調查中心,西安 710000
隨著互聯網技術的迅速發展以及大數據時代的到來[1],使得大數據相較于傳統數據,具有了4V特性[2]——(Value)價值總量高、(Velocity)變化速度快、(Variety)多模態、(Volume)海量,4V特性導致傳統分類算法和處理平臺很難處理大數據,近年來并行化技術和特征選擇型分類算法的發展為大數據處理提供了一個新視角。DCNN[3]是分類算法中的一類重要算法,具有強大的函數逼近能力、特征選擇能力以及泛化能力,并被廣泛應用于臨床醫學[4]、地理信息[5]、自動駕駛[6]、語義分割[7]、金融投資[8]、目標檢測[9]等領域。因此,基于大數據的并行DCNN研究已經成為目前分類算法的研究熱點。
近年來,雖然DCNN在大數據分類領域取得了許多重要成果,但是如何降低網絡訓練的計算代價仍然是一個重要問題。為了獲得性能更加優秀的網絡,研究人員不斷加深網絡的深度和參數數量,如AlexNet[10]、VGG[11]、ResNet[12]和Inception系列[13]等。其中,AlexNet有6 100萬個參數,VGG-16參數為1.38億個,它們分類一個圖像分別需要7.2億和150億次浮點運算,海量運算帶來的時間成本和硬件資源問題十分嚴峻,而這些問題產生的原因在于DCNN中含有冗余參數。參數剪枝是減少冗余參數的有效方法,它不僅易于平衡壓縮速率和性能損失,還具有防止過擬合的潛力,因此受到了廣泛關注。Frederick等人[14]提出了基于腦損傷優化的參數剪枝算法,通過計算參數代價函數的二階導數,去除重要性較小的參數,然而該方法計算成本很高,因此在如今的大型網絡上實施該算法是不可行的。因此,Lin等人[15]利用神經元重要性分數來修剪網絡,從而減少反向傳播誤差對剪枝性能的影響,然而該算法剪枝效率較低。綜上所述,如何設計合理且有效的冗余參數剪枝策略仍是DCNN界的熱點問題。
雖然減少冗余參數能在一定程度上降低DCNN訓練的計算代價,但參數的尋優效率對DCNN訓練的影響也不容忽視,由于在大數據環境下卷積神經網絡收斂速度較慢且易陷入局部最優,因此有學者提出使用群智能算法優化DCNN,提高DCNN尋優效率。Anaraki等人[16]提出了基于遺傳算法的卷積神經網絡訓練方法,避免了BP(back propagation algorithm)算法易陷入局部最優的缺點,但該算法收斂較慢,不適用于大數據環境。因此,Banharnsakun等人[17]利用人工蜂群和有限記憶優化算法共同訓練DCNN,該方法在一定程度上提高了DCNN的尋優效率,此外,Gilbert等人[18]通過將DCNN的內部參數空間劃分為多個分區,并分別對這些分區進行優化,雖然該策略能顯著提高DCNN分類性能,但魯棒性不強,如果分區大小選擇不當,甚至會導致分類性能降低。因此,如何提高尋優效率是當前DCNN訓練的重要問題之一。
在大數據環境下影響并行DCNN算法訓練效率的因素不只是尋優算法,并行模型的性能也至關重要。近年來研究人員提出了許多大數據處理方法可以有效提高算法效率,其中Google開發的MapReduce并行模型[19]由于其操作簡單、自動容錯、負載均衡、擴展性強等優點深受廣大學者和企業的青睞。目前許多基于Map-Reduce計算模型的神經網絡算法已成功應用到大數據的分析與處理領域中。張任其等人[20]提出了CNN-PSMR(parallel strategy of convolutional neural network based MapReduce)算法,該算法采用數據并行的策略,并結合標準與累積誤差逆傳播算法,提高了網絡訓練效率。此外,Basit等人[21]提出了DCNN的并行算法MR-DLHR(MapReduce-based deep learning with handwritten digit Recognition case study),提高了DCNN的分類精度,但訓練效率仍有不足。因此,Zeng等人[22]提出了SRP-CNN(super-resolution parallel convolutional neural network)算法,該算法引入了反濾波層,并通過多對多連接和并行多態本地網絡,進一步提高了DCNN的并行訓練效率,但該算法易陷入局部最優解。為了提高DCNN的全局尋優能力,Banharnsakun等人[23]提出了DCNN-PABC(deep convolutional neural network based parallel artificial bee colony algorithm)算法,結合人工蜂群算法和并行化思想尋找最優參數,每個節點使用不同的隨機種子來生成初始解,有助于提高搜索空間中解的多樣性,加強了算法的全局尋優能力,然而該算法的并行策略沒有考慮集群的負載均衡,資源利用率較低,導致并行效率低下。因此如何實現高效率并行訓練DCNN仍是一個亟待解決的問題。
針對以上三個問題,本文的主要工作為:(1)設計了一種基于泰勒損失的特征圖剪枝策略“FMPTL”,有效減少了冗余參數,降低了DCNN在大數據環境下的計算代價。(2)在獲取局部訓練結果階段,提出了基于信息共享搜索策略“ISS”的螢火蟲優化算法“IFAS”初始化DCNN參數,實現初始參數取值的優化,提高網絡的收斂速度和全局尋優能力。(3)在獲取全局訓練結果階段提出了基于并行計算熵的動態負載均衡策略“DLBPCE”,實現系統資源利用的最大化,從而保證并行系統的并行化性能。
DCNN的基本框架如圖1所示,它使用多層卷積、池化提取圖像的高級語義特征,訓練過程分為正向傳播和反向傳播兩個階段。

圖1 DCNN結構示意圖Fig.1 DCNN structure diagram
(1)正向傳播階段。對每層輸入的特征圖計算過程如下:

其中,*代表卷積操作,yl表示第l個卷積層的輸出,x(l-1)為第l層的輸入向量,bl為第l層的偏置項,I為輸入特征圖的集合,wr l為l層第r個卷積核的權值,f(x)代表激活函數。
(2)反向傳播階段。比較網絡期望的輸出和預測結果來調整權值,其目標函數為:

其中,L(p r)為損失函數,p r為反向傳播的輸入,λ(w)為正則化函數,w代表網絡中的權值。
螢火蟲優化算法(glowworm swarm optimization,GSO)[24-26]是一種模擬螢火蟲信息交流過程的優化算法,其主要步驟如下:
(1)初始化熒光素亮度l0,螢火蟲感知半徑r0,熒光素揮發因子ρ,熒光素更新率γ,并更新熒光素亮度l i(t)。
(2)計算移動概率,選擇感知范圍內熒光素亮度比自己高的螢火蟲作為鄰域集,并根據公式(3)計算i移動向j的概率:

(3)迭代更新螢火蟲位置:

其中,通過螢火蟲個體不斷移動向感知半徑內的較優個體,最終找到問題的最優解。
定義1并行計算熵(parallel computing entropy)[27]。若一個并行系統有n個節點,第k個節點的負載為l k,其相對負載率為,則此并行系統的并行計算熵為:

MR-FPDCNN算法主要包括三個階段:模型壓縮、局部訓練結果的獲取和全局訓練結果的獲取。(1)模型壓縮階段。提出“FMPTL”策略,使用泰勒公式計算特征圖的泰勒損失,實現對冗余參數的剪枝,預訓練網絡,獲得壓縮后的模型。(2)獲取局部訓練結果階段。首先結合MapReduce并行模型,使用Split函數將整個數據集分成大小相同的文件塊,存儲在每個節點上;接著使用Map函數并行訓練每個節點上的網絡,提出基于信息共享搜索策略“ISS”的螢火蟲優化算法“IFAS”進行參數初始化,提高網絡收斂速度和在任務節點上的全局尋優能力,獲得局部訓練結果。(3)在獲取全局訓練結果階段。提出“DLBPCE”策略,提高集群效率,接著使用Reduce函數求出各個節點上DCNN的最終權值,獲得全局訓練結果。
目前DCNN模型趨向于深度化的特點使其參數數量呈幾何倍數增長,這導致在大數據環境下DCNN對計算機硬件資源的需求急劇增加,不利于其在硬件資源較低的設備上運行。針對這一問題,提出“FMPTL”策略壓縮DCNN模型,避免冗余參數過多,導致計算開銷過大的問題。“FMPTL”策略如下:
首先,根據圖1所示DCNN基本框架進行預訓練,公式(2)中的損失函數L使用softmax交叉熵損失,表示N個樣本的訓練損失:

其中,s n表示第n個樣本的softmax函數的輸出,t n∈{1 ,2,…,C}表示分配給第n個樣本的類標簽。
其次,在交叉熵損失的基礎上,將第n個樣本的特征圖x n∈RHW×1損失L使用泰勒公式:

二階展開,提出線性損失函數“LLF”(linear loss function),以計算去除特征圖后分類損失的變化程度。
定義2線性損失函數LLF。若x n表示第n個樣本的特征圖,δ=-x n,L(x n)表示交叉熵損失,梯度向量,則其線性損失函數“LLF”如下所示:

其中,Hessian矩陣在迭代過程中難以計算,故將其近似表示為H n≈?n?Tn。
證明設L為樣本的訓練損失,x表示特征圖,H為Hessian矩陣,p m表示x對m類樣本的softmax后驗概率。則:

證畢。
接著,由公式(9)可知,當特征圖x n的值為零時,δ+x n=0,因此,通過消除零特征圖,可以利用公式(9)直接得到基于特征圖的泰勒損失公式:

在模型壓縮之后,使用MapReduce并行訓練DCNN,其中,局部訓練結果的獲取包括Split階段和Map階段,在Split階段,使用Hadoop默認的文件塊策略,劃分原始數據集成為大小相同的Block;在Map階段,每個任務節點都存儲一個完整的DCNN網絡,并調用Map()函數,并行計算DCNN的權值改變量,更新權值,獲得局部訓練結果。由于DCNN使用反向傳播策略更新權值,因此在大數據環境下參數尋優能力不佳,針對這一問題,提出基于信息共享搜索策略“ISS”的“IFAS”算法初始化權值,加快網絡收斂速度和在節點內部尋找全局最優解的能力。其具體步驟如下:
首先,在FA算法的螢火蟲群的搜索策略中,提出信息共享搜索策略“ISS”,在公式(4)中引入個體適應度和全體適應度的比值,使螢火蟲根據公式(11)迭代更新位置時,能夠跳出局部最優,提高算法的全局搜索能力,避免陷入局部最優解。信息共享搜索策略“ISS”定義如下:
定義3信息共享策略ISS。若x i(t)為第t次迭代時螢火蟲i的位置,s為步長,xmax(t)為螢火蟲i感知范圍內熒光素值最高的個體,pi為螢火蟲i從最優個體學習到的目標信息,則搜索策略“ISS”如下所示:

其中,rand()為服從正態分布的隨機實數,f(x i(t))-f(xmax(t))為螢火蟲i與全局最優個體的適應度之差,為全部螢火蟲與最優個體的適應度差值總和。
證明因為f(x i(t))-f(xmax(t))為螢火蟲i與全局最優個體的適應度之差,為全部螢火蟲與最優個體的適應度偏離總和,若螢火蟲i與最優個體適應度差值越大,其他螢火蟲個體與最優個體適應度差值總和越小時,則螢火蟲i陷入局部最優解,導致pi增大,從而加強對螢火蟲i搜索方向的影響,使螢火蟲i跳出局部最優,提高其全局搜索能力。證畢。
其次,使用“IFAS”算法初始化參數,并調用Map()函數接收<key=類標號,value=樣本值>鍵值對。
最后,經過正向傳播和反向傳播計算出每個節點中深度卷積神經網絡權值的局部改變量,并將其以<key=w,value=Δw>鍵值對的形式存入分布式文件系統(Hadoop distributed file system,HDFS)。
各個節點經過訓練得到DCNN的局部權值,MapReduce將每個Map節點輸出的鍵值對<key=w,value=Δw>傳送給reduce()函數完成最終合并任務得到最終網絡權值,其中w為權值,Δw表示權值改變量。由于大數據環境下任務量過大,并行系統難以快速地將負載平均分配給每個節點,導致集群響應時間較長,吞吐率較低,針對這一問題,提出“DLBPCE”策略,提高集群資源利用率。“DLBPCE”策略的描述如下:
(1)統計每個任務節點的計算量,將所有任務節點分成輕載、最優、超載三種狀態。
(2)對于當前集群,提出動態負載閾值公式“DLTF”(dynamic load threshold function),以控制并行系統到負載均值的距離,從而使集群達到負載均衡。
定義4動態負載閾值公式DLTF。若任務節點的動態負載閾值c∈[csub,ctop],csub和ctop分別為節點動態負載閾值的下限和上限,為集群中所有任務節點負載的平均值,Lmax(t)和Lmin(t)分別為t時刻任務節點中最大和最小的負載量,則動態負載閾值公式“DLTF”為:


其中,η表示動態負載閾值到負載均值的距離。
證明因為和為節點動態負載閾值的上限與下限為動態負載閾值到負載均值的距離,所以,隨著任務節點的最大和最小負載量差值減小,動態負載閾值的取值范圍也減小,從而使節點負載更加接近負載均值,當集群的并行計算熵大于或等于閾值H b時,并行系統達到負載均衡。證畢。
(3)根據動態負載閾值將任務節點分為三組:

其中,當任務節點負載L(t)∈[Lmin(t),csub]時,該節點處于輕載狀態;當任務節點負載L(t)∈[csub,ctop]時,該節點處于最優狀態;當任務節點負載L(t)∈[ctop,Lmax(t)]時,該節點處于超載狀態。將輕載節點按負載量從小到大排序,并將其放入隊列Qlight中;將超載節點按負載量從大到小排序,并放入隊列Qover中。
(4)從隊列Qover中取出隊首節點,將其未處理任務發送給管理節點,管理節點將該任務重新分配給Qlight中的隊首節點,若Qover或Qlight的隊首節點達到動態負載閾值c,將其出隊;若Qlight的隊首節點接受新任務后超載,則拒絕該任務,將任務返回給管理節點,并出隊Qlight的隊首節點,重復該過程,直至其中一個隊列為空。
(5)根據公式(5)計算集群的并行計算熵,與預設閾值Hb進行比較,當計算得到的并行計算熵大于等于閾值Hb時,并行系統達到負載均衡,算法結束,調用Reduce()函數合并DCNN的局部權值,得到全局訓練結果;反之,并行系統負載不均衡,迭代進行“DLBPCE”策略。
MR-FPDCNN算法的具體實現步驟如下所示:
步驟1輸入原始數據,并通將其劃分成大小相同的文件塊Block。
步驟2基于原始DCNN模型,調用“FMPTL”策略計算每個特征圖的分類損失,并對其進行剪枝,獲得壓縮后的DCNN模型,將其存入每個任務節點。
步驟3根據“IFAS”算法初始化DCNN權值,并調用Map()函數,在每個節點上經過DCNN的正向和反向傳播,生成局部訓練結果,并將其存入HDFS。
步驟4根據“DLBPCE”策略控制并行系統的任務節點負載,并調用Reduce()函數合并權值,獲得全局訓練結果。
MR-FPDCNN算法的時間復雜度主要由壓縮網絡、局部訓練結果的獲取、全局訓練結果的獲取這幾個步驟構成。網絡壓縮階段時間花銷為特征圖排序與特征圖剪枝時間之和,假設預訓練樣本數為m,特征圖剪枝數量為P;在初始化權值階段,假設Map節點數為a,“IFAS”算法的每一次迭代都要做一次矩陣向量乘法和一些向量內積的計算;在網絡并行化訓練階段,其時間復雜度主要取決于卷積神經網絡內部的運算,假設網絡包含D個卷積層,Cl表示第l個卷積層的卷積核個數,M為每個卷積核輸出特征圖的邊長,K表示每個卷積核的邊長;在全局訓練結果的獲取階段主要是平衡節點間的負載和權值合并,假設Reduce節點數為r,權值總數為w,“DLBPCE”策略的迭代次數為e,因此MRFPDCNN算法時間復雜度為:TMR-FPDCNN=O(mlgm+
為了驗證MR-FPDCNN算法訓練DCNN的性能,本文設計了相關實驗。實驗硬件包含1個管理節點,7個任務節點,所有節點的CPU都為AMD Ryzen 9,內存為16 GB,擁有8個處理單元,GPU為NVIDIA RTX2080Ti 8 GB,通過1 Gb/s以太網相連。在軟件方面,每個節點安裝的操作系統為Ubuntu 20.04,MapReduce架構為Apache Hadoop 3.2.1,軟件編程環境為java JDK 1.8.0。節點具體配置情況如表1所示。

表1 各節點的基本配置Table 1 Basic node configuration
本文使用的實驗數據為三個真實數據集,它們源于Google Data、Imagenet官網和Mnist,分別為SVHN、ISLVRC2012、Emnist_Digits。SVHN數據集是現實世界拍攝的彩色數字圖像,像素為32×32,訓練集中有73 200張圖像,測試集中有26 000張圖像,將其像素標準化至[0,1]的范圍內;從ISLVRC2012數據集隨機選取500個類別,其中訓練圖像612 327張,測試圖像500 000張,將數據集中的圖片像素標準化為224×224;Emnist_Digits數據集是手寫字體的黑白圖像,32×32像素,訓練集240 000張圖片,測試集40 000張圖片。所有數據集的具體信息如表2所示。

表2 實驗數據集Table 2 Experimental data set
本文使用加速比(Speedup)作為指標來評價算法性能。算法的加速比是指通過并行化得到的性能提升,加速比越大,算法的并行化程度越好。其定義為:

其中,T s表示算法串行執行的時間,T p表示算法并行執行的時間。
為驗證MR-FPDCNN算法的并行化性能,本文基于SVHN、Emnist_Digits、ISLVRC2012三個數據集進行實驗,根據實驗結果的加速比,分別與CNN-PSMR[20]、MR-DLHR[21]、SRP-CNN[22]和DCNN-PABC[23]的并行化性能進行比較分析。實驗結果如圖2所示。

圖2 各算法在三個數據集上的加速比Fig.2 Speedup of each algorithm on three datasets
從圖2可以看出,MR-FPDCNN算法在處理大數據集時并行性能較好。在小規模數據集中,如圖2(a)所示,當節點數為2個時,MR-FPDCNN算法加速比約為1.6,分別比MR-DLHR和DCNN-PABC算法低0.2和0.1,比CNN-PSMR、SRP-CNN算法高0.4和0.2,但隨著計算節點數的增加到6個,MR-FPDCNN算法的加速比超越了MR-DLHR和DCNN-PABC算法,分別比MR-DLHR和CNN-PSMR算法高2.1、1.6、3.3和4.0,這是由于節點數較少時,MR-FPDCNN算法在集群運行、任務調度、節點存儲等環節產生了時間開銷,而該時間開銷在節點較少時,占算法總時間開銷的比重較大,因此在MR-FPDCNN算法在這種情況下的加速比較低,而隨著節點數的增加,MR-FPDCNN算法的“DLBPCE”策略有效地控制了節點之間的負載均衡,有效利用了集群的資源,因此MR-FPDCNN算法的加速比超越了MR-DLHR和DCNN-PABC算法;在較大的數據集中,CNN-PSMR算法、DCNN-PABC算法、SRP-CNN算法和MR-DLHR算法如圖2(b)、(c)所示,4個對比算法的加速比最終趨于穩定,分別為2.7、3.9、6.1和6.8,而MR-FPDCNN算法的加速比隨著節點數增加呈線性增長,當節點數為8個時加速比達到9.3,遠高于MR-DLHR、DCNN-PABC、SRP-CNN和CNN-PSMR算法,這是由于MR-FPDCNN算法使用“DLBPCE”負載均衡策略,均勻地將分類結果分配到各個計算節點中,算法并行化計算分類結果和更新權值的優點被逐漸放大,使其算法在計算節點增加的同時,加速比呈線性增長,算法的并行化性能得到很大的提升。這也表明MR-FPDCNN算法適用于處理較大規模的數據集,并且隨著計算節點的增長,并行化的效果更佳。
為彌補傳統DCNN算法在大數據環境下的難以訓練的缺陷,本文提出了一種新的DCNN訓練方法MR-FPDCNN。首先,隨機選取部分數據進行預訓練,并設計了基于泰勒損失的特征圖剪枝策略“FMPTL”,通過比較特征圖的泰勒損失實現冗余參數剪枝,從而降低算法計算代價;其次,使用MapReduce對DCNN進行并行訓練,并在Map階段的參數初始化過程中提出了基于信息共享策略“ISS”的螢火蟲優化算法“IFAS”,加速了網絡訓練并提高了DCNN的全局尋優能力;最后,在Reduce階段提出了基于并行計算熵的負載均衡策略“DLBPCE”,解決了集群資源利用率低的問題,提高了集群的并行化性能。為了驗證MR-FPDCNN算法的并行化性能,本文在SVHN、Emnist_Digits、ISLVRC2012三個數據集上對MR-FPDCNN、MR-DLHR、DCNN-PABC、SRP-CNN和CNN-PSMR五種算法進行對比分析,實驗結果表明,在大數據環境下MR-FPDCNN算法的加速比明顯高于其他幾種算法。