張志佳, 吳天舒,, 劉云鵬, 方景哲, 李雅紅
(1. 沈陽工業大學 軟件學院, 沈陽 110870; 2. 中國科學院 沈陽自動化研究所, 沈陽 110016)
手寫體數字識別已經應用在金融稅務、郵寄分類和智能終端產品等諸多領域,目前單模型識別率已達到99.1%左右.由于各應用領域數據量急劇增大及人工智能的發展,對手寫體數字的識別準確率和識別速度提出了更高的要求.作為模式識別的一個重要方法,面向手寫體數字識別的神經網絡得到了廣泛的應用,其中常見的神經網絡應用方法是20世紀提出的Lenet-5卷積神經網絡結構[1],但其識別準確率不夠高,難以滿足應用準確度的要求.
以Lenet-5結構為主要代表的卷積神經網絡由于當時計算機性能受限,無法對算法參數和結構給出直觀解釋,一直以來沒有受到學術和工業界的廣泛關注.隨著機器學習與深度學習的發展,在2012年Alex及其團隊提出Alexnet,贏得2012年Imagenet冠軍之后,卷積神經網絡引起了廣大研究人員的關注[2].近兩年由于計算機硬件性能的不斷提升,卷積神經網絡有了突飛猛進的發展,涌現出大量優秀的研究成果.
目前許多卷積神經網絡結構在大型數據庫上的表現十分優異,但這些網絡因為結構較為復雜(如若用在手寫體數字識別問題上會出現過擬合的現象)導致識別準確率較低.同時若想訓練這些復雜的網絡結構需要性能極高的GPU作為硬件資源,這并不符合手寫體數字識別這一問題的實際應用背景.
本文針對提高手寫體數字識別準確率與識別速度這一問題,設計并構建出一種連續非對稱卷積神經網絡結構,并通過CUDA并行計算和Cudnn加速庫對手寫體數字識別進行加速.通過試驗對比證明,本文方法的識別準確率和識別速度均有明顯提升.
本文設計一種連續非對稱卷積結構對輸入圖像進行特征提取,利用Dropout正則化在防止過擬合的同時提升網絡的擬合能力,并采用極限學習機為網絡增加稀疏性.
卷積神經網絡能夠有效識別圖像,主要是因為卷積層很適合針對圖像進行特征提取.卷積層擁有局部感知,與人類的視覺神經感知結構更為相似.卷積層能否提取得到有效特征直接影響到卷積神經網絡對圖像的識別效果.所以在卷積層一般使用多神經元結構,而多神經結構會導致卷積層網絡權值數量的增大,影響輸入圖像的識別速度.
為了在提取有效特征的同時降低網絡權值的數量,本文提出了連續非對稱卷積結構提取輸入圖像的特征,在保證網絡結構提取特征能力的同時可以降低網絡參數個數.連續非對稱卷積結構以1×n和n×1為模塊,這一組連續非對稱卷積結構僅有2×n個參數,而一個n×n的卷積核需要n2個參數.
通過輸入不同尺寸的圖像發現,當特征圖分辨率過高時不適合使用連續非對稱卷積結構,信息丟失嚴重.當特征圖分辨率過低時連續非對稱卷積結構加速效果不再明顯.在設計網絡結構過程中得出連續非對稱卷積結構適用范圍的經驗值:適合分辨率為10×10~30×30之間的特征圖.
在手寫體數字識別過程中,數字圖像的分辨率較低,特征圖尺寸在10×10~30×30之間,所以本文采用連續非對稱卷積結構應用于手寫體數字識別問題.
以數字5的某一樣本作為輸入圖像,經由尺寸為1×3的32個卷積核神經元組成的卷積后提取得到的特征圖如圖1a所示,再經由尺寸為3×1的32個神經元卷積核的卷積后得到的特征圖如圖1b所示.圖2為對輸入圖像直接使用由32個神經元組成的3×3卷積提取得到的特征圖.

圖1 1×3卷積與3×1卷積特征圖Fig.1 Feature diagrams of 1×3 and 3×1 convolution

圖2 3×3卷積特征圖Fig.2 Feature diagrams of 3×3 convolution
通過對比特征圖1、2可知,使用連續非對稱卷積神經網絡結構提取得到的特征與直接使用傳統對稱卷積結構提取得到的特征圖幾乎一致.當特征圖分辨率較高時,先使用連續非對稱卷積結構提取圖像特征,可以既減少權值個數,又提升網絡速度,得到有效的特征圖;當特征圖分辨率降低后,特征圖尺寸減小,通過連續非對稱卷積結構減少權值個數達到加速的效果不再明顯,可以直接使用傳統對稱卷積結構.
為了增大特征提取部分的擬合能力,本網絡結構引入Dropout正則化,在防止過擬合的同時增加網絡的擬合能力.Dropout正則化每次都按照設置的概率關掉該層一部分的感知器,相當于產生一個新的模型,在若干次迭代后做融合,這樣便既滿足了網絡的擬合要求,又防止過擬合現象的發生.本網絡中Dropout關閉概率通過設計網絡結構過程中的經驗值得出.
本網絡結構在特征提取部分采用兩組連續非對稱卷積結構與一組傳統卷積結構相結合的方式.第1組連續非對稱卷積結構每層為32個神經元;第2組連續非對稱卷積結構每層為64個神經元,Dropout正則化隨機關閉概率為0.2;第3組為2層連續對稱卷積結構,2層連續對稱卷積結構每層采用128個神經元,Dropout正則化隨機關閉概率為0.4.使用連續小尺寸對稱卷積結構能提高網絡的非線性表達能力,更好地提取局部特征[3].所有的池化層均采用最大池化的方式,網絡結構參數如表1所示.

表1 提取特征部分各層參數Tab.1 Parameters for each layer of extracted feature parts
極限學習機(ELM)是由Huang等提出的一種分類器[4],對于單隱層神經網絡,極限學習機可以隨機初始化權重和偏置,并得到相應的隱節點輸出,極限學習機示意圖如圖3所示.
假設對任意樣本(xj,tj)進行分類,其中xj=[xj1,xj2,…,xjn]T,tj=[tj1,tj2,…,tjn]T,若要輸出的誤差最小,則需
(1)
即
(2)

圖3 極限學習機網絡結構Fig.3 Network structure of extreme learning machine
式中:xj為輸入矩陣;oj為輸出矩陣;tj為期望矩陣;βi為第i個隱層單元的輸出權重;g(x)為激活函數;wi為第i個隱層單元的輸入權重;bi為偏置常數矩陣.
式(2)可用矩陣表示為
hβ=T
(3)
式中:h為隱藏節點的輸出;β為輸出權重;T為期望的輸出.
為了使網絡誤差最小,應滿足
(4)
式(4)等價于最小損失函數
(5)
在ELM算法中,一旦輸入權重wi和隱層的偏置bi被隨機確定,隱層的輸出矩陣h就被唯一確定,訓練單隱層神經網絡便可以轉化為求解一個線性系統.
在提取特征圖后使用ELM可以從有限的輸入數據中學習到相對稀疏的特征,本網絡結構利用ELM對經過特征提取得到的特征圖進行分類.在經過ELM后連接兩層全連接層和Relu激活函數,增大網絡的擬合能力,再利用Softmax進行多分類.
由于采用連續非對稱卷積神經網絡結構,使得網絡結構深度增加,在訓練過程中容易產生梯度消失和梯度爆炸的現象,所以引入了BatchNormalization正則化和MSRA初始化,防止梯度消失和梯度爆炸現象的發生[5].
BatchNormalization正則化通過修改網絡每層的輸出結果,使輸出滿足高斯分布,防止梯度消失和梯度爆炸的出現.
首先對輸出結果根據每一維度的均值和方差進行歸一化處理,即
(6)

對經過修正的輸出特征向量做線性變換,使輸出特征向量在滿足高斯分布的同時保留原有的輸出信息,即
(7)
式中:yk為經過線性變換的輸出;rk和αk由BP反向傳播在訓練過程中確定.
本網絡在各卷積層和全連接層后加入BatchNormalization正則化,保證各卷積層和全連接層可以通過反向傳播學習得到有效的權重.
本網絡通過對比三種初始化方法:高斯分布的隨機數初始化、哈維爾初始化和MSRA初始化后,選擇MSRA初始化解決由連續非對稱卷積導致網絡出現梯度消失的現象.
1) 隨機數初始化.由于采用連續非對稱卷積結構增大網絡結構深度,如果以高斯分布的隨機數進行初始化將會出現梯度彌散或者梯度爆炸的現象.例如采用均值為0,方差為1的高斯分布做初始化,隨著前向傳播過程中隱層數目的增多,方差不斷減小,最后趨近于0,將導致所有神經元輸出完全相等,網絡結構整體失去活力.
2) 哈維爾初始化.若采用哈維爾初始化依舊面臨梯度彌散的問題,哈維爾初始化針對深層網絡存在梯度消失和梯度爆炸的現象,將權重的初始化與該權重所在層的神經元個數關聯起來,神經元個數應與權重始化的值成反比.但當深層網絡使用Relu激活函數時,若Relu激活函數的輸入小于0,將會發生截斷,所以權重的方差依舊在不斷衰減.
3)MSRA初始化.MSRA初始化是在哈維爾初始化的基礎上,認為該層原神經元個數只有真實數目的一半,因此防止了Relu激活函數對小于0的輸入產生截斷.
CUDA是Nvidia基于GPU推出的并行計算架構,由多個線程組成一個線程塊,再由多個線程塊組成一個柵格[6].使用CUDA訓練網絡結構過程如圖4所示.

圖4 CUDA并行計算示意圖Fig.4 Schematic diagram of CUDA parallel computing
Cudnn是Nvidia針對深度神經網絡設計的GPU加速庫,被廣泛應用于各種深度學習開源框架中.CUDA與Cudnn對卷積神經網絡的加速主要體現在對卷積運算的加速.卷積神經網絡主要應用在圖像領域,而圖像本身數據量較大,對圖像進行卷積運算就需要花費大量的時間;而Cudnn能夠將這些復雜的矩陣運算轉化為子矩陣乘法運算,并且利用CUDA進行多線程運算,從而實現對卷積的并行加速[7].
假設當前卷積層為l,每次輸入的圖像為C個顏色通道,分辨率為W×H,并以M個圖像樣本批量隨機訓練,卷積層記為D∈RWHMC.設當前卷積層由K個神經元組成,卷積模板尺寸為S×Q,偏置為b,卷積層記為F∈RKCQS.卷積層輸出M∈iNKPQ可表示為
(8)
δ=av+S-s-1-w
(9)
φ=pu+Q-q-1-h
(10)
式中:u,v分別為垂直與豎直方向卷積的移動步長;h,w分別為卷積補0的長度和寬度;p,a分別為卷積輸出的長和寬.
由三重嵌套求和公式可知,卷積計算量極大,所以將卷積操作轉換成若干子矩陣相乘.將輸入D劃分為若干個子矩陣Dm,將卷積模板重新組裝成矩陣Fm,這樣三重嵌套求和運算便轉換為矩陣Fm和若干個子矩陣Dm相乘,達到了加速計算的目的[8].
通過調用Cudnn并行計算加速庫,使前向傳播用時明顯縮短,對比在GPU下前向傳播速度有明顯提升.
本文采用的硬件平臺是Intel(R)Core(R)CPUI5-4570,3.2GHz,4核處理器,NVIDIA(R)GTX(R) 1050TI.軟件配置為Ubuntu14.04版64位操作系統,利用了Caffe深度學習開源框架,CUDA并行計算庫,Cudnn深度神經網絡加速庫,OpenBLAS矩陣運算加速庫,Anaconda的Python計算環境發行版及opencv3.0計算機視覺庫.
采用MNIST手寫數字數據庫進行訓練和測試.MNIST為Google實驗室和紐約大學建立的手寫數字數據庫,包括了0~9這10個數字,是手寫體字符識別這一領域廣泛使用的標準庫.MNIST包含訓練集6萬張,測試集1萬張,每張圖像大小均為28×28,數據庫樣本圖像如圖5所示.

圖5 MNIST部分樣本圖像Fig.5 MNIST partial sample image
將本文提出的連續非對稱卷積網絡結構與Lenet-5網絡結構在MNIST數據集中進行識別準確率與識別速度的對比實驗,本文提出的網絡結構參數如表2所示,實驗結果如表3所示.
表3中前4項網絡類型是針對本文提出的網絡結構進行試驗,后2項是對Lenet-5網絡結構的試驗結果.通過對比可以發現,相比Lenet-5,本文提出的連續非對稱卷積與極限學習機結合的結構識別準確率和識別速度都有提升;相比連續對稱卷積結構,達到了相同的識別準確率并且提升了識別速度.相同的網絡結構在使用CUDA與Cudnn情況下,由于GPU運算精度更高,識別準確率也會有部分提升.

表2 網絡結構參數Tab.2 Parameters for network structure

表3 實驗對比結果Tab.3 Experimental comparison results
將本文提出的連續非對稱卷積與極限學習機結合的結構與其它在MNIST數據庫上進行測試的手寫體數字識別算法進行對比,對比算法包括:基于統計和結構特征的手寫體數字識別[9]、基于自適應深度置信網絡的圖像分類[10]及基于原型生成技術的手寫體數字識別[11],各算法識別準確率如表4所示.

表4 MNIST數據庫中算法比對Tab.4 Algorithms tested on MNIST database
通過對比各算法在MNIST上測試的準確率可知,本文提出的連續非對稱卷積與極限學習機結合的結構在準確率上有明顯提升.
雖然本方法有較高的識別準確率,但是還有部分歧義圖像仍未能正確識別,例如數字4和數字6之間的歧義如圖6所示.

圖6 測試集中存在歧義的圖像Fig.6 Ambiguous images in testing set
選取圖6中圖像進行測試,表5為網絡結構判斷輸入圖像中的數字分別為0~9的概率.

表5 圖像中的數字分別為0~9的概率Tab.5 Probability of numbers from 0 to 9 in image
由于網絡判斷最大輸出概率為最終識別結果,所以本網絡判斷出了錯誤結果,將圖像中的數字識別為4.通過觀察表5中數據概率可知,輸出的9個數字中,數字0、4和6的概率都明顯高于其它數字,其中數字4和6的概率最為相近,這也符合肉眼觀察圖像的結果.若要正確識別歧義圖像,簡單有效的方法是使用模型融合,利用投票原則判斷歧義圖像.
本文提出了一種針對手寫體數字識別的連續非對稱卷積神經網絡結構,并結合極限學習機、Dropout正則化和MSRA初始化提升了識別準確率.通過在MNIST數據集的測試結果表明,本結構的識別準確率達到了99.62%.未來將利用深度可分離卷積,通過剪枝與量化的方式對本網絡結構進行進一步壓縮與加速,使壓縮后的網絡結構可在嵌入式設備上運行.