楊 剛,賀冬葛,戴麗珍
(華東交通大學(xué)電氣與自動(dòng)化工程學(xué)院,江西 南昌330013)
手寫體數(shù)字識別在銀行、稅務(wù)和郵政系統(tǒng)等領(lǐng)域有著重要的應(yīng)用和廣闊的發(fā)展前景,尤其在脫機(jī)工作環(huán)境下有很大的提升空間[1]。 傳統(tǒng)的手寫體數(shù)字識別方法主要有支持向量機(jī)[2-4],神經(jīng)網(wǎng)絡(luò)算法[5-6]等。 但由于手寫數(shù)字本身所包含的特征較少,加上不同人書寫數(shù)字字符差異較大,在識別率方面具有較大的提升空間。以深度學(xué)習(xí)為代表的機(jī)器學(xué)習(xí)方法的出現(xiàn)[7],大大降低了圖片識別的難度,為手寫體數(shù)字識別提供了有效工具。卷積神經(jīng)網(wǎng)絡(luò)由于其“深層結(jié)構(gòu)”的優(yōu)勢,常被用于圖片特征提取,并通過Softmax 對相關(guān)特征進(jìn)行分類。盡管該方法具有較理想的處理效果,但對電腦要求過高,且計(jì)算復(fù)雜、耗時(shí)較長。 為了提高手寫體數(shù)字的識別率,本文擬結(jié)合卷積神經(jīng)網(wǎng)絡(luò)的特征提取能力、支持向量機(jī)的分類能力、粒子群優(yōu)化的尋優(yōu)能力,通過CNN 對手寫體數(shù)字圖片進(jìn)行特征提起,采用粒子群優(yōu)化SVM 關(guān)鍵參數(shù)對數(shù)字特征進(jìn)行識別,從而實(shí)現(xiàn)手寫體數(shù)字的識別。
卷積神經(jīng)網(wǎng)絡(luò)(convolution neural network,CNN)[8]是一種前饋神經(jīng)網(wǎng)絡(luò),它的人工神經(jīng)元可以響應(yīng)一部分覆蓋范圍內(nèi)的周圍單元,對于大型圖像處理有出色表現(xiàn)。
CNN 是一個(gè)受生物視覺啟發(fā)、以最簡化預(yù)處理操作為目的的多層感知器的變形,它結(jié)構(gòu)的可拓展性很強(qiáng),可以采用較深的層數(shù),構(gòu)成的深度模型具有更強(qiáng)的表達(dá)能力[9]。 卷積神經(jīng)網(wǎng)絡(luò)由一個(gè)或多個(gè)卷積層(convolution layer)和末端的全連接層組成,同時(shí)也包括關(guān)聯(lián)權(quán)重和池化層(pooling layer)。 這一結(jié)構(gòu)使得卷積神經(jīng)網(wǎng)絡(luò)能夠利用輸入數(shù)據(jù)的二維結(jié)構(gòu),并且也可以使用反向傳播算法進(jìn)行訓(xùn)練。 相比較其他深度、前饋神經(jīng)網(wǎng)絡(luò),卷積神經(jīng)網(wǎng)絡(luò)需要考量的參數(shù)更少,使之成為一種頗具吸引力的深度學(xué)習(xí)結(jié)構(gòu)[10]。
卷積層的主要作用是通過對卷積核大小的設(shè)置,由淺入深不斷對前一層傳輸?shù)臄?shù)據(jù)進(jìn)行特征提取。 由于設(shè)置了共享權(quán)值,在同一特征圖中神經(jīng)元使用同一組卷積核,可以減少訓(xùn)練參數(shù)。 其中,卷積核數(shù)值在初始化后由后續(xù)的網(wǎng)絡(luò)訓(xùn)練確定[11]。
圖片各像素點(diǎn)的值與卷積核的乘積加入偏置后經(jīng)過激活函數(shù)的運(yùn)算即可得到圖片的一個(gè)特征映射:
其中:ajL表示L 層卷積后第j 個(gè)神經(jīng)元的輸出;wijL表示卷積核;bjL表示偏置。 f(·)為神經(jīng)元激活函數(shù),這里我們采用Sigmoid 函數(shù),即
池化是卷積神經(jīng)網(wǎng)絡(luò)中的一個(gè)重要操作,能夠減少圖片中冗余特征,同時(shí)保持特征的局部不變性[12]。
圖片經(jīng)過卷積處理后,每個(gè)n×n 鄰域內(nèi)的像素點(diǎn)采用最大池化(MaxPooling)的方法變?yōu)橐粋€(gè)像素
其中:down(·)表示下采樣函數(shù),該層運(yùn)算不包含可學(xué)習(xí)的權(quán)值和閾值。
全連接層可以整合前向傳來的具有類別區(qū)分性的局部信息;同時(shí),可以增強(qiáng)網(wǎng)絡(luò)的非線性映射能力;限制網(wǎng)絡(luò)規(guī)模的大小。
支持向量機(jī)是建立在統(tǒng)計(jì)學(xué)理論基礎(chǔ)上的一種數(shù)據(jù)挖掘算法, 其工作機(jī)理是尋找一個(gè)滿足分類要求的最優(yōu)分類超平面, 使得該超平面在保證分類精度的同時(shí), 能夠使超平面兩側(cè)的空白區(qū)域最大化。 理論上,支持向量機(jī)能夠?qū)崿F(xiàn)對線性可分?jǐn)?shù)據(jù)的最優(yōu)分類[13]。其原理示意圖如圖1 所示。
本文使用LIBSVM 工具箱通過一對一的方法來實(shí)現(xiàn)分類器的設(shè)計(jì)構(gòu)造。 當(dāng)要對一個(gè)未知類別樣本分類時(shí),輸出結(jié)果值最大的即為該樣本類別[14]。
經(jīng)過多年來國內(nèi)外的研究表明,SVM 以RBF核(徑向基函數(shù))為核函數(shù)具有很強(qiáng)的學(xué)習(xí)能力和分類效果。 文中選用RBF 作為SVM 的核函數(shù)
圖1 支持向量機(jī)示例Fig.1 Example of support vector machines
在用SVM 做分類預(yù)測時(shí)若想要提高結(jié)果的準(zhǔn)確率往往需要對SVM 參數(shù)進(jìn)行優(yōu)化以選取最優(yōu)的參數(shù)[15](主要是懲罰參數(shù)c 和核函數(shù)參數(shù)g)。
SVM 中懲罰系數(shù)c(c 為正數(shù)) 用來表征對誤差的寬容度;c 值過高或過低均會影響SVM 的泛化能力。參數(shù)g 是選擇RBF 函數(shù)作為Kernel 后該函數(shù)自帶的一個(gè)參數(shù),隱含地決定了數(shù)據(jù)映射到新的特征空間后的分布。
PSO 首先是在可行解中初始化一群粒子,每個(gè)粒子都有自身的速度、位置跟適應(yīng)值,通過不斷的迭代搜索最優(yōu)解。 在每一次迭代中粒子通過個(gè)體最優(yōu)值跟全局最優(yōu)值來更新自己。
對于隨機(jī)初始化產(chǎn)生的粒子,將其視為第一代初始種群,通過目標(biāo)函數(shù)Q(Xi)計(jì)算得出的適應(yīng)度值來衡量種群Xi的優(yōu)劣。 種群中粒子i 當(dāng)前最優(yōu)位置為
其中:Xbesti為粒子i 所經(jīng)歷的最優(yōu)位置標(biāo)記;Qbesti為粒子i 位置最優(yōu)時(shí)所對應(yīng)的適應(yīng)值。 尋優(yōu)過程中,粒子不斷更新自己的位置跟速度,速度更新公式為
其中:Xbestg為粒子g 所經(jīng)歷的最優(yōu)位置標(biāo)記(對應(yīng)的適應(yīng)度值應(yīng)為Qbestg此處沒有體現(xiàn)),Vmax為粒子單步更新的速度最大值;c1、c2為加速度常數(shù), 表示PSO 參數(shù)局部搜索能力;r1、r2是兩個(gè)相互獨(dú)立的隨機(jī)參數(shù);w為慣性權(quán)重,在優(yōu)化過程中能夠起到提高全局搜索跟局部搜索的作用。
位置更新公式為
其中xi=(xi1,xi2,...,xin)表示粒子i 位置向量中的值。
適應(yīng)度函數(shù)的確定是實(shí)現(xiàn)PSO 算法的先決條件,更是尋優(yōu)的依據(jù)。 傳統(tǒng)方法是尋找或者設(shè)計(jì)一個(gè)函數(shù)用以計(jì)算適應(yīng)度值,以顯示尋優(yōu)效果的優(yōu)劣[16],但計(jì)算復(fù)雜,使用困難。本文使用CV 算法,將對訓(xùn)練集在CV意義下的準(zhǔn)確率作為粒子群中的適應(yīng)度函數(shù)值。
交叉驗(yàn)證(CV)是一種常用的驗(yàn)證分類器性能的統(tǒng)計(jì)分析方法[17]。 關(guān)于對SVM 參數(shù)的優(yōu)化選取是將c和g 在一定的取值范圍內(nèi)取值,然后將訓(xùn)練集作為原始數(shù)據(jù)采用K-CV 的方法對SVM 進(jìn)行訓(xùn)練,訓(xùn)練后得到的模型再通過驗(yàn)證集驗(yàn)證后得出分類準(zhǔn)確率,準(zhǔn)確率最高的模型即為最佳參數(shù)。 對于可能出現(xiàn)的過學(xué)習(xí)狀態(tài)的發(fā)生我們選擇最佳參數(shù)中懲罰參數(shù)c 最小的一組(c,g)參數(shù)為最優(yōu)參數(shù)。
這里將對訓(xùn)練集進(jìn)行CV 意義下結(jié)果中最好的模型識別準(zhǔn)確率作為PSO 的適應(yīng)度值。 基于PSO 的SVM 全局參數(shù)尋優(yōu)的整體算法過程如圖2 所示。
圖2 PSO 優(yōu)化SVM 參數(shù)流程圖Fig.2 Flow chart of PSO optimized SVM parameters
為提高網(wǎng)絡(luò)對手寫數(shù)字圖像的識別精度,本文將卷積神經(jīng)網(wǎng)絡(luò)和支持向量機(jī)結(jié)合,并通過PSO 優(yōu)化算法優(yōu)化SVM;PSO 是基于個(gè)體間的協(xié)作實(shí)現(xiàn)搜索空間中的尋優(yōu),能很好的提高SVM 的識別性能。
在使用粒子群優(yōu)化SVM 參數(shù)的實(shí)驗(yàn)中,相比于隨機(jī)初始化粒子確定適應(yīng)度值,本文使用CV 意義下的準(zhǔn)確率將其代替,以達(dá)到快速收斂的效果。 整體結(jié)構(gòu)如圖3 所示。
圖3 CNN-SVM 整體結(jié)構(gòu)圖Fig.3 CNN-SVM overall structure diagram
基于CNN 和PSO-SVM 的手寫數(shù)字識別流程主要步驟如下:
Step1:將手寫數(shù)據(jù)集分為訓(xùn)練集和測試集;
Step2:通過Python 程序?qū)⒍S圖片數(shù)據(jù)傳入卷積網(wǎng)絡(luò)輸入層;
Step3:圖片經(jīng)過卷積層、池化層得以特征提取跟降維,得到含有特征信息較高的數(shù)據(jù)集,經(jīng)全連接層后,數(shù)據(jù)由二維轉(zhuǎn)換為一維;
Step4:將全連接后的一維數(shù)據(jù)通過Matlab 傳入SVM;
Step5:使用K-CV 的方法將一維的訓(xùn)練數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)得到當(dāng)前組(c,g)的分類準(zhǔn)確率,并將其作為PSO 中粒子的適應(yīng)度函數(shù);
Step6:根據(jù)粒子群對SVM 參數(shù)的不斷尋優(yōu),最終確定出最佳的c,g 參數(shù)(尋優(yōu)過程如圖4 所示);
Step7:訓(xùn)練完成后將一維的訓(xùn)練集送入最終的模型中進(jìn)行分類驗(yàn)證,以最終對手寫數(shù)字圖片的分類準(zhǔn)確率作為最后的結(jié)果。
本文設(shè)計(jì)構(gòu)建的卷積神經(jīng)網(wǎng)絡(luò)包含兩個(gè)卷積層、 兩個(gè)池化層和一個(gè)全連接層, 分類層采用優(yōu)化后的SVM 分類器。
通過使用UCI 提供的Semeion 手寫數(shù)字集及經(jīng)典MNIST 手寫數(shù)字集分別對網(wǎng)絡(luò)進(jìn)行訓(xùn)練。兩數(shù)據(jù)集均將圖片分為0~9 十類,圖片顯示的手寫阿拉伯?dāng)?shù)字即為該圖片的屬性類別。 實(shí)驗(yàn)中卷積核大小設(shè)置為5×5,池化層中采樣大小為2×2。
UCI 提供的Semeion 手寫數(shù)字?jǐn)?shù)據(jù)集共有80 人參與,每人在非刻意的情況下在紙上快速將數(shù)字0~9 手寫2 次。 數(shù)據(jù)集共有1 593 張圖片,從中隨機(jī)抽取1 500 張圖片進(jìn)行實(shí)驗(yàn)并將其分為訓(xùn)練集跟測試集, 訓(xùn)練集共有700 張圖片,測試集有800 張圖片;圖片為16×16 像素的一維灰度圖片。 每張圖片均采用固定閾值將像素點(diǎn)縮放為二進(jìn)制(1/0)值。 圖4 為該數(shù)據(jù)集石示例圖片。
圖4 部分手寫數(shù)字圖像Fig.4 Partial handwritten digital images
實(shí)驗(yàn)主要是通過使用粒子群對SVM 中的參數(shù)不斷尋優(yōu),以提高分類識別層的識別準(zhǔn)確率。 參數(shù)c、g 均在一定范圍內(nèi)取值,于是我們根據(jù)實(shí)驗(yàn)經(jīng)驗(yàn)設(shè)定c∈[0,100],g∈[-100,100],通過初始化選取20 個(gè)種群,經(jīng)過200 次迭代尋優(yōu)。
實(shí)驗(yàn)中我們隨機(jī)將測試數(shù)據(jù)集均分為8 組,每組100 個(gè)樣本進(jìn)行實(shí)驗(yàn)仿真,實(shí)驗(yàn)結(jié)果如圖5~圖6 所示。
可以看到100 組圖片中只有一張未能識別正確;通過測試驗(yàn)證可知該模型對數(shù)字的識別率達(dá)99.11%,PSO 尋優(yōu)最佳參數(shù)為c=2.297,g=0.01。
在手寫數(shù)字識別的實(shí)驗(yàn)中,對于每組能夠正確識別的圖片個(gè)數(shù)n 將其除以每組圖片總數(shù)m,得出該組下的識別正確率p,即p= n/m×100%。 至此,將相同的訓(xùn)練測試數(shù)據(jù)試驗(yàn)在不同的模型中進(jìn)行對比,結(jié)果如表1~表2,圖7 所示。
圖7 UCI-Semeion 數(shù)據(jù)集實(shí)驗(yàn)結(jié)果Fig.7 Experimental results of UCI-Semeiondataset
表2 UCI 數(shù)據(jù)集識別率Tab.2 UCI data set recognition rate
可以看出經(jīng)過PSO 參數(shù)優(yōu)化后的卷積神經(jīng)網(wǎng)絡(luò)結(jié)合支持向量機(jī)算法精度最高,均保持在95%以上,對處理圖片分析上具有一定的優(yōu)勢。
文獻(xiàn)[18]顯示為SVM 在不同特征情況下在該數(shù)據(jù)集中的識別精度(文獻(xiàn)中實(shí)驗(yàn)未顯示識別錯(cuò)誤個(gè)數(shù)),可以看到在對SVM 加入不同特征后,本文算法識別正確率仍然高于文獻(xiàn)[18]中對應(yīng)的識別算法。文獻(xiàn)[19]中提出了一種基于邊界對特征的敏感度值進(jìn)行特征選擇的支持向量機(jī)樹混合學(xué)習(xí)模型,其識別率為98.9%。
MNIST 手寫數(shù)據(jù)集包含70 000 個(gè)樣本,每個(gè)樣本為28×28 像素的灰度圖片,其中訓(xùn)練集有60 000 張圖片,測試集有10 000 張。 圖8 為該數(shù)據(jù)集的部分樣例。
由于數(shù)據(jù)集數(shù)據(jù)樣本較多,此次實(shí)驗(yàn)隨機(jī)從數(shù)據(jù)庫中選取600 張訓(xùn)練圖片,1 000 張測試圖片,并將測試集隨機(jī)分為十等份(每份100 張圖片)進(jìn)行測試驗(yàn)證。 表3 顯示十份驗(yàn)證集中最優(yōu)識別情況。
由實(shí)驗(yàn)結(jié)果可知,本文中采用的方法識別率最高為96%,即100 個(gè)隨機(jī)選取的數(shù)據(jù)樣本中只有4 個(gè)未能識別正確。文獻(xiàn)[20]使用SOM 簡化算法及并行電路架構(gòu),采用1 000 組數(shù)據(jù)進(jìn)行測試,得到84.13%的準(zhǔn)確率。文獻(xiàn)[21]中設(shè)計(jì)了分?jǐn)?shù)階梯度下降學(xué)習(xí)機(jī)制,在分?jǐn)?shù)階BP 神經(jīng)網(wǎng)絡(luò)中自適應(yīng)更新連接權(quán)值,最終提出的PEO-FOBP 在MNIST 數(shù)據(jù)集中識別精度有96.54%其對應(yīng)的未加入極值優(yōu)化的自適應(yīng)的PEOBP 算法識別度為95.67%。
對以上實(shí)驗(yàn)進(jìn)行分析可看到,CNN 結(jié)合PSOSVM 的算法對分類識別手寫數(shù)字圖片有良好的效果,在一定程度上提高了對圖片的的識別率。
圖8 MNIST 數(shù)據(jù)集部分樣例Fig.8 Partial sample of MNIST dataset
表3 MNIST 數(shù)據(jù)集識別率Tab.3 MNIST dataset recognition rate
本文提出使用卷積結(jié)合支持向量機(jī)的方法對圖片進(jìn)行識別,并采用基于K-CV 作為適應(yīng)度函數(shù)的PSO對SVM 參數(shù)進(jìn)行優(yōu)化,以此提高支持向量機(jī)的識別性能。
在圖像識別的問題中,卷積神經(jīng)網(wǎng)絡(luò)通過自身深度學(xué)習(xí)的能力獲取圖像特征,對圖像有較高的識別率;傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)使用Softmax 進(jìn)行分類識別,Softmax 屬于線性模型,本身具有分類速度快、模型占用空間小等優(yōu)勢,但使用較強(qiáng)的線性假設(shè),在分類問題上仍有一定的提升空間;進(jìn)行計(jì)算時(shí)涉及指數(shù)函數(shù)的運(yùn)算,當(dāng)函數(shù)增長時(shí)過高的函數(shù)值將影響計(jì)算機(jī)的輸出結(jié)果,因此對計(jì)算機(jī)硬件設(shè)備有一定的要求。
實(shí)驗(yàn)采用Python3.5 與Matlab2015b 作為實(shí)驗(yàn)平臺, 對UCI 提供的手寫圖片和MNIST 手寫數(shù)據(jù)集進(jìn)行分類識別。在確定最佳參數(shù)c、g 的值后,最終對兩款測試集的識別率分別達(dá)到99.11%和96%。然而,在實(shí)驗(yàn)過程中也遇到一些問題,比如實(shí)驗(yàn)設(shè)備比較老舊,對于更復(fù)雜的程序難以順利運(yùn)行(更深層次的卷積神經(jīng)網(wǎng)絡(luò)對硬件設(shè)備要求較高),像MNIST 這樣文件較大的數(shù)據(jù)集也很難實(shí)現(xiàn)。但對于該次實(shí)驗(yàn)設(shè)計(jì)的網(wǎng)絡(luò)結(jié)構(gòu)較為簡單且實(shí)驗(yàn)結(jié)果表明該算法識別性能較好,對手寫數(shù)字正確識別率有一定的提高,因此該算法在研究領(lǐng)域有深入研究的潛在價(jià)值。