劉 虹,王 烈
廣西大學 計算機與電子信息學院,南寧530004
由于個體書寫風格差異導致的手寫漢字出現了很大的不同,給計算機的識別上帶來了很大難度,因此要達到更高的手寫漢字識別的準確率還有著很大的進步空間,也成為最近幾年學者們的研究熱點。目前。脫機手寫漢字識別在DB1.1(3 926 類漢字)的最高準確率為92.08%,在ICDAR2013 CompetitionDB 的最高識別率為92.72%。隨著深度學習的不斷興起,神經網絡被融入漢字識別系統,使漢字識別上升到了一個新高度。例如,最初由LeCun[1-2]提出的神經網絡,以及LeNet-5和后人改進的用支持向量機(Support Vector Machines,SVM)代替LeNet-5 的后面兩層全連接層的網絡[3],到卷積神經網絡與深信度網絡(Deep Belief Network,DBN)相結合生成的卷積深度網絡(Convolutional Deep Belief Network,CDBN)[4]的提出,都在手寫漢字識別研究上有了巨大的進展。RNN 神經網絡具有儲存記憶功能,它的輸出不僅和當前輸入有關還和其過去甚至未來的輸入有關[5]。之后Hochreiter 和Schmidhuber 通過增加輸入門、輸出門和重置激活門對其進行了改進,提出了長短時記憶模型(Long Short Term Memoty,LSTM)[6]。2012年,Krizhevsky等人[7]將CNN進行了一系列的改善以及提供了基于GPU 的算法的開源ConvNet[8],并與Russakovsky 先后提出用ReLU 非線性激活函數等一系列新的研究技術[9-10]。2013 年富士通公司的團隊改進的CNN(Convolutional Neural Network),識別率高達94.77%[11]。Yang等人把偽樣本生成技術引入到了CNN的分類器設計中[12],并且通過實驗彌補了手寫漢字數據量不足的缺點。2014年有學者提出基于CNN和隨機彈性形變的相似手寫漢字的識別方法,通過隨機彈性形變擴展了數據集,提高了模型的泛化性能[13]。文獻[14]中作者采用了更深的15 層的CNN 網絡,并且結合三位隨機變形技術對圖像進行了大規模的數據生成,此外在網絡中間層加入多個輸出層進行多次監督學習,實現了96.79%的準確率,是目前所報道的最好的識別結果[14]。此外,也有學者提出將余弦相似性引入神經網絡進行圖像識別的方法,此方法與不使用余弦相似性的網絡相比準確率有了一定的提升,可是圖像的魯棒性一般并且還可以進一步提高準確率。本次實驗在前人提出的結合相關性的傳統BP 網絡的基礎上,提出將余弦相關性結合卷積神經網絡的方法,將余弦作為相似度度量運用在了卷積神經網絡的卷積層,最后在脫機手寫漢字的識別實驗中,通過實驗結果得出基于余弦相關性的神經卷積網絡在手寫漢字數據集上的準確率比傳統的神經卷積網絡的識別率有所提高。
(1)理論研究的匱乏
由于受到生物神經元的影響,卷積神經網絡以及微軟的ResNet 和GoogLeNet 等的提出[15-16],在實驗結論證實了可以對網絡的性能有所改善,但是此方法并不具有嚴謹的數學驗證,卷積神經網絡的數學模型并沒有完全得到完善的數學驗證和科學的解釋[17]。因此,在學術研究上來說,卷積神經的相關理論研究也是最為匱乏但最具有價值的部分。
(2)應用價值
與傳統人工特征提取相比較,以往人工特征提取費時費力,往往需要科技人員憑借自身經驗與知識去設計,這樣的系統不具備自主學習能力,很大程度上依賴于某個領域的專家的經驗與知識。而對于卷積神經網絡,極少依賴于領域的先驗知識,它是通過反向傳播求取誤差的方法,來不斷調整特征提取的權值和偏移,因此這是一個有著自我學習的系統,相比于傳統的預處理—特征提取—分類的方法來說,有著更強的判別能力和泛化能力。
卷積神經網絡本質上是由多個淺層的神經網絡堆疊而成,典型的卷積神經網絡主要是由輸入層、若干卷積層、若干池化層(下采樣層)、全連接層以及輸出層組成。
拿典型的卷積神經網絡LeNet-5[18]來說,如圖1 所示,分為一個輸入層,兩個卷積層和下采樣層,一個全連接層和輸出層。其中,輸入層輸入一張28×28 的圖像,經過與6 個不同的卷積核做卷積運算,在C1 卷積層產生了6 個不同的特征圖,將6 個特征圖作為S2 的輸入,然后特征圖加權值和偏置后,通過一個sigmoid 函數得到S2采樣層的6個映射圖,S2層輸出的6個特征圖大小為(24/2)×(24/2),可見經過S2 的池化處理進一步地減少了數據量的產生。同樣的,這些映射圖再經過C3 卷積層和S4采樣層,最后輸出層將S4層的特征圖構成一個向量,向量長度為12×4×4=192,以該向量作為輸入,與下面的其他層全連接,進行分類等操作。

圖1 卷積神經網絡LeNet-5的典型結構
該網絡通過層層提取特征,將二維圖像轉化為一維特征,將低層次的特征作為下一層高層次的輸入,就能得到一個更高層次的特征,層層提取,此外,高層特征也往往比底層特征更穩定。
步驟1 對于卷積神經網絡,第l 層卷積層第j 個特征圖的輸出值為:

其中,Mj為選擇的輸入特征圖組合為第i 種特征圖和第j 種特征圖之間連接所用的卷積核,bj為對應的偏置,f()?為某激勵函數。
步驟2 余弦相似性度量原則。
余弦相似性[19]反應的是兩個向量的方向一致性關系,因此采用余弦相似性度量的取值范圍為[ ]-1,1 ,并且不受到指標刻度的影響。其中兩個向量的余弦相似性可以用如下公式度量:

步驟3 將余弦相似性定理引入卷積層。
步驟3.1 卷積層激活值的求解。
本文所用的余弦相似度度量的卷積神經網絡,將余弦相似度引入卷積神經網絡的卷積層,余弦相似度度量的卷積神經網絡將輸入和卷積核分別作為一個整體來看待。用表示余弦相似度度量的函數,它表示第l 層的輸入與卷積核的相似程度,因此新的卷積操作更改為:

因此第l 層卷積層的激活值可以表示為:

其中,f(?)為某種激活函數,因此當輸入X 與卷積核kij相似時,輸出值越大,反之越小。
步驟3.2 計算輸出層的殘差。
對于單個的訓練樣本(X,y?),采用平方誤差損失函數:

對于第l 層卷積層的第i 個神經元的殘差為:

其中,β 表示下一層池化層,采用平均池化的系數,若為n×n 的平均池化,則取值為1/n2。up(?)函數為上采樣操作。對l+1 層的靈敏度矩陣做上采樣,使尺寸一致。
步驟3.3 從輸入到卷積層的權值更新。

其中:

最后利用更新公式便可以不停地更新參數:

采用自制數據集,此數據集包含了140個種類的手寫漢字,每個漢字有240個樣本,共33 600張圖片,經過灰度化與標準化將圖片格式調整為64×64像素大小,制作好的數據集如圖2所示。

圖2 手寫漢字數據集
實驗包括兩個部分,一個是傳統的卷積神經網絡,另一個是引入余弦相似度在卷積層的余弦相關卷積神經網絡。輸入數據為64×64的圖像,卷積層采用6個5×5 的濾波器,步長設為1,經過卷積后形成6 個60×60 特征圖,池化層采用2×2 濾波器,步長為2,經過池化操作后生成6個30×30特征圖,在此基礎上,通過兩層全連接層然后經過Softmax 完成輸出層的連接,最后加以分類。隱藏層激活函數均采用ReLU函數,學習率固定為0.001,迭代次數為1 000。本文除了卷積層運用了更改后的卷積方式和傳統卷積方式不同之外,兩種網絡完全采用一樣的網絡結構和參數。具體網絡框圖如圖3。

圖3 卷積神經網絡結構圖
實驗在操作系統為Windows10、CPU 為Intel-i5 的計算機上進行,使用Python中的TensorFlow工具對上述所設計的兩個網絡分別進行了編程實驗。
此次實驗每組分別經過10 次仿真,分別取準確度的峰值,最后求取平均值結果如表1所示。

表1 實驗準確率結果 %
從表1可以看出,余弦相關性的卷積神經網絡比傳統的卷積神經網絡的準確率有了一定的提高,其中經過10 次的仿真訓練可以得出平均準確率提高了2.01%。其中第10次的損失函數折線圖如圖4所示。
通過圖5 的對比可以看出,較傳統卷積神經網絡,余弦相關卷積神經網絡的損失函數在不到4 000步訓練的時候就已經趨近收斂,而對比傳統的CNN 網絡大概在6 000步的時候才趨近收斂,因此不難看出,加入了余弦相似度的CNN 網絡的收斂速度更快,更容易獲得全局最優。

圖4 網絡的損失函數變化折線圖

圖5 網絡的訓練準確度變化折線圖
在卷積層加入了余弦相似度算法,只有與卷積核相似的位置才會出現較大的激活值,因此避免了一些圖片由于光線、陰影或環境問題導致其圖片灰度值不同所造成的激活程度出現差異的情況。如圖6所示。

圖6 兩種卷積的運算示意圖
圖6 中數字表示圖像的灰度值,在圖(b)中若數字的不同只是因為光照和明暗度的差異導致的,在做完傳統的卷積后可以看出,得到了更高的激活值,如圖(c)所示,但這并不是本文想要的,本文想要的是除去光照等因素的特征提取,顯而易見,傳統的卷積對特征提取的能力大大減弱了。而在圖(d)中,運用了余弦卷積定理的卷積結果相對均衡,沒有特別大的差異,因此加入余弦的卷積對圖像的特征提取能力更強,并且對亮度以及光照不均條件下有更好的特征提取能力。
如圖7 所示,拿手寫漢字來說,圖(a)為輸入的圖像,可以看出,圖像有明暗度的變化,左邊一部分較暗,右邊一部分較明亮。再經過一層的傳統卷積得到了圖(b)的結果,這里取32個特征圖中的4個來看,每張圖中間都有明確的分界線,把它分成了左右兩部分顏色,這些分界線都是因為輸入圖片的陰影導致的。而在圖(c)中,這些分界線幾乎消失了,整個圖片色調趨近于平衡,由此也可以看出添加了余弦相關性的卷積運算對光照不均的陰影的圖片,減小了光照對圖片的影響,有更高的特征提取能力。

圖7 手寫漢字的兩種卷積運算示意圖
除了對手寫漢字進行了實驗分析,還對MNIST 手寫數字分別進行了BP網絡、CNN、LeNet-5、KNN[20]以及余弦相關CNN網絡的實驗。結合前人經驗以及多次參數的修改,完成了各網絡的仿真測試,并且對其各自的準確度、時間復雜度和運行時間做出了仿真統計,統計結果和計算結果如表2所示。

表2 MNIST實驗結果統計
表2 中BP 網絡為兩層隱藏層,神經元個數為1 024和10,迭代次數為5 000,學習率固定為0.1;CNN網絡為兩層卷積網絡和兩層全連接網絡,卷積層分別有32 個5×5,64 個5×5 卷積核,全連接層神經元個數為1 024 和10,迭代次數為5 000,學習率固定為0.001;除在卷積層引入余弦相似度定理外,余弦相關CNN和傳統CNN參數完全一致;LeNet-5為標準參數,迭代次數為5 000,學習率固定為0.01;KNN網絡為k=1的L1計算的網絡結構。
可以看出余弦相關性的卷積網絡在準確度上有很大提升,但由于改善了卷積計算,因此在時間復雜度和運算時間上并沒有有效的降低。
在傳統的卷積神經網絡的基礎上,融入了余弦相似度算法對卷積神經網絡進行改進。由于傳統的卷積神經網絡存在識別率不高、收斂速度慢等問題,通過結合神經網絡卷積層和余弦相似度算法,提升了網絡的收斂速度和識別準確率。并且在實驗結果上,進一步證實了該算法的正確性和可行性。也可以將相關性運用到其他更復雜的網絡里,卷積層和全連接層均可融合相關算法來提高準確度和收斂速度。可以看出,神經網絡的運用范圍十分廣泛,在醫療、軍事、生活各個鄰域都有涉及,有著十分廣闊的研究前景[21]。雖然余弦卷積網絡較傳統卷積網絡有著更高的準確度和更快的收斂速度,以及減小了光照對圖片的影響,但在時間復雜度以及運算時間上面沒有減少,因此在接下來的研究中會考慮時間復雜度等時間因素的影響。