李書清
(海南軟件職業(yè)技術(shù)學(xué)院,海南 瓊海 571400)
自2006年Hinton及其合作者提出深度學(xué)習(xí)的概念之后[1-2],深層神經(jīng)網(wǎng)絡(luò)逐步成為機(jī)器學(xué)習(xí)領(lǐng)域一個重要的新研究方向。深層神經(jīng)網(wǎng)絡(luò)是一種多層非線性結(jié)構(gòu),具有強(qiáng)大的特征表達(dá)能力和對復(fù)雜函數(shù)的建模能力,其已經(jīng)在許多重要領(lǐng)域,例如圖像處理、語音處理和自然語言處理等方面取得振奮人心的進(jìn)展,獲得眾多學(xué)者的高度關(guān)注和認(rèn)可[3-9]。典型的深層神經(jīng)網(wǎng)絡(luò)就是多層感知器,它將非線性可分的原始數(shù)據(jù)通過一種方法映射到一個線性可分的高維空間中,使用線性分類器完成分類。但是由于多層感知器是一個全連接的網(wǎng)絡(luò),當(dāng)輸入較大時,權(quán)值會增多;而且會出現(xiàn)梯度發(fā)散的問題。在這種情況下,卷積神經(jīng)網(wǎng)絡(luò)應(yīng)運(yùn)而生。卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNNs)是一種前饋神經(jīng)網(wǎng)絡(luò),每個神經(jīng)元都只影響鄰層的一部分神經(jīng)元,具有局部感受野。因此,該網(wǎng)絡(luò)具有極強(qiáng)的捕捉局部特征的能力。另一方面,權(quán)值共享和池化顯著地降低了網(wǎng)絡(luò)的計(jì)算復(fù)雜度,使得CNNs得到廣泛應(yīng)用。CNNs是圖像分類和語音識別領(lǐng)域的杰出算法,也是目前大部分計(jì)算機(jī)視覺系統(tǒng)的核心技術(shù)。從facebook的圖像自動標(biāo)簽到自動駕駛汽車,乃至AlphaGo都在使用。為了進(jìn)一步理解CNNs的特點(diǎn)及應(yīng)用,本文對典型的CNNs進(jìn)行了理論和結(jié)構(gòu)分析,并開展了相應(yīng)的比較實(shí)驗(yàn),來驗(yàn)證其識別效果。
卷積神經(jīng)網(wǎng)絡(luò)作為神經(jīng)網(wǎng)絡(luò)的一種,它具有神經(jīng)網(wǎng)絡(luò)的一些特點(diǎn)。神經(jīng)網(wǎng)絡(luò)是由多個感知器(神經(jīng)元)構(gòu)成的全連接的網(wǎng)絡(luò)。本質(zhì)上來說,這樣的連接只是簡單的線性加權(quán)和而已,所以每個神經(jīng)元加上同一個非線性函數(shù)(例如sigmoid,tanh等),使得網(wǎng)絡(luò)能擬合非線性。通常這個非線性函數(shù)被稱為激活函數(shù)。深層卷積網(wǎng)絡(luò)的結(jié)構(gòu)如圖1所示。C1,C2代表卷積層;S1,S2代表下采樣層;最后兩層分別為全連接層和輸出層。深層卷積網(wǎng)絡(luò)是一種具有多層非線性結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)模型,包括一個輸入層、多個卷積層和下采樣層、多個全連接和一個輸出層。其中,相鄰層神經(jīng)元之間權(quán)值共享。
圖1 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)主要有3種操作:卷積、下采樣、全連接。整個訓(xùn)練過程分為前向和反向傳播[10]。在前向傳播中,假設(shè)輸入為N×N大小矩陣,卷積核ω,大小為m×m,卷積層的輸出大小為(N-m+1)×(N-m+1)。則卷積層的輸入為:
卷積層的輸出為:
在下采樣層中,假設(shè)下采樣區(qū)域?yàn)?k×s),則下采樣層大小為[(N-m+1)×(N-m+1)]/(k×s)。
在反向傳播中,對權(quán)值的計(jì)算公式如下:
其中:
假設(shè)n代表網(wǎng)絡(luò)的層數(shù),L1是輸入層,L2到Ln-1是隱含層,輸出層是Ln。LNl代表第l層神經(jīng)元的個數(shù)。神經(jīng)元的激活函數(shù)σ(·)為sigmoid函數(shù)。ω(1)ij代表第(l-1)層的卷積核,b(l)i是第l層第i個神經(jīng)單元的偏置。用o(l)i表示第l層第i個單元的輸出值,o(l)i表示第l層第i個神經(jīng)元的輸入,O(C)i表示卷積層的輸入。如果輸入用x1,x2,…,xn表示,則卷積網(wǎng)絡(luò)的詳細(xì)計(jì)算過程為:
綜上所述,卷積神經(jīng)網(wǎng)絡(luò)算法如下:
本文使用的實(shí)驗(yàn)數(shù)據(jù)集為MNIST和CIFAR-10。MNIST[11]主要由Google實(shí)驗(yàn)室的Corinna Cortes和紐約大學(xué)柯朗研究所的Yann LeCun所建,在深層神經(jīng)網(wǎng)絡(luò)的性能評測中有廣泛應(yīng)用。其中訓(xùn)練數(shù)據(jù)集包含60 000個手寫數(shù)字,測試數(shù)據(jù)集包含10 000個手寫數(shù)字,每個手寫數(shù)字的維數(shù)為28×28=784。CIFAR-10[12]包含60 000個32×32的彩色圖像,共有10類。有50 000個訓(xùn)練圖像和10 000個測試圖像。本文的實(shí)驗(yàn)平臺是一臺聯(lián)想微機(jī),處理器為Intel(R)Core(TM)i5-6500,內(nèi)存為16G,操作系統(tǒng)為64位Windows,編程環(huán)境為Python。本次實(shí)驗(yàn)對MNIST手寫數(shù)字和CIFAR-10進(jìn)行訓(xùn)練和測試,相關(guān)數(shù)據(jù)和結(jié)果如表1所示。
表1 對比實(shí)驗(yàn)數(shù)據(jù)和結(jié)果
從表1可以看出,在兩個數(shù)據(jù)集上CNNs的識別錯誤率分別為0.82%和16.9%。通過測試結(jié)果可以看出相較于MNIST數(shù)據(jù)集,在CIFAR-10上識別率較低。這主要是因?yàn)橄啾萂NIST數(shù)據(jù)集,一方面,CIFAR-10數(shù)據(jù)規(guī)模較大;另一方面,前者為灰度圖而后者為彩色圖像。更重要的是,對于CIFAR-10來說,相對于傳統(tǒng)圖像識別數(shù)據(jù)集,CIFAR-10對于提高數(shù)據(jù)的識別率來說,具有較好的研究方向。比如數(shù)據(jù)的平衡性問題,平衡的類別往往能獲得最佳的表現(xiàn),而不平衡的類別往往使模型的效果下降。
本文對卷積神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)以數(shù)學(xué)推導(dǎo)的方式進(jìn)行了分析,在MNIST和CIFAR-10兩個數(shù)據(jù)集上,使用CNNs進(jìn)行對比實(shí)驗(yàn),并對實(shí)驗(yàn)結(jié)果進(jìn)行了分析。實(shí)驗(yàn)結(jié)果表明,與傳統(tǒng)方法相比,CNNs無論在處理灰度圖和彩色圖都有較好的識別效果。