?

輕量非對齊卷積神經網絡模型探索

2019-09-09 03:38馬海濤趙宇海于長永
小型微型計算機系統 2019年9期
關鍵詞:錯誤率卷積概率

何 鑫,祁 欣,馬海濤,趙宇海,于長永

(東北大學 計算機科學與工程學院,沈陽 110819) E-mail:1216800155@qq.com

1 引 言

CNN(卷積神經網絡)模型[1]在計算機視覺領域中取得了不俗的成果,例如圖像分類[2]、目標檢測[3]、風格識別[4]、語義分割[5]等.就圖像分類來說,該技術在提取特征方面相較于傳統模型[6]需要手動提取視覺特征來說具有顯著的優勢.

CNN發展至今,出現了多種網絡結構,如圖1所示.這些結構可以被分為三大類:傳統單鏈卷積神經網絡[7-9]、多分支非對齊卷積神經網絡[10,13,14,16]和使用跳躍連接的卷積神經網絡[11,12,15].在CNN發展的早期階段,普遍使用的是傳統單鏈卷積神經網絡,其網絡模型深度普遍很淺且使用了大量的模型參數,這類CNN模型包括如圖1中橢圓框所表示的CNN模型.圖1中矩形框所表示的多分支非對齊卷積神經網絡在CNN模型結構發展過程起著重要的作用,其網絡模型存在有長有短的多個分支且不同分支的卷積操作是不對齊的.跳躍連接卷積神經網絡不同于以往線性增加網絡深度的網絡模型,如圖1中虛橢圓框所表示的模型,引入了跳躍連接,可以令前驅層與后繼層直接連接,解決了梯度消失問題,使得CNN可以達到很深的深度.對于圖1中的所有CNN模型,模型的深度與所使用的參數數量如表1所示.

圖1 CNN發展歷程Fig.1 Development history of CNN

表1 各CNN模型深度及參數
Table 1 Depth and parameters of each CNN model

模型名稱模型深度參數數量AlexNet860MVGG16138.36MGoogleNet226.8MResNet1101.7MDeeply-fused net503.9MFractalNet4022.9MDeseNet401.01MIGC-L32M263224.1M

對于這三種類別的CNN模型,通常使用CNN不同的層結構作為單元來描述,但除去池化層的池化操作外,其余層結構均是由神經元組成的,每個神經元是以權重W,偏置b,激活函數f(·)為單元,對神經元輸入進行操作的,輸入I輸出O關系為O=f(WI+b),記為最小計算單元.若以最小計算單元將其標準化表示,則傳統單鏈卷積神經網絡可以視為單最小計算單元的全連接網絡模型;多分支非對齊卷積神經網絡可以視為分組最小計算單元間的全連接并且多組對齊結構的全連接網絡模型;跳躍連接的卷積神經網絡模型可以視為最小計算單元的全連接不僅僅局限在一層中,層間也存在全連接的全連接網絡模型.

從卷積神經網絡的發展來看,網絡模型都是趨向于越來越深的模型架構.但是網絡的深度越深,所帶來的問題之一就是要訓練的參數就越多,這就導致模型的表現會被計算資源所限制,因此削減卷積神經網絡的參數冗余是必要的.目前已經有研究致力于減少卷積神經網絡模型的參數冗余,如SENet[17]、ShuffleNet[18]、MobileNet[19]等.本文針對這一問題,提出了一種基于非對齊網絡的CNN模型輕量化的方法.該模型是以最小計算單元作為節點,通過稀疏連接來確定數據流向,構成非對齊網絡的CNN模型.本文的主要工作如下:

1)提出一種基于非對齊網絡的CNN模型輕量化的方法,該模型中作為網絡節點的最小計算單元可以進行組合,且以某一棄連概率值來控制生成稀疏網絡的鄰接矩陣,使得模型輕量化.

2)應用本文提出的基于非對齊網絡的CNN模型輕量化的方法,統一地闡述最新的CNN模型,如ResNet、DenseNet、Deeply-fused Net和Interleaved Group Convolution,并通過實驗來證明所提出方法的通用性.

3)實現本文提出的基于非對齊網絡的CNN輕量化的方法以及DenseNet40模型,評估了模型的準確率,并對不同模型的參數數量進行了對比.實驗結果表明,相較于DenseNet40,本文所提的方法以測試誤差下降≤1%為代價,能夠削減掉≥50%模型參數.

2 相關工作

CNN模型通常以層為單位構建網絡,本文通過標準化將其表示為基于最小計算單元的模型結構,從而發現這種網絡結構是以層為基礎進行劃分對齊.本文提出的非對齊網絡結構摒棄以層為基礎的模型結構,采取以最小計算單元為單位,采取以最小計算單元為網絡模型的節點,每一個最小計算單元代表一個劃分基準,因此非對齊網絡中不存在以往CNN模型所表現出來的對齊形式.

在參數的冗余性大幅度降低的同時,還要保證模型性能沒有很大的損耗,這就需要對網絡中傳播的有限特征進行重復使用,即特征融合.特征融合技術在最新的網絡模型[12,14,15,16]中均有應用,分為兩類,分別是元素層面的add操作和通道層面的concatenate操作.add的本質是增多描述圖像的特征的信息量,而concatenate的本質則是融合多個描述圖像的特征融合或者是融合多個輸出層的信息,即增加描述圖像本身的特征.本文采用concatenate操作,將不同的最小計算單元節點學到的特征進行組合連接,充分利用了模型中隱含信息并且增加了節點輸入的多樣性,使模型獲得更多的表征能力.

3 基于非對齊網絡的輕量CNN模型

3.1 uACNN模型設計

非對齊卷積神經網絡(Unaligned Convolutional Neural Network,uACNN)的網絡結構由兩部分組成,分別是最小計算單元節點集合(記為V)以及連接兩節點的邊的集合(記為E),因此,uACNN可以表示為:

uACNN=(V,E)

對于最小計算單元節點集合V={Vi|i=1,…,n},構成節點的Vi可以作為單獨的卷積操作,也可以組合為多個卷積操作,保證了最小計算單元節點集合V所能表達卷積操作的多樣性.對于連接兩節點的邊集合E={Eij|1

E={Eij|i∈{1·1,…,l·m};

j∈{i+1·1,…i+1·m}∪α*drop{i+2·1,…,l·m}}

生成uACNN的一般算法分為兩個部分,分別是非對齊結構網絡中最小計算單元節點以給定棄連概率值的配置生成算法和根據配置生成uACNN拓撲結構的算法.

算法1所得到列表中元素代表的是對應列表索引的uACNN結構中最小計算單元節點在棄連概率值α下丟棄非同一集合中的節點數目,接下來要選擇uACNN結構中最小計算單元節點不連接的節點編號并且要滿足所要求的約束條件.

算法1.uACNN的配置生成算法

輸入:uACNN節點總數N,相同最長路徑的節點個數M,棄連概率值α

輸出:uACNN連接最長路徑大于自身的節點數目及以棄連概率值α丟棄連接節點數目的列表P

1:i=0;p=[]

2:while i <= N-M

3: if i ==0

4: p<-(N-M)*α;i++#p中同時存入未乘α的

5: else #值,下同.

6: for j in M

7: if i%M ==0

8: p<-(N-M*int(i/M))*α+1;i++

9: else

10: p<-(N-M*(int(i/M)+1))*α)+1;i++

11:return p

算法2.uACNN拓撲結構生成算法

輸入:uACNN節點總數N,相同最長路徑節點個數M以及配置文件P

輸出:uACNN節點不連接的節點編號列表Q

1:q=[]

2:for k in N-M+1

3: if k ==0

4: q <-random([M,N+1),p[k])

5: else

6: if k%M==0

7: t1 = random([k+1,N+1),p[k])

8: if(k+M)in t1

9: t1 <-remove(k+M);q <-t1

10: else

11: t2 = random([k+M-k%M+1,N+1),p[k])

12: if k+M in t2

13: t2 <-remove(k+M);q <-t2

14:return q

對于上述兩種算法所生成uACNN模型的拓撲結構,兩節點間路徑長度為1的最小計算單元的輸入輸出結果,執行通道層面的concatenate操作.

3.2 uACNN模型的優化

若uACNN中存在多個非對齊網絡結構模塊(unalignment block,記為uAblock),那么根據之前所述,每一個uAblock使用的棄連概率值不同,會直接影響uACNN模型的性能以及模型使用的參數數量.舉個例子,假設每一個uAblock中共144個節點,分為有36組,每組有4個節點,根據3.1所介紹的uACNN模型拓撲結構生成算法,當使用三個uAblock的棄連概率值均為0的時候,使用的參數數量分別為{uAblock1:106272、uAblock2:292896、uAblock3:479520},由此可見,在性能損耗可接受的性能情況下,每個uAblock所使用的棄連概率值會直接影響uACNN模型的參數數量.對于uAblock在Cifar10數據集上分別使用概率值順序為0.8,0.5,0.4和0.4,0.5,0.8的實驗結果如表2所示.

表2 非同序棄連概率值結果
Table 2 Non-sequential abandonment probability result

模型模型參數測試錯誤率uACNN8546408020.0613uACNN4584985300.0647

由表2可以看出,在性能損耗是可接受的情況下,越是靠后使用大的概率,uACNN模型使用的參數數量就是越少.

3.3 uACNN模型的通用性

在這一小節中,將使用uACNN模型分別表示如ResNet、Deeply-fused Net、Interleaved Group Convolution等卷積神經網絡模型.

ResNet的網絡模型結構是由殘差模塊構成的,每一個模塊都是由多個卷積層和一個恒等映射組成.這個恒等映射將該模塊的輸入和輸出連接到一起,然后執行add操作.因此,uACNN模型在生成最小計算單元節點集合的時候擁有與ResNet模型的殘差模塊中相同的過濾器個數(為了便于描述,假設殘差模塊的節點數為NR),即在算法1中使M等于NR,棄連概率值α設置為0,并約束節點組間的連接只存在于相鄰的兩組,即在算法2中所有隨機生成函數使用的區間設定為[x,x+2),其中x表示同路徑長度的節點數目,且執行add操作來匯總卷積結果,那么uACNN就轉變為ResNet.

Deeply-fused Net的網絡模型與uACNN模型很相似,DFN可以看做由兩個深度不同的BaseCNN組成,且兩個BaseCNN在中間某些層進行融合.兩個融合層之間的網絡稱為模塊,每個模塊包含來自兩個BaseCNN的兩個部分.若DFN的每個模塊內的兩個部分互換位置,可以看做兩個新的BaseCNN[20].基于此,當uACNN模型在集合內部的最小計算單元節點間連接是有序的,比如集合內部存在兩個節點,那么連接方式有{LL,RR,RL,LR},只需在算法1中設置棄連概率值α等于0.5;集合外部的連接是只有相鄰兩集合間存在,即在算法2中所有隨機生成函數使用的區間設定為[x,x+2),最后通過執行add運算來匯總卷積結果.若將上述僅有單過濾器的兩個不同深度BaseCNN組成的DFN模型推向更一般的DFN模型結構(如DFN(m,n),其中m和n分別代表不同深度的BaseCNN中包含的過濾器數目),可以發現其是uACNN模型結構的一種特例.

Interleaved Group Convolution包括幾組互補的結構化的組卷積,并且組卷積的卷積矩陣是稀疏的.故IGC模塊表現出一種稀疏的形式.當約定uACNN模型在生成最小計算單元節點間連接時滿足:只存在路徑長度為1的兩節點相連且為交叉連接,在算法1中得到的配置文件P,在傳遞給算法2前需要求其補集CNP,其中N為模型結構中節點總數.交替使用配置文件P和CNP來構建uACNN模型,即可表現IGC模塊.

4 實驗結果

4.1 實驗環境與數據

實驗環境:本文所有實驗的均在具有160GB RAM的Intel Xeon E5-2640服務器的單CPU核心(2.40GHz)實現,操作系統為CentOS 7.4.1708.兩塊NVIDIA K40 GPU用于CNN計算.

Mnist數據集[21]:該數據集是包含70000張手寫數字灰度圖片的計算機視覺數據集,其10種數字的灰度圖片是由28×28個像素點構成的.我們將數據集分為三部分:55000張圖片的訓練集、5000張圖片的驗證集和10000張圖片的訓練集.我們使用中心化的技術對該數據集進行預處理.

Cifar-10數據集[22]:該數據集是由包含10種類別的帶有32×32像素的彩色自然圖像組成,其訓練集和測試集分別包含50000和10000張圖像.對于數據增強,我們采用廣泛應用在該數據集上的標準數據增強方案(鏡像/移位),對于預處理階段,我們使用圖像的均值和方差對數據進行標準化.對于每一輪模型的訓練,我們使用所有的50000張訓練圖像,并在訓練結束時報告測試錯誤.

4.2 實驗結果與分析

4.2.1 棄連概率值對參數數量與測試錯誤率的影響

對為了觀察uACNN模型在使用不同的棄連概率值時,網絡參數使用數量以及模型測試錯誤率的變化,本實驗設置網絡模型中棄連概率值以0.1為步長,從0.1增長到0.9,實驗得到uACNN網絡模型對應不同棄連概率值所使用的參數數量以及測試錯誤率的實驗結果如圖2和表3所示.

表3 不同棄連概率的測試錯誤率(%)
Table 3 Test error rate for different abandonment probabilities

0.10.20.30.40.50.60.70.80.9Cifar106.095.856.066.066.056.516.476.647.12Mnist0.310.270.290.300.310.340.310.330.38

從圖2的實驗結果中,我們發現棄連概率值選取得越大,uACNN網絡模型所使用的參數數量就越少,總體呈下降態勢;從表3的實驗結果中我們發現,uACNN網絡模型的測試錯誤率于兩種數據集下均表現為在棄連概率值為0.2的時候達到最小值,在0.3,0.4,0.5和0.6,0.7時測試錯誤率保持相對平穩,在棄連概率值為0.9時達到最大錯誤率.

圖2 不同棄連概率的模型參數Fig.2 Model parameters for different abandonment probabilities

4.2.2 uACNN與最新的CNN模型的對比實驗

根據上一個實驗的結果,本實驗設計了uACNN網絡模型:選取0.4,0.5,0.8的組合以對應uACNN的三個block所使用的棄連概率值.本實驗中的所有的神經網絡模型均使用隨機梯度下降來進行訓練,設置batch size為64,max epoch為150且學習率的初始值為0.1,約定在100th epoch時降低為0.01,在125th epoch時降低為0.001.權重初始化方法采用[23]所介紹的方法,并且設置權重衰減值為0.0001,Nesterov動量為0.9.實驗結果如表4所示.

表4 uACNN與其他模型實驗結果
Table 4 uACNN and other model experiment results

模型名稱模型深度/最長路徑模型參數測試錯誤率(%)MnistCifar10ResNet11017279620.275.96IGC3824327640.265.70DenseNet4010197220.275.68uACNN(α1,2,3=0)4010522660.275.59uACNN(α1,2,3=0.4,0.5,0.8)404985300.306.47

根據表4的實驗結果,可以發現uACNN的三個block在棄連概率值均設置為0的時候,與DenseNet40模型的使用參數數量以及測試錯誤率相差無幾,這是因為當uACNN在棄連概率值設置為0的情況下,uACNN的非對齊結構將會轉變為對齊結構,而uACNN的連接會兩兩相連,即為DenseNet的密集連接;且uACNN的數據流入每一個卷積操作組前均會進行Batch Normalization操作,故會與DenseNet40多出可忽略不計的參數,由此可見,DenseNet模型是uACNN模型的一個特例.同時可以發現,在uACNN模型所使用的參數數量相比其他CNN模型消減掉超過50%而測試錯誤率僅下降不到1%.

圖3 Densenet40模型各層的統計值Fig.3 Statistics for each layer of the Densenet40 model

圖4 uACNN模型各單元的統計值Fig.4 Statistics for each unit of the Densenet40 model

我們統計了在Cifar10數據集下uACNN(α1,2,3=0.4,0.5,0.8)和Densenet40模型各單元(層)的平均值和標準差,如圖3和圖4所示,我們發現兩種模型在三個block中各單元(層)的參數取值走勢差別不大,我們認為uACNN模型在用較少的參數即可達到接近Densenet40模型的特征表達能力,同時說明了uACNN模型有著更緊湊的特征融合.這會使得uACNN模型在使用較少的參數而準確率無大幅度的影響.

5 結 論

CNN模型在圖像識別領域中表現出良好的性能.但在實際應用中,往往會受到計算資源的限制,而減少CNN模型中卷積單元的參數冗余是解決該問題的有效手段之一.本文提出了一種基于非對齊網絡的CNN模型的輕量化探索方法,能有效的減少CNN模型所使用的參數數量.實驗結果表明,相比于DenseNet40模型,以測試誤差下降≤1%為代價能夠削減掉≥50%模型參數.如何進一步準確確定非對齊網絡的連接,在減少CNN模型使用參數數量的同時減少性能的下降,是論文未來工作方向之一.

猜你喜歡
錯誤率卷積概率
概率統計中的決策問題
概率統計解答題易錯點透視
基于3D-Winograd的快速卷積算法設計及FPGA實現
一種并行不對稱空洞卷積模塊①
概率與統計(1)
概率與統計(2)
從濾波器理解卷積
小學生分數計算高錯誤率成因及對策
基于傅里葉域卷積表示的目標跟蹤算法
正視錯誤,尋求策略
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合