李書清
(海南軟件職業技術學院,海南 瓊海 571400)
自2006年Hinton及其合作者提出深度學習的概念之后[1-2],深層神經網絡逐步成為機器學習領域一個重要的新研究方向。深層神經網絡是一種多層非線性結構,具有強大的特征表達能力和對復雜函數的建模能力,其已經在許多重要領域,例如圖像處理、語音處理和自然語言處理等方面取得振奮人心的進展,獲得眾多學者的高度關注和認可[3-9]。典型的深層神經網絡就是多層感知器,它將非線性可分的原始數據通過一種方法映射到一個線性可分的高維空間中,使用線性分類器完成分類。但是由于多層感知器是一個全連接的網絡,當輸入較大時,權值會增多;而且會出現梯度發散的問題。在這種情況下,卷積神經網絡應運而生。卷積神經網絡(Convolutional Neural Networks, CNNs)是一種前饋神經網絡,每個神經元都只影響鄰層的一部分神經元,具有局部感受野。因此,該網絡具有極強的捕捉局部特征的能力。另一方面,權值共享和池化顯著地降低了網絡的計算復雜度,使得CNNs得到廣泛應用。CNNs是圖像分類和語音識別領域的杰出算法,也是目前大部分計算機視覺系統的核心技術。從facebook的圖像自動標簽到自動駕駛汽車,乃至AlphaGo都在使用。為了進一步理解CNNs的特點及應用,本文對典型的CNNs進行了理論和結構分析,并開展了相應的比較實驗,來驗證其識別效果。
卷積神經網絡作為神經網絡的一種,它具有神經網絡的一些特點。神經網絡是由多個感知器(神經元)構成的全連接的網絡。本質上來說,這樣的連接只是簡單的線性加權和而已,所以每個神經元加上同一個非線性函數(例如sigmoid,tanh等),使得網絡能擬合非線性。通常這個非線性函數被稱為激活函數。深層卷積網絡的結構如圖1所示。C1,C2代表卷積層;S1,S2代表下采樣層;最后兩層分別為全連接層和輸出層。深層卷積網絡是一種具有多層非線性結構的神經網絡模型,包括一個輸入層、多個卷積層和下采樣層、多個全連接和一個輸出層。其中,相鄰層神經元之間權值共享。

圖1 卷積神經網絡結構
卷積神經網絡結構主要有3種操作:卷積、下采樣、全連接。整個訓練過程分為前向和反向傳播[10]。在前向傳播中,假設輸入為N×N大小矩陣,卷積核ω,大小為m×m,卷積層的輸出大小為(N-m+1)×(N-m+1)。則卷積層的輸入為:

卷積層的輸出為:

在下采樣層中,假設下采樣區域為(k×s),則下采樣層大小為[(N-m+1)×(N-m+1)]/(k×s)。
在反向傳播中,對權值的計算公式如下:

其中:

假設n代表網絡的層數,L1是輸入層,L2到Ln-1是隱含層,輸出層是Ln。LNl代表第l層神經元的個數。神經元的激活函數σ(·)為sigmoid函數。ω(1)ij代表第(l-1)層的卷積核,b(l)i是第l層第i個神經單元的偏置。用o(l)i表示第l層第i個單元的輸出值,o(l)i表示第l層第i個神經元的輸入,O(C)i表示卷積層的輸入。如果輸入用x1,x2,…,xn表示,則卷積網絡的詳細計算過程為:

綜上所述,卷積神經網絡算法如下:

本文使用的實驗數據集為MNIST和CIFAR-10。MNIST[11]主要由Google實驗室的Corinna Cortes和紐約大學柯朗研究所的Yann LeCun所建,在深層神經網絡的性能評測中有廣泛應用。其中訓練數據集包含60 000個手寫數字,測試數據集包含10 000個手寫數字,每個手寫數字的維數為28×28=784。CIFAR-10[12]包含60 000個32×32的彩色圖像,共有10類。有50 000個訓練圖像和10 000個測試圖像。本文的實驗平臺是一臺聯想微機,處理器為Intel(R)Core(TM)i5-6500,內存為16G,操作系統為64位Windows,編程環境為Python。本次實驗對MNIST手寫數字和CIFAR-10進行訓練和測試,相關數據和結果如表1所示。

表1 對比實驗數據和結果
從表1可以看出,在兩個數據集上CNNs的識別錯誤率分別為0.82%和16.9%。通過測試結果可以看出相較于MNIST數據集,在CIFAR-10上識別率較低。這主要是因為相比MNIST數據集,一方面,CIFAR-10數據規模較大;另一方面,前者為灰度圖而后者為彩色圖像。更重要的是,對于CIFAR-10來說,相對于傳統圖像識別數據集,CIFAR-10對于提高數據的識別率來說,具有較好的研究方向。比如數據的平衡性問題,平衡的類別往往能獲得最佳的表現,而不平衡的類別往往使模型的效果下降。
本文對卷積神經網絡模型結構以數學推導的方式進行了分析,在MNIST和CIFAR-10兩個數據集上,使用CNNs進行對比實驗,并對實驗結果進行了分析。實驗結果表明,與傳統方法相比,CNNs無論在處理灰度圖和彩色圖都有較好的識別效果。