宋季澤

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