劉 虹,王 烈
廣西大學 計算機與電子信息學院,南寧530004
由于個體書寫風格差異導致的手寫漢字出現(xiàn)了很大的不同,給計算機的識別上帶來了很大難度,因此要達到更高的手寫漢字識別的準確率還有著很大的進步空間,也成為最近幾年學者們的研究熱點。目前。脫機手寫漢字識別在DB1.1(3 926 類漢字)的最高準確率為92.08%,在ICDAR2013 CompetitionDB 的最高識別率為92.72%。隨著深度學習的不斷興起,神經(jīng)網(wǎng)絡被融入漢字識別系統(tǒng),使?jié)h字識別上升到了一個新高度。例如,最初由LeCun[1-2]提出的神經(jīng)網(wǎng)絡,以及LeNet-5和后人改進的用支持向量機(Support Vector Machines,SVM)代替LeNet-5 的后面兩層全連接層的網(wǎng)絡[3],到卷積神經(jīng)網(wǎng)絡與深信度網(wǎng)絡(Deep Belief Network,DBN)相結合生成的卷積深度網(wǎng)絡(Convolutional Deep Belief Network,CDBN)[4]的提出,都在手寫漢字識別研究上有了巨大的進展。RNN 神經(jīng)網(wǎng)絡具有儲存記憶功能,它的輸出不僅和當前輸入有關還和其過去甚至未來的輸入有關[5]。之后Hochreiter 和Schmidhuber 通過增加輸入門、輸出門和重置激活門對其進行了改進,提出了長短時記憶模型(Long Short Term Memoty,LSTM)[6]。2012年,Krizhevsky等人[7]將CNN進行了一系列的改善以及提供了基于GPU 的算法的開源ConvNet[8],并與Russakovsky 先后提出用ReLU 非線性激活函數(shù)等一系列新的研究技術[9-10]。2013 年富士通公司的團隊改進的CNN(Convolutional Neural Network),識別率高達94.77%[11]。Yang等人把偽樣本生成技術引入到了CNN的分類器設計中[12],并且通過實驗彌補了手寫漢字數(shù)據(jù)量不足的缺點。2014年有學者提出基于CNN和隨機彈性形變的相似手寫漢字的識別方法,通過隨機彈性形變擴展了數(shù)據(jù)集,提高了模型的泛化性能[13]。文獻[14]中作者采用了更深的15 層的CNN 網(wǎng)絡,并且結合三位隨機變形技術對圖像進行了大規(guī)模的數(shù)據(jù)生成,此外在網(wǎng)絡中間層加入多個輸出層進行多次監(jiān)督學習,實現(xiàn)了96.79%的準確率,是目前所報道的最好的識別結果[14]。此外,也有學者提出將余弦相似性引入神經(jīng)網(wǎng)絡進行圖像識別的方法,此方法與不使用余弦相似性的網(wǎng)絡相比準確率有了一定的提升,可是圖像的魯棒性一般并且還可以進一步提高準確率。本次實驗在前人提出的結合相關性的傳統(tǒng)BP 網(wǎng)絡的基礎上,提出將余弦相關性結合卷積神經(jīng)網(wǎng)絡的方法,將余弦作為相似度度量運用在了卷積神經(jīng)網(wǎng)絡的卷積層,最后在脫機手寫漢字的識別實驗中,通過實驗結果得出基于余弦相關性的神經(jīng)卷積網(wǎng)絡在手寫漢字數(shù)據(jù)集上的準確率比傳統(tǒng)的神經(jīng)卷積網(wǎng)絡的識別率有所提高。
(1)理論研究的匱乏
由于受到生物神經(jīng)元的影響,卷積神經(jīng)網(wǎng)絡以及微軟的ResNet 和GoogLeNet 等的提出[15-16],在實驗結論證實了可以對網(wǎng)絡的性能有所改善,但是此方法并不具有嚴謹?shù)臄?shù)學驗證,卷積神經(jīng)網(wǎng)絡的數(shù)學模型并沒有完全得到完善的數(shù)學驗證和科學的解釋[17]。因此,在學術研究上來說,卷積神經(jīng)的相關理論研究也是最為匱乏但最具有價值的部分。
(2)應用價值
與傳統(tǒng)人工特征提取相比較,以往人工特征提取費時費力,往往需要科技人員憑借自身經(jīng)驗與知識去設計,這樣的系統(tǒng)不具備自主學習能力,很大程度上依賴于某個領域的專家的經(jīng)驗與知識。而對于卷積神經(jīng)網(wǎng)絡,極少依賴于領域的先驗知識,它是通過反向傳播求取誤差的方法,來不斷調(diào)整特征提取的權值和偏移,因此這是一個有著自我學習的系統(tǒng),相比于傳統(tǒng)的預處理—特征提取—分類的方法來說,有著更強的判別能力和泛化能力。
卷積神經(jīng)網(wǎng)絡本質(zhì)上是由多個淺層的神經(jīng)網(wǎng)絡堆疊而成,典型的卷積神經(jīng)網(wǎng)絡主要是由輸入層、若干卷積層、若干池化層(下采樣層)、全連接層以及輸出層組成。
拿典型的卷積神經(jīng)網(wǎng)絡LeNet-5[18]來說,如圖1 所示,分為一個輸入層,兩個卷積層和下采樣層,一個全連接層和輸出層。其中,輸入層輸入一張28×28 的圖像,經(jīng)過與6 個不同的卷積核做卷積運算,在C1 卷積層產(chǎn)生了6 個不同的特征圖,將6 個特征圖作為S2 的輸入,然后特征圖加權值和偏置后,通過一個sigmoid 函數(shù)得到S2采樣層的6個映射圖,S2層輸出的6個特征圖大小為(24/2)×(24/2),可見經(jīng)過S2 的池化處理進一步地減少了數(shù)據(jù)量的產(chǎn)生。同樣的,這些映射圖再經(jīng)過C3 卷積層和S4采樣層,最后輸出層將S4層的特征圖構成一個向量,向量長度為12×4×4=192,以該向量作為輸入,與下面的其他層全連接,進行分類等操作。
圖1 卷積神經(jīng)網(wǎng)絡LeNet-5的典型結構
該網(wǎng)絡通過層層提取特征,將二維圖像轉(zhuǎn)化為一維特征,將低層次的特征作為下一層高層次的輸入,就能得到一個更高層次的特征,層層提取,此外,高層特征也往往比底層特征更穩(wěn)定。
步驟1 對于卷積神經(jīng)網(wǎng)絡,第l 層卷積層第j 個特征圖的輸出值為:
其中,Mj為選擇的輸入特征圖組合為第i 種特征圖和第j 種特征圖之間連接所用的卷積核,bj為對應的偏置,f()?為某激勵函數(shù)。
步驟2 余弦相似性度量原則。
余弦相似性[19]反應的是兩個向量的方向一致性關系,因此采用余弦相似性度量的取值范圍為[ ]-1,1 ,并且不受到指標刻度的影響。其中兩個向量的余弦相似性可以用如下公式度量:
步驟3 將余弦相似性定理引入卷積層。
步驟3.1 卷積層激活值的求解。
本文所用的余弦相似度度量的卷積神經(jīng)網(wǎng)絡,將余弦相似度引入卷積神經(jīng)網(wǎng)絡的卷積層,余弦相似度度量的卷積神經(jīng)網(wǎng)絡將輸入和卷積核分別作為一個整體來看待。用表示余弦相似度度量的函數(shù),它表示第l 層的輸入與卷積核的相似程度,因此新的卷積操作更改為:
因此第l 層卷積層的激活值可以表示為:
其中,f(?)為某種激活函數(shù),因此當輸入X 與卷積核kij相似時,輸出值越大,反之越小。
步驟3.2 計算輸出層的殘差。
對于單個的訓練樣本(X,y?),采用平方誤差損失函數(shù):
對于第l 層卷積層的第i 個神經(jīng)元的殘差為:
其中,β 表示下一層池化層,采用平均池化的系數(shù),若為n×n 的平均池化,則取值為1/n2。up(?)函數(shù)為上采樣操作。對l+1 層的靈敏度矩陣做上采樣,使尺寸一致。
步驟3.3 從輸入到卷積層的權值更新。
其中:
最后利用更新公式便可以不停地更新參數(shù):
采用自制數(shù)據(jù)集,此數(shù)據(jù)集包含了140個種類的手寫漢字,每個漢字有240個樣本,共33 600張圖片,經(jīng)過灰度化與標準化將圖片格式調(diào)整為64×64像素大小,制作好的數(shù)據(jù)集如圖2所示。
圖2 手寫漢字數(shù)據(jù)集
實驗包括兩個部分,一個是傳統(tǒng)的卷積神經(jīng)網(wǎng)絡,另一個是引入余弦相似度在卷積層的余弦相關卷積神經(jīng)網(wǎng)絡。輸入數(shù)據(jù)為64×64的圖像,卷積層采用6個5×5 的濾波器,步長設為1,經(jīng)過卷積后形成6 個60×60 特征圖,池化層采用2×2 濾波器,步長為2,經(jīng)過池化操作后生成6個30×30特征圖,在此基礎上,通過兩層全連接層然后經(jīng)過Softmax 完成輸出層的連接,最后加以分類。隱藏層激活函數(shù)均采用ReLU函數(shù),學習率固定為0.001,迭代次數(shù)為1 000。本文除了卷積層運用了更改后的卷積方式和傳統(tǒng)卷積方式不同之外,兩種網(wǎng)絡完全采用一樣的網(wǎng)絡結構和參數(shù)。具體網(wǎng)絡框圖如圖3。
圖3 卷積神經(jīng)網(wǎng)絡結構圖
實驗在操作系統(tǒng)為Windows10、CPU 為Intel-i5 的計算機上進行,使用Python中的TensorFlow工具對上述所設計的兩個網(wǎng)絡分別進行了編程實驗。
此次實驗每組分別經(jīng)過10 次仿真,分別取準確度的峰值,最后求取平均值結果如表1所示。
表1 實驗準確率結果 %
從表1可以看出,余弦相關性的卷積神經(jīng)網(wǎng)絡比傳統(tǒng)的卷積神經(jīng)網(wǎng)絡的準確率有了一定的提高,其中經(jīng)過10 次的仿真訓練可以得出平均準確率提高了2.01%。其中第10次的損失函數(shù)折線圖如圖4所示。
通過圖5 的對比可以看出,較傳統(tǒng)卷積神經(jīng)網(wǎng)絡,余弦相關卷積神經(jīng)網(wǎng)絡的損失函數(shù)在不到4 000步訓練的時候就已經(jīng)趨近收斂,而對比傳統(tǒng)的CNN 網(wǎng)絡大概在6 000步的時候才趨近收斂,因此不難看出,加入了余弦相似度的CNN 網(wǎng)絡的收斂速度更快,更容易獲得全局最優(yōu)。
圖4 網(wǎng)絡的損失函數(shù)變化折線圖
圖5 網(wǎng)絡的訓練準確度變化折線圖
在卷積層加入了余弦相似度算法,只有與卷積核相似的位置才會出現(xiàn)較大的激活值,因此避免了一些圖片由于光線、陰影或環(huán)境問題導致其圖片灰度值不同所造成的激活程度出現(xiàn)差異的情況。如圖6所示。
圖6 兩種卷積的運算示意圖
圖6 中數(shù)字表示圖像的灰度值,在圖(b)中若數(shù)字的不同只是因為光照和明暗度的差異導致的,在做完傳統(tǒng)的卷積后可以看出,得到了更高的激活值,如圖(c)所示,但這并不是本文想要的,本文想要的是除去光照等因素的特征提取,顯而易見,傳統(tǒng)的卷積對特征提取的能力大大減弱了。而在圖(d)中,運用了余弦卷積定理的卷積結果相對均衡,沒有特別大的差異,因此加入余弦的卷積對圖像的特征提取能力更強,并且對亮度以及光照不均條件下有更好的特征提取能力。
如圖7 所示,拿手寫漢字來說,圖(a)為輸入的圖像,可以看出,圖像有明暗度的變化,左邊一部分較暗,右邊一部分較明亮。再經(jīng)過一層的傳統(tǒng)卷積得到了圖(b)的結果,這里取32個特征圖中的4個來看,每張圖中間都有明確的分界線,把它分成了左右兩部分顏色,這些分界線都是因為輸入圖片的陰影導致的。而在圖(c)中,這些分界線幾乎消失了,整個圖片色調(diào)趨近于平衡,由此也可以看出添加了余弦相關性的卷積運算對光照不均的陰影的圖片,減小了光照對圖片的影響,有更高的特征提取能力。
圖7 手寫漢字的兩種卷積運算示意圖
除了對手寫漢字進行了實驗分析,還對MNIST 手寫數(shù)字分別進行了BP網(wǎng)絡、CNN、LeNet-5、KNN[20]以及余弦相關CNN網(wǎng)絡的實驗。結合前人經(jīng)驗以及多次參數(shù)的修改,完成了各網(wǎng)絡的仿真測試,并且對其各自的準確度、時間復雜度和運行時間做出了仿真統(tǒng)計,統(tǒng)計結果和計算結果如表2所示。
表2 MNIST實驗結果統(tǒng)計
表2 中BP 網(wǎng)絡為兩層隱藏層,神經(jīng)元個數(shù)為1 024和10,迭代次數(shù)為5 000,學習率固定為0.1;CNN網(wǎng)絡為兩層卷積網(wǎng)絡和兩層全連接網(wǎng)絡,卷積層分別有32 個5×5,64 個5×5 卷積核,全連接層神經(jīng)元個數(shù)為1 024 和10,迭代次數(shù)為5 000,學習率固定為0.001;除在卷積層引入余弦相似度定理外,余弦相關CNN和傳統(tǒng)CNN參數(shù)完全一致;LeNet-5為標準參數(shù),迭代次數(shù)為5 000,學習率固定為0.01;KNN網(wǎng)絡為k=1的L1計算的網(wǎng)絡結構。
可以看出余弦相關性的卷積網(wǎng)絡在準確度上有很大提升,但由于改善了卷積計算,因此在時間復雜度和運算時間上并沒有有效的降低。
在傳統(tǒng)的卷積神經(jīng)網(wǎng)絡的基礎上,融入了余弦相似度算法對卷積神經(jīng)網(wǎng)絡進行改進。由于傳統(tǒng)的卷積神經(jīng)網(wǎng)絡存在識別率不高、收斂速度慢等問題,通過結合神經(jīng)網(wǎng)絡卷積層和余弦相似度算法,提升了網(wǎng)絡的收斂速度和識別準確率。并且在實驗結果上,進一步證實了該算法的正確性和可行性。也可以將相關性運用到其他更復雜的網(wǎng)絡里,卷積層和全連接層均可融合相關算法來提高準確度和收斂速度??梢钥闯?,神經(jīng)網(wǎng)絡的運用范圍十分廣泛,在醫(yī)療、軍事、生活各個鄰域都有涉及,有著十分廣闊的研究前景[21]。雖然余弦卷積網(wǎng)絡較傳統(tǒng)卷積網(wǎng)絡有著更高的準確度和更快的收斂速度,以及減小了光照對圖片的影響,但在時間復雜度以及運算時間上面沒有減少,因此在接下來的研究中會考慮時間復雜度等時間因素的影響。