宋季澤
摘 要:隨著人工智能時(shí)代的到來(lái),科研人員都開(kāi)始思考如何提高現(xiàn)有的信息處理技術(shù)。改善手寫(xiě)體數(shù)字的識(shí)別效果對(duì)信息技術(shù)發(fā)展有很大的推動(dòng)作用。卷積神經(jīng)網(wǎng)絡(luò)(CNN)是近年發(fā)展起來(lái)的一種高效識(shí)別方法,是多層感知機(jī)的一個(gè)變種模型,也是對(duì)BP神經(jīng)網(wǎng)絡(luò)的優(yōu)化。本文提出了一種基于CNN神經(jīng)網(wǎng)絡(luò)的手寫(xiě)體數(shù)字自動(dòng)識(shí)別方法,利用從學(xué)習(xí)樣本中提取的特征向量對(duì)分類器進(jìn)行訓(xùn)練,并實(shí)現(xiàn)了分類識(shí)別。本文重點(diǎn)闡述了支持神經(jīng)網(wǎng)絡(luò)的基本原理和該方法的實(shí)現(xiàn)過(guò)程,實(shí)驗(yàn)結(jié)果表明基于卷積神經(jīng)網(wǎng)絡(luò)的識(shí)別方法具有較好的效果。
關(guān)鍵詞:手寫(xiě)體數(shù)字識(shí)別;BP神經(jīng)網(wǎng)絡(luò);卷積神經(jīng)網(wǎng)絡(luò)
中圖分類號(hào):TP182 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1671-2064(2019)05-0028-02
0 引言
手寫(xiě)體數(shù)字識(shí)別問(wèn)題源自郵政編碼、統(tǒng)計(jì)報(bào)表、財(cái)務(wù)報(bào)表、銀行票據(jù)處理等實(shí)際應(yīng)用。因此手寫(xiě)數(shù)字的識(shí)別研究一旦能夠有效提升其精度并應(yīng)用在實(shí)際工業(yè)經(jīng)濟(jì)領(lǐng)域中,可以減少很大人工工作量。本文所使用的BP神經(jīng)網(wǎng)絡(luò)算法是應(yīng)用于前饋型神經(jīng)網(wǎng)絡(luò)訓(xùn)練的著名算法,在原理上依賴于最優(yōu)化理論中成熟的梯度下降算法。CNN卷積神經(jīng)網(wǎng)絡(luò)是對(duì)BP神經(jīng)網(wǎng)絡(luò)的優(yōu)化,它具有局部權(quán)值共享的特殊結(jié)構(gòu),減少了網(wǎng)絡(luò)自由參數(shù)的個(gè)數(shù),避免了對(duì)圖像的復(fù)雜前期預(yù)處理,最明顯的是在運(yùn)行速度上明顯高于BP神經(jīng)網(wǎng)絡(luò)。
本文首先對(duì)數(shù)字樣本進(jìn)行特征提取,然后分別通過(guò)BP神經(jīng)網(wǎng)絡(luò)和CNN卷積神經(jīng)網(wǎng)絡(luò)的方法進(jìn)行識(shí)別,最后與采取KNN傳統(tǒng)方法的實(shí)驗(yàn)結(jié)果進(jìn)行了比較。
1 算法介紹
1.1 BP神經(jīng)網(wǎng)絡(luò)
BP網(wǎng)絡(luò)(Back Propagation),是一種按誤差逆?zhèn)鞑ニ惴ㄓ?xùn)練的多層前饋網(wǎng)絡(luò),是目前應(yīng)用最廣泛的神經(jīng)網(wǎng)絡(luò)模型之一。
前饋神經(jīng)網(wǎng)絡(luò)由輸入層、中間層(隱層)和輸出層組成。相鄰層之間的節(jié)點(diǎn)采取全連接方式。這三個(gè)層分別有不同的功能,輸入層負(fù)責(zé)處理輸入的數(shù)據(jù),數(shù)據(jù)形式往往是向量。中間層是多層的神經(jīng)網(wǎng)絡(luò),進(jìn)行特征表示,最后的輸出層輸出符合實(shí)際需求的數(shù)據(jù)形式的數(shù)據(jù)。一次正向傳播的過(guò)程,正向傳播處理過(guò)程,由輸出層向外界輸出信息處理結(jié)果。
BP反向傳播算法的權(quán)值的優(yōu)化采用的是梯度下降算法。梯度下降算法屬于局部尋優(yōu)的過(guò)程,首先隨機(jī)選擇一個(gè)初始值,然后沿著目標(biāo)函數(shù)的負(fù)梯度方向?qū)?quán)值進(jìn)行更新。在經(jīng)過(guò)一次正向計(jì)算后得到輸出與期望的差值,誤差代入梯度下降的公式進(jìn)行計(jì)算,對(duì)各層的權(quán)值進(jìn)行修正。通常會(huì)將神經(jīng)網(wǎng)絡(luò)的迭代次數(shù)進(jìn)行限制或者設(shè)置一個(gè)閾值,當(dāng)輸出與期望的差小于該閾值時(shí),停止迭代計(jì)算。所得到的權(quán)值閾值就是最后的結(jié)果。
目標(biāo)損失函數(shù)為: (1)
參數(shù)更新公式為: (2)
本文采用BP神經(jīng)網(wǎng)絡(luò)為三層,即中間層為單隱層,結(jié)構(gòu)如圖1所示。激勵(lì)函數(shù)的選擇直接影響到神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的性能,因此各層之間選擇合適的激勵(lì)函數(shù)非常重要。本文第一層和第二層選擇的激勵(lì)函數(shù)均為S型函數(shù)。
(3)
1.2 卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)(CNN)是近年發(fā)展起來(lái)的一種高效識(shí)別方法,是多層感知機(jī)的一個(gè)變種模型,也是對(duì)BP神經(jīng)網(wǎng)絡(luò)的優(yōu)化。該算法特征映射結(jié)構(gòu)采用影響函數(shù)核小的sigmoid函數(shù)作為卷及網(wǎng)絡(luò)的激活函數(shù),使得特征具有位移不變形,并且每一個(gè)映射面上的神經(jīng)元共享權(quán)值,大大減小神經(jīng)網(wǎng)絡(luò)的計(jì)算量。
以分類數(shù)字的LeNet-5為例,這個(gè)CNN含有三種類型的神經(jīng)網(wǎng)絡(luò)層:
(1)輸入層:直接將圖像像素信息輸入到輸入層,不必再使用額外的手動(dòng)設(shè)計(jì)特征輸入。這樣的操作減小了人工預(yù)處理過(guò)程。
(2)卷積層(C層):中間的卷積網(wǎng)絡(luò)卷積層起到特征提取的作用。每一層和上一層都通過(guò)卷積操作進(jìn)行變換。不同的卷積核參數(shù)分別對(duì)局部感受野進(jìn)行不同的特征表示。卷積操作是深度學(xué)習(xí)里面最重要的結(jié)構(gòu)之一,它使神經(jīng)網(wǎng)絡(luò)具有很大的魯棒性,能夠適用于不同的樣本。
(3)抽樣層(S層):抽樣層屬于中間層,該層起池化作用。它通過(guò)固定參數(shù)與卷積層相連,它的作用是減小特征圖的尺寸,并對(duì)局部特征進(jìn)行提取。它的參數(shù)在網(wǎng)絡(luò)訓(xùn)練過(guò)程中不再改變。
(4)輸出層:卷積神經(jīng)網(wǎng)絡(luò)的輸出層與常見(jiàn)的前饋網(wǎng)絡(luò)一樣,為全連接方式。最后一層隱層(可為C層或S層)所得到的二維特征模式被拉伸成一個(gè)向量,與輸出層以全連接方式相連。
2 手寫(xiě)體數(shù)字識(shí)別系統(tǒng)
2.1 特征提取
特征提取是指如何提取圖像信息,得到想要的結(jié)果(例如圖像的分類,目標(biāo)的定位等)。因此在深度學(xué)習(xí)之前,如何手工設(shè)計(jì)良好的特征提取方法直接影響最后的識(shí)別效果。特征選擇的好壞具有很強(qiáng)的隨機(jī)性,這樣的方法魯棒性很差。傳統(tǒng)圖像處理對(duì)數(shù)字識(shí)別特征提取可以有很多方法,例如分析從框架的左邊框到數(shù)字之間的距離變化,反應(yīng)了不同數(shù)字的不同形狀。
本文采用的是將每個(gè)數(shù)字進(jìn)行等分并統(tǒng)計(jì)每一個(gè)子塊內(nèi)的白色像素的個(gè)數(shù)作為區(qū)別各個(gè)數(shù)字的特征。由于本文采用的樣本統(tǒng)一都是32乘32的,因此將其進(jìn)行1024等分,然后提取每一個(gè)子塊內(nèi)的白色像素的個(gè)數(shù)。
2.2 建立BP神經(jīng)網(wǎng)絡(luò)模型
本文所使用的的樣本數(shù)量為2880個(gè),其中包含了1934個(gè)訓(xùn)練樣本,946個(gè)測(cè)試樣本。然后將前面所提取的特征值通過(guò)PCA降維的方法將特征維數(shù)從1024維降到100維,這樣可以加快運(yùn)算時(shí)間提高算法效率。
本文采用BP神經(jīng)網(wǎng)絡(luò)為三層,即中間層為單隱層,結(jié)構(gòu)如圖1所示。輸入層直接采用降維后的特征值。輸入神經(jīng)元個(gè)數(shù)為100,即特征值按列排成列向量作為輸入數(shù)據(jù),隱含層設(shè)置了的80個(gè)神經(jīng)元,對(duì)于輸出神經(jīng)元個(gè)數(shù),由于數(shù)字識(shí)別是10類,就將輸出層的神經(jīng)元個(gè)數(shù)設(shè)為10。迭代次數(shù)300次,誤差限設(shè)為0.001。
2.3 建立卷積神經(jīng)網(wǎng)絡(luò)模型
在這里借鑒了Lecun Yann所開(kāi)發(fā)的Lenet所用的卷積神經(jīng)網(wǎng)絡(luò)的思路。LeNet5的網(wǎng)絡(luò)輸入層由32*32的感知節(jié)點(diǎn)組成,每一個(gè)感知器用來(lái)接收輸入32*32灰度圖像的一個(gè)像素。
網(wǎng)絡(luò)第一層為卷積層,卷積核的數(shù)目為6,卷積核的大小為5*5,輸入層經(jīng)過(guò)第一卷積層,輸入圖像被卷積成6個(gè)28*28的特征圖,特征圖的大小由輸入時(shí)的32*32變成28*28。
網(wǎng)絡(luò)的第二層為抽樣層,其局部感受域大小為2*2,即每一個(gè)2*2的像素被下采樣為1個(gè)像素,經(jīng)過(guò)第二個(gè)層隱層后,特征圖的大小變?yōu)?4*14,特征圖的數(shù)目不變,仍為6個(gè)。
網(wǎng)絡(luò)的第三層為卷積層,卷積核的數(shù)目為16個(gè),卷積核的大小為5*5,所以經(jīng)過(guò)該層輸出的特征圖的大小為10*10。特征圖的數(shù)目變成16個(gè)。
網(wǎng)絡(luò)的第四個(gè)隱含層S4為下采樣層,局部感受域的大小為2*2,該層輸入為16個(gè)5*5的特征圖。
網(wǎng)絡(luò)的第五個(gè)隱層是卷積層,它是最后一個(gè)卷積層,卷積核的大小為5*5,卷積核的數(shù)目為6,在卷積操作完成以后,C5將得到的特征圖展開(kāi)成一個(gè)向量,向量的大小為120。
網(wǎng)絡(luò)的第六層為一個(gè)全連接網(wǎng)絡(luò),節(jié)點(diǎn)數(shù)為84,這84個(gè)節(jié)點(diǎn)與C5的120個(gè)輸入節(jié)點(diǎn)完全相連。
網(wǎng)絡(luò)的輸出層節(jié)點(diǎn)數(shù)目為10,表示對(duì)應(yīng)問(wèn)題的分類數(shù)目(0-9共10個(gè)數(shù)字)。
3 結(jié)果分析
樣本數(shù)量為2880個(gè),其中包含了1934個(gè)訓(xùn)練樣本, 946個(gè)測(cè)試樣本。測(cè)試結(jié)果如表2。
通過(guò)對(duì)比BP神經(jīng)網(wǎng)絡(luò)與KNN的方法的正確率本文發(fā)現(xiàn)BP神經(jīng)網(wǎng)絡(luò)的效果與KNN接近,但是由于BP神經(jīng)網(wǎng)絡(luò)存在一個(gè)隨機(jī)性,并且訓(xùn)練結(jié)果與參數(shù)設(shè)置存在很強(qiáng)的相關(guān)聯(lián)度。隱層節(jié)點(diǎn)的個(gè)數(shù)對(duì)識(shí)別率的影響不大,但節(jié)點(diǎn)越多,運(yùn)算量越大,訓(xùn)練時(shí)間越長(zhǎng);激活函數(shù)對(duì)識(shí)別率有顯著的影響;學(xué)習(xí)率的選擇影響訓(xùn)練速度,學(xué)習(xí)率越高,訓(xùn)練越快,但有可能會(huì)造成網(wǎng)絡(luò)不收斂。整體訓(xùn)練時(shí)間比較長(zhǎng),測(cè)試時(shí)間也較長(zhǎng)。
卷積神經(jīng)網(wǎng)絡(luò),雖然在訓(xùn)練網(wǎng)絡(luò)階段花費(fèi)較長(zhǎng)時(shí)間訓(xùn)練,但在測(cè)試階段時(shí)間比BP神經(jīng)網(wǎng)絡(luò)斷,因?yàn)橛?xùn)練只需這一次,以后的數(shù)據(jù)直接下載已經(jīng)訓(xùn)練好的網(wǎng)絡(luò)直接測(cè)試,總體還是比較快速的,并且準(zhǔn)確率比較高。
可以得出,在樣本質(zhì)量參差不齊的情況下,基于CNN卷積神經(jīng)網(wǎng)絡(luò)的方法相比于其它的方法能保持較高的準(zhǔn)確率,并且有應(yīng)用在商業(yè)方面的潛力。
4 結(jié)語(yǔ)
本文利用了像素?cái)?shù)分塊提取方法數(shù)字樣本進(jìn)行了特征提取,并利用了PCA的方法對(duì)特征值的維數(shù)進(jìn)行了降維。最后分別采用了BP神經(jīng)網(wǎng)絡(luò)與CNN卷積神經(jīng)網(wǎng)絡(luò)對(duì)手寫(xiě)體數(shù)字進(jìn)行了分類識(shí)別,與傳統(tǒng)的KNN方法相比,基于CNN的識(shí)別方法正確率較高,最終效果比較可觀。但本文仍然存在很多可以改進(jìn)的地方,在提高算法的速度方面仍然可以做出很多可以優(yōu)化改進(jìn)的地方。
參考文獻(xiàn)
[1] Vapnik V N著,張學(xué)工譯.統(tǒng)計(jì)學(xué)習(xí)理論的本質(zhì)[M].清華大學(xué)出版社,2000.
[2] 邊肇祺,張學(xué)工等.模式識(shí)別(第二版)[M].清華大學(xué)出版社,2000.
[3] 楊光正,吳岷,張曉莉.模式識(shí)別[M].中國(guó)科學(xué)技術(shù)大學(xué)出版社,2001.