呂 剛
(金華廣播電視大學(xué)理工學(xué)院,浙江金華 321000)
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNNs)是近年發(fā)展起來的一種高效識(shí)別方法,已經(jīng)成為眾多科學(xué)領(lǐng)域的研究熱點(diǎn)之一,特別是在模式分類領(lǐng)域.由于該網(wǎng)絡(luò)避免了對圖像的復(fù)雜前期預(yù)處理,可以直接輸入原始圖像,因而得到了廣泛的應(yīng)用.CNNs在字符識(shí)別領(lǐng)域的應(yīng)用一直非常成功.例如,在Mnist字庫的識(shí)別上,CNNs一直保持著最佳的識(shí)別率.
文獻(xiàn)[1]用一個(gè)4層的卷積神經(jīng)網(wǎng)絡(luò) LeNet-5對Mnist進(jìn)行識(shí)別實(shí)驗(yàn),獲得了98.4%的識(shí)別率,2層BP網(wǎng)絡(luò)的識(shí)別率是87%;文獻(xiàn)[2]通過對訓(xùn)練集字符作彈性形變處理,卷積神經(jīng)網(wǎng)絡(luò)在Mnist上的識(shí)別率達(dá)到99.6%,2層BP網(wǎng)絡(luò)的識(shí)別率是99.1%,支持向量機(jī)(SVM)的識(shí)別率是99.4%;文獻(xiàn)[3]運(yùn)用大規(guī)模卷積神經(jīng)網(wǎng)絡(luò)和基于能量模型的稀疏表示在Mnist上達(dá)到99.61%的識(shí)別率;文獻(xiàn)[4]通過結(jié)合大規(guī)模神經(jīng)網(wǎng)絡(luò)和2個(gè)階段的特征提取獲得了99.47%的識(shí)別率.值得一提的是,文獻(xiàn)[4]并沒有對訓(xùn)練集作彈性形變等預(yù)處理.
然而,基本BP算法的收斂速度較慢,往往需要幾百次迭代才能收斂到滿意的結(jié)果.本文首先介紹了一個(gè)典型的卷積神經(jīng)網(wǎng)絡(luò)——Simard網(wǎng)絡(luò);其次在Simard網(wǎng)絡(luò)的基礎(chǔ)上,采用隨機(jī)對角Levenberg-Marquardt算法,有效地提高了Simard網(wǎng)絡(luò)的收斂速度;以改進(jìn)后的Simard網(wǎng)絡(luò)為基礎(chǔ)進(jìn)行實(shí)驗(yàn),分析了網(wǎng)絡(luò)結(jié)構(gòu)對網(wǎng)絡(luò)性能的影響;最后成功地把改進(jìn)的Simard網(wǎng)絡(luò)應(yīng)用到多字體字符的識(shí)別上,在極大提高識(shí)別速度的基礎(chǔ)上取得了較好的識(shí)別率.
卷積神經(jīng)網(wǎng)絡(luò)可以看成是一個(gè)結(jié)構(gòu)化的BP網(wǎng)絡(luò),融合3種結(jié)構(gòu)性的方法實(shí)現(xiàn)位移、縮放和扭曲不變性.這3種方法分別是局域感受野、共享權(quán)值和空間域或時(shí)間域上的次采樣.局域感受野是指每一網(wǎng)絡(luò)層的神經(jīng)元只與上一層的一個(gè)小鄰域內(nèi)的神經(jīng)單元連接,通過局域感受野,神經(jīng)元可以提取初級(jí)的視覺特征,如方向線段、端點(diǎn)、角點(diǎn)等;權(quán)值共享是指同一個(gè)特征圖中的神經(jīng)元共用相同的權(quán)值,使得卷積神經(jīng)網(wǎng)絡(luò)具有更少的參數(shù),局域感受野和權(quán)值共享使得卷積神經(jīng)網(wǎng)絡(luò)具有平移不變性,每個(gè)特征圖提取一個(gè)特征,對特征出現(xiàn)的位置不敏感;次采樣可以減少了特征圖的分辨率,從而減少對位移、縮放和扭曲的敏感度.
文獻(xiàn)[1]給出了一個(gè)結(jié)構(gòu)比較簡單、規(guī)模較小的卷積神經(jīng)網(wǎng)絡(luò)LeNet-5;文獻(xiàn)[5]改進(jìn)了LeNet-5的結(jié)構(gòu);文獻(xiàn)[2]則提出了簡化的LeNet-5的結(jié)構(gòu),以下簡稱Simard網(wǎng)絡(luò).
根據(jù)Simard的實(shí)驗(yàn),邊緣擴(kuò)充對性能的提高不明顯(實(shí)際上Mnist字庫本身留有4個(gè)像素的邊緣),因此,輸入結(jié)果變成了29×29的圖像.卷積層和次采樣層作了合并,C5被取消了.這些改進(jìn)大大減少了網(wǎng)絡(luò)規(guī)模,提高了單次迭代的速度.
Simard采用基本的BP規(guī)則作網(wǎng)絡(luò)訓(xùn)練,網(wǎng)絡(luò)的收斂速度較慢,往往需要幾百次迭代[1].本文采用文獻(xiàn)[5]提出的隨機(jī)對角Levenberg-Marquardt算法對網(wǎng)絡(luò)作訓(xùn)練,這一算法需要的迭代次數(shù)明顯比基本的BP算法少.隨機(jī)對角Levenberg-Marquardt算法的公式為
式(1)中:ε是全局的學(xué)習(xí)率,一般取初始值0.01,ε太大會(huì)使網(wǎng)絡(luò)無法收斂,太小則會(huì)降低收斂速度,且使網(wǎng)絡(luò)更容易陷入局部極小值,訓(xùn)練過程中可以用啟發(fā)式規(guī)則改值,根據(jù)訓(xùn)練集的大小可以調(diào)整樣本數(shù)量,文中隨機(jī)選取化過大.
對于單個(gè)樣本,計(jì)算的誤差是否小于當(dāng)前平均誤差的1/10,對權(quán)值的影響很小,本文對這樣的樣本不計(jì)算反向傳播,降低了單次迭代所需的時(shí)間.
另外,為了滿足實(shí)驗(yàn)需要,本文輸出層單元數(shù)為34.
以百度貼吧驗(yàn)證碼的識(shí)別為例,驗(yàn)證Simard網(wǎng)絡(luò)的多字體字符識(shí)別性能.初始學(xué)習(xí)速度是0.01,若在多次迭代后,網(wǎng)絡(luò)性能沒有提高,則降低學(xué)習(xí)速度;另外,對Simard網(wǎng)絡(luò)的各層在規(guī)模上作了適度修改,嘗試尋找最佳的網(wǎng)絡(luò)規(guī)模.
百度貼吧驗(yàn)證碼的例子如圖1所示,由4個(gè)數(shù)字或字符構(gòu)成的驗(yàn)證碼,具有旋轉(zhuǎn)、縮放、扭曲形變、簡單粘連和多字體變化等特點(diǎn).點(diǎn)擊驗(yàn)證碼邊上的“看不清楚”按鈕會(huì)產(chǎn)生一個(gè)新的驗(yàn)證碼,隨機(jī)改變4個(gè)字符的旋轉(zhuǎn)尺度、縮放比例、扭曲程度以及字體大小,但不改變4個(gè)字符的編碼.例如,字符“ABCD”,刷新后還是“ABCD”,只是呈現(xiàn)的外觀有所變化.基于這個(gè)因素及粘連字符出現(xiàn)的比例不高(實(shí)驗(yàn)中測定的錯(cuò)誤分割的概率約42%,即平均刷新一次就可以正確分割),以刷新驗(yàn)證碼代替粘連分割,如果一個(gè)驗(yàn)證碼不能被分割成4個(gè)連通區(qū),就刷新它.
圖1 百度驗(yàn)證碼例子
因?yàn)楂@得大量標(biāo)定樣本的工作量巨大,因此,本文用一個(gè)程序模擬生成百度驗(yàn)證碼字符獲得訓(xùn)練集,測試集通過已經(jīng)標(biāo)定的實(shí)際驗(yàn)證碼獲得.這樣做也提高了訓(xùn)練集和測試集的獨(dú)立性,使得驗(yàn)證結(jié)果更有可信度.
模擬生成訓(xùn)練集的程序通過以下步驟實(shí)現(xiàn):
1)遍歷系統(tǒng)中的字體,本文為64種字體,排除10種不可用的字體(如Wingdings),實(shí)際采用54種;
2)旋轉(zhuǎn)字符圖像,角度從 -30~ +30°,以5°為一刻度,共13種;
3)遍歷數(shù)字和大寫字母,排除數(shù)字0和字符O這2個(gè)易混淆且沒在百度驗(yàn)證碼中采用的字符,共34個(gè)字符,依次用0-33標(biāo)定,獲得訓(xùn)練集1;
4)修改第3步,只遍歷數(shù)字0-9,共10個(gè)字符,依次用0-9標(biāo)定,獲得訓(xùn)練集2;
5)修改第3步,只遍歷字母A-Z,去掉字母O,共25個(gè)字符,依次用0-24標(biāo)定,獲得訓(xùn)練集3.
訓(xùn)練集中每個(gè)字符圖像歸一化為20×20大小,居中放在28×28的白色背景中,以Mnist的格式保存.圖2是部分訓(xùn)練集樣本.
圖2 部分訓(xùn)練集樣本
測試數(shù)據(jù)的準(zhǔn)備分如下3步:
1)從百度獲得6 000個(gè)驗(yàn)證碼圖片,刪除不能分割成4個(gè)連通區(qū)的圖片,共獲得3 509個(gè)可用的實(shí)驗(yàn)樣本;
2)從剩下的圖片中隨機(jī)選取200幅驗(yàn)證碼圖片,通過求連通區(qū)分割得到800個(gè)字符圖像,按照訓(xùn)練集一樣規(guī)格制作得到測試集1,作單個(gè)字符的識(shí)別驗(yàn)證;
3)從前面第1和第2步選剩下的圖片中再隨機(jī)選擇500幅作標(biāo)定,作整體識(shí)別率驗(yàn)證.
網(wǎng)絡(luò)的收斂速度受多方面因素的影響,如初始權(quán)值、訓(xùn)練集的質(zhì)量、網(wǎng)絡(luò)結(jié)構(gòu)、訓(xùn)練算法等.本文主要研究了網(wǎng)絡(luò)輸出層規(guī)模(反映網(wǎng)絡(luò)能識(shí)別的分類規(guī)模)和訓(xùn)練算法對收斂速度的影響,結(jié)果如圖3所示.
圖3中,Mnist、訓(xùn)練集2、訓(xùn)練集2-34都是純數(shù)字的訓(xùn)練集,它們的樣本個(gè)數(shù)不同,但是都只包含數(shù)字0-9,即分類規(guī)模是10.其中:訓(xùn)練集2-34中使用的網(wǎng)絡(luò),輸出層有34個(gè)單元;其他2個(gè)訓(xùn)練集使用的網(wǎng)絡(luò),輸出層是10個(gè)單元.從圖3中可以看出:
1)隨機(jī)對角Levenberg-Marquardt算法能極大提高網(wǎng)絡(luò)的收斂速度.對于Mnist,采用基本BP算法的網(wǎng)絡(luò)收斂到92%的正確率需要21次迭代(曲線Mnist-sdbp),采用隨機(jī)對角Levenberg-Marquardt算法的網(wǎng)絡(luò)則只要3次迭代(曲線Mnist);
圖3 不同網(wǎng)絡(luò)結(jié)構(gòu)下的網(wǎng)絡(luò)收斂速度
2)網(wǎng)絡(luò)收斂需要的迭代次數(shù)與網(wǎng)絡(luò)的輸出層級(jí)實(shí)際規(guī)模有關(guān)(曲線訓(xùn)練集2-34中雖然網(wǎng)絡(luò)輸出層有34個(gè)單元,實(shí)際使用的是10個(gè)),和訓(xùn)練集的大小無關(guān).
另外,訓(xùn)練集1-sub是訓(xùn)練集1的子集,只包含5個(gè)字體,共3 525個(gè)樣本.圖3中,訓(xùn)練集1-sub收斂的速度特別慢,進(jìn)一步的實(shí)驗(yàn)表明,這是全局學(xué)習(xí)率太大造成的.
如圖4所示,直接采用固定的全局學(xué)習(xí)率5e-005,比采用從一個(gè)較大值逐漸遞減到5e-005的網(wǎng)絡(luò)收斂得更快.注意,圖4中,X軸的刻度是10 epochs.這個(gè)實(shí)驗(yàn)除了表明固定學(xué)習(xí)率有時(shí)可以獲得比遞減學(xué)習(xí)率更好的收斂結(jié)果外,還進(jìn)一步驗(yàn)證了:若訓(xùn)練集中的類別數(shù)增加,則網(wǎng)絡(luò)需要更多的迭代才能收斂.
圖4 全局學(xué)習(xí)率的選擇
文獻(xiàn)[1]提到,在網(wǎng)絡(luò)性能達(dá)到一定程序后,繼續(xù)提高網(wǎng)絡(luò)中各層的規(guī)模對網(wǎng)絡(luò)的識(shí)別能力影響不大.本文的實(shí)驗(yàn)也驗(yàn)證了這一點(diǎn).對測試集1采用不同的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行識(shí)別,結(jié)果如圖5所示.
圖5中6-50-100表示采用的網(wǎng)絡(luò)中C1,C2,H1的規(guī)模分別是6,50,100(輸出層都是34).從圖5可以看出:對于測試集1,需要190 epochs左右才能收斂到最佳結(jié)果,繼續(xù)訓(xùn)練,則網(wǎng)絡(luò)的泛化能力會(huì)表現(xiàn)出在最佳值附近震蕩(即使MSE可以一直減小);減小網(wǎng)絡(luò)規(guī)模會(huì)降低網(wǎng)絡(luò)的泛化能力,增大網(wǎng)絡(luò)規(guī)模,沒有表現(xiàn)出明顯的泛化能力的提高.
圖5 網(wǎng)絡(luò)結(jié)構(gòu)對泛化性的影響
根據(jù)前面的實(shí)驗(yàn),本文選擇6-50-100-34的網(wǎng)絡(luò)結(jié)構(gòu)對訓(xùn)練集1作190次迭代訓(xùn)練;然后將訓(xùn)練好的網(wǎng)絡(luò)對500個(gè)驗(yàn)證碼圖片、共2 000個(gè)樣本作識(shí)別實(shí)驗(yàn).獲得的誤識(shí)率為1.6%,整體誤識(shí)率為6.5%.表明卷積神經(jīng)網(wǎng)絡(luò)能對百度驗(yàn)證碼進(jìn)行有效識(shí)別,同時(shí)也表明,可以把卷積驗(yàn)證碼擴(kuò)展到多字體字符的識(shí)別領(lǐng)域.部分誤識(shí)的樣本如圖6所示.
圖6 部分誤識(shí)樣本
從圖6可以看出,造成誤識(shí)的主要原因有2個(gè):一個(gè)是近似字符,有些易混淆字符即使用人眼也很難辨識(shí);另一個(gè)是分割造成的.文中用先求連通區(qū),然后在原圖截取連通區(qū)閉包的方法獲得單個(gè)字符,實(shí)際獲得的單個(gè)字符圖像中可能會(huì)包含其他字符的一些像素,這個(gè)情況在字符“A”上特別明顯,因?yàn)殚]包是一個(gè)長方形,而字符“A”是三角形,所以容易框到其他字符的像素.
介紹了一個(gè)典型的卷積神經(jīng)網(wǎng)絡(luò)——Simard網(wǎng)絡(luò),在Simard的基礎(chǔ)上,采用隨機(jī)對角Levenberg-Marquardt算法提高了Simard網(wǎng)絡(luò)的收斂速度,并用改進(jìn)的Simard在Mnist字庫、程序生成的多字體印刷體字庫以及百度驗(yàn)證碼進(jìn)行驗(yàn)證,結(jié)果表明:
1)隨機(jī)對角Levenberg-Marquardt算法能有效提高網(wǎng)絡(luò)的收斂速度(對Mnist庫是7倍左右,見圖3);
2)Simard網(wǎng)絡(luò)能夠很好地適應(yīng)多字體數(shù)字和英文字符的識(shí)別問題,文中單字符的識(shí)別率達(dá)到98.4%(誤識(shí)率1.6%),具有很好的泛化能力;
3)隨著訓(xùn)練集樣本類別數(shù)的增加,網(wǎng)絡(luò)需要更多的迭代次數(shù)才能收斂,而訓(xùn)練集的樣本數(shù)量和網(wǎng)絡(luò)訓(xùn)練需要的迭代次數(shù)之間沒有明顯的關(guān)系;
4)在網(wǎng)絡(luò)規(guī)模滿足樣本空間要求后,進(jìn)一步提高網(wǎng)絡(luò)規(guī)模對網(wǎng)絡(luò)的識(shí)別能力提高很小,但網(wǎng)絡(luò)規(guī)模與單次迭代的時(shí)間成正比,因此,需要控制網(wǎng)絡(luò)規(guī)模;
5)固定一個(gè)較小的全局學(xué)習(xí)率,有時(shí)可以獲得比遞減全局學(xué)習(xí)率更好的收斂速度.
同時(shí),實(shí)驗(yàn)也表明,隨著訓(xùn)練集中目標(biāo)類別數(shù)的增加,網(wǎng)絡(luò)收斂需要的迭代次數(shù)也明顯增加.能否把卷積神經(jīng)網(wǎng)絡(luò)用于大字符集(如中文字符)的識(shí)別還需要作進(jìn)一步的實(shí)驗(yàn).
[1]Lecun Y.Generalization and network design strategies[R].Pfeifer:Connectionist Research Group,1989.
[2]Simard P Y,Steinkraus D,Platt J C.Best practices for convolutional neural networks applied to visual document analysis[C]//Proc of the Seventh International Conference on Document Analysis and Recognition.Washington:IEEE,2003:958-962.
[3]Ranzato M A,Poultney C,Chopra S,et al.Efficient learning of sparse representations with an energy-based model[C]//NIPS 2006.Cambridge:MIT Press,2007:1137-1144.
[4]Jarrett K,Kavukcuoglu K,Ranzato M A,et al.What is the best Multi-Stage architecture for object recognition?[C]//Proc of ICCV.Kyoto:IEEE,2009:2146-2153.
[5]Lecun Y,Bottou L,Bengio Y,et al.Gradient-based learning applied to document recognition[J].Proc of the IEEE,1998,86(11):2278-2324.