王永亮
(山西大同大學(xué)渾源師范分校,山西 渾源 037400)
阿拉伯?dāng)?shù)字作為唯一一種世界各國的通用符號,為每個(gè)國家每個(gè)地區(qū)的研究人員提供了發(fā)揮智慧的平臺,使他們在數(shù)據(jù)的搜集以及處理等方面更加方便快捷,促進(jìn)各國合作,進(jìn)行更深刻的理論研究。并且,它在許多方面都有著廣泛的實(shí)踐作用,例如:統(tǒng)計(jì)數(shù)據(jù)的報(bào)告,金融方面的報(bào)表,對信封上郵編的識別,對車牌號碼的精確識別等方面[1-3]。先前不少學(xué)者已經(jīng)對神經(jīng)網(wǎng)絡(luò)做了大量的研討,BP神經(jīng)網(wǎng)絡(luò)也因此而備受青睞。人們調(diào)查其系統(tǒng)實(shí)時(shí)性,研究其識別效果,更改其初始的權(quán)值以加快其收斂速度,探索最佳隱層節(jié)點(diǎn)數(shù)以提高網(wǎng)絡(luò),利用BP網(wǎng)絡(luò)的優(yōu)勢正確地識別數(shù)字[4-8]。
論文主要分析的是BP(Back Propagation)神經(jīng)網(wǎng)絡(luò)運(yùn)用于數(shù)字識別中處理問題的能力效果。研究其訓(xùn)練網(wǎng)絡(luò)所用參數(shù),進(jìn)行分析比對,選用最合適、效果最好的參數(shù)進(jìn)行最終測試,通過MATLAB這個(gè)強(qiáng)大的實(shí)驗(yàn)平臺,對實(shí)驗(yàn)過程進(jìn)行真實(shí)仿造和還原,從而驗(yàn)證BP網(wǎng)絡(luò)運(yùn)用于數(shù)字識別的可行性與有效性。
數(shù)字識別是字符識別的一種,這里主要是運(yùn)用BP神經(jīng)網(wǎng)絡(luò)對0,1,2,3,4,5,6,7,8,9這十個(gè)阿拉伯?dāng)?shù)字進(jìn)行精確的識別。
數(shù)字識別通常都會分為好幾個(gè)過程,以便按部就班地進(jìn)行,減少差錯和失誤,而數(shù)字識別在神經(jīng)網(wǎng)絡(luò)中的進(jìn)程大致分為數(shù)字輸入、預(yù)處理、特征提取、模式匹配、判決、識別6個(gè)過程。
設(shè)計(jì)一個(gè)適當(dāng)?shù)腂P神經(jīng)網(wǎng)絡(luò),要求可以正確識別10個(gè)阿拉伯?dāng)?shù)字,當(dāng)它們在受到一定的噪聲干擾影響時(shí),也可以較好地進(jìn)行識別。
1.3.1 BP神經(jīng)網(wǎng)絡(luò)的創(chuàng)建
利用newff函數(shù)生成BP神經(jīng)網(wǎng)絡(luò),此函數(shù)存在新舊兩個(gè)版本,這里采用的是新版本,若直接使用會導(dǎo)致識別率偏低,并且與舊版本所得效果相差較大。造成此問題的原因是因?yàn)樾掳姹局械纳窠?jīng)網(wǎng)絡(luò)函數(shù)把訓(xùn)練集分成了3份,即訓(xùn)練集train set,驗(yàn)證集validation set和測試集test set,默認(rèn)比例為6∶2∶2。
針對本次實(shí)驗(yàn)中BP網(wǎng)絡(luò)構(gòu)建,由于訓(xùn)練數(shù)據(jù)少,訓(xùn)練集必須要完全保留進(jìn)行訓(xùn)練,否則訓(xùn)練的效果會出現(xiàn)很大的偏差。所以我們通過將網(wǎng)絡(luò)的divideFcn屬性置空,達(dá)到高精度實(shí)驗(yàn)效果。
1) 構(gòu)建網(wǎng)絡(luò)傳輸函數(shù)的選用
三層網(wǎng)絡(luò)結(jié)構(gòu),只涉及隱含層與輸出層的傳輸函數(shù)。一般的,隱含層選用tansig和logsig函數(shù),輸出層選用tansig和purelin函數(shù),此處比較時(shí)訓(xùn)練函數(shù)選用默認(rèn)函數(shù)。不同傳遞函數(shù)對識別效果的影響如表1所示。
表1 隱含層與輸出層不同函數(shù)比較
經(jīng)比較得出,隱含層使用tansig函數(shù),輸出層使用purelin函數(shù)可以得到較好效果。
2) 構(gòu)建網(wǎng)絡(luò)訓(xùn)練函數(shù)的選用
訓(xùn)練函數(shù)通常包含以下幾種:動態(tài)自適應(yīng)學(xué)習(xí)率下降函數(shù)(traingda),L_M訓(xùn)練函數(shù)(trainlm),動量反傳和動態(tài)自適應(yīng)梯度下降訓(xùn)練函數(shù)(traindx),梯度下降訓(xùn)練函數(shù)(traingd),動量反傳梯度下降函數(shù)(traingdm)。不同訓(xùn)練函數(shù)對識別效果的影響如表2所示。
表2 不同訓(xùn)練函數(shù)對誤差識別率的影響比較
經(jīng)過比較得出結(jié)論:使用traingda訓(xùn)練函數(shù)可以得到最佳結(jié)果。
1.3.2 BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練和仿真
BP神經(jīng)網(wǎng)絡(luò)構(gòu)建完成之后,接下來要用樣本數(shù)據(jù)對其進(jìn)行訓(xùn)練,在此要注意所用的樣本數(shù)據(jù)必須是合理的。最好使用理想樣本和加噪樣本相結(jié)合的數(shù)據(jù)。一般情況下,使用train函數(shù)來實(shí)施訓(xùn)練,使用sim函數(shù)進(jìn)行仿真。
1.3.3 總體設(shè)計(jì)步驟
設(shè)計(jì)BP人工神經(jīng)網(wǎng)絡(luò)共分五步。
1) 輸入輸出設(shè)計(jì)——設(shè)計(jì)數(shù)字點(diǎn)陣(0~9)
以數(shù)字9為例,剩余數(shù)字不再一一列舉。
{1 1 1 1 1
1 0 0 0 1
1 0 0 0 1
1 1 1 1 1
0 0 0 0 1
0 0 0 0 1
1 1 1 1 1}
2) 創(chuàng)建BP網(wǎng)絡(luò)
確定好網(wǎng)絡(luò)結(jié)構(gòu),設(shè)定好滿足要求的網(wǎng)絡(luò)輸入、輸出,就可運(yùn)用MATLAB自帶的神經(jīng)網(wǎng)絡(luò)工具箱中的函數(shù)創(chuàng)建訓(xùn)練網(wǎng)絡(luò)。
3) 產(chǎn)生帶噪聲的數(shù)字點(diǎn)陣
在原有數(shù)字點(diǎn)陣的基礎(chǔ)上,使用隨機(jī)函數(shù)對數(shù)字點(diǎn)陣加噪。
4) 數(shù)字識別測試
當(dāng)含有指定噪聲的數(shù)字點(diǎn)陣進(jìn)入到之前已經(jīng)訓(xùn)練好的BP人工神經(jīng)網(wǎng)絡(luò)中時(shí),頁面會顯示出它的識別結(jié)果,由于網(wǎng)絡(luò)之前經(jīng)過了訓(xùn)練,所以往往誤差極小。
5) 結(jié)果分析
對最終測試的結(jié)果進(jìn)行比較分析,從而驗(yàn)證BP網(wǎng)絡(luò)用于數(shù)字識別的可行性與有效性。
以BP神經(jīng)網(wǎng)絡(luò)理論為基礎(chǔ),通過使用MATLAB神經(jīng)網(wǎng)絡(luò)工具箱中提供的函數(shù),實(shí)現(xiàn)數(shù)字識別。
2.1.1 BP神經(jīng)網(wǎng)絡(luò)建立網(wǎng)絡(luò)對象函數(shù)
net=newff(P,T,S,{TF1,...,TFN},BTF)
其相關(guān)參數(shù)的含義如表3所示。
表3 BP神經(jīng)網(wǎng)絡(luò)建立網(wǎng)絡(luò)對象函數(shù)相關(guān)參數(shù)
2.1.2 神經(jīng)網(wǎng)絡(luò)的訓(xùn)練函數(shù)
[net,train]=train(net,P,T)
其相關(guān)參數(shù)的含義如表4所示。
表4 神經(jīng)網(wǎng)絡(luò)的訓(xùn)練函數(shù)相關(guān)參數(shù)
2.1.3 神經(jīng)網(wǎng)絡(luò)的仿真函數(shù)
Y=sin(net,P)
其相關(guān)參數(shù)的含義如表5所示。
表5 神經(jīng)網(wǎng)絡(luò)的仿真函數(shù)相關(guān)參數(shù)
在確定輸入樣本以及函數(shù)基本參數(shù)后利用newff函數(shù)訓(xùn)練建立神經(jīng)網(wǎng)絡(luò)。
為了使結(jié)果不具有偶然性,這里采用產(chǎn)生隨機(jī)數(shù)的方法來更改點(diǎn)陣進(jìn)行加噪。例如對3和9進(jìn)行加噪,這其中,噪聲強(qiáng)弱是可變的。其余數(shù)字方法類似在此不做列舉。
使用上百個(gè)具有不同強(qiáng)度噪聲的數(shù)字點(diǎn)陣測試網(wǎng)絡(luò)的可靠性,通過plot函數(shù)直觀呈現(xiàn)網(wǎng)絡(luò)識別效果,從而驗(yàn)證識別網(wǎng)絡(luò)系統(tǒng)的識別性能。
利用工具箱中的函數(shù),讓帶有噪聲的數(shù)字點(diǎn)陣作為輸入進(jìn)入到構(gòu)建好的網(wǎng)絡(luò)中,之后對其進(jìn)行識別和分析。這里用數(shù)字3和9舉例說明,其他數(shù)字方法與此相類似,用BP學(xué)習(xí)算法進(jìn)行訓(xùn)練,經(jīng)過多次迭代計(jì)算后得到趨于精度值的預(yù)測曲線,得出誤識率與噪聲方差的關(guān)系,然后對數(shù)字進(jìn)行識別。
經(jīng)過訓(xùn)練后的BP神經(jīng)網(wǎng)絡(luò)誤差曲線如圖1所示。
圖1 訓(xùn)練誤差曲線圖
圖1可以看出,采用BP學(xué)習(xí)算法所獲得的訓(xùn)練誤差曲線中,在經(jīng)過202次迭代計(jì)算后,訓(xùn)練曲線逐漸趨于預(yù)期的精度值0.001。
噪聲的均值為0,和方差則是從0到0.5以0.05的間隔,采用這樣的模型來進(jìn)行系統(tǒng)仿真。
現(xiàn)在對已設(shè)計(jì)好的網(wǎng)絡(luò)輸入任意加有不同強(qiáng)度噪聲的數(shù)字點(diǎn)陣,在原有理想訓(xùn)練樣本的基礎(chǔ)上,產(chǎn)生100組含有該類型的樣本,之后進(jìn)行仿真實(shí)驗(yàn)。根據(jù)仿真結(jié)果計(jì)算出這100組樣本的誤識率,得到網(wǎng)絡(luò)誤識率與噪聲強(qiáng)度的變化曲線如圖2所示。
圖2 誤識率與噪聲強(qiáng)度的變化關(guān)系圖
圖2中,實(shí)線所代表的是經(jīng)過了理想樣本訓(xùn)練的網(wǎng)絡(luò)對數(shù)字識別的誤識率的變化。根據(jù)圖2我們可以看出,隨著噪聲和方差的逐步變大,網(wǎng)絡(luò)的誤識率呈現(xiàn)出一步步上升的趨勢,噪聲方差低于0.15時(shí)誤識率為零,可以完全正確識別。在噪聲方差低于0.3之前,網(wǎng)絡(luò)誤識率是很小的,基本可以實(shí)現(xiàn)數(shù)字的正確識別。
用已設(shè)計(jì)好的神經(jīng)網(wǎng)絡(luò)對含有噪聲的數(shù)字9進(jìn)行識別。含有噪聲的數(shù)字9的點(diǎn)陣如圖3所示,經(jīng)過神經(jīng)網(wǎng)絡(luò)識別過后數(shù)字9的識別結(jié)果如圖4所示。
從圖3和圖4分析可以看出,對網(wǎng)絡(luò)進(jìn)行生成與訓(xùn)練、仿真后,訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)正確地識別出了數(shù)字9。
圖3 含有噪聲的數(shù)字9的位圖
圖4 識別結(jié)果
利用BP神經(jīng)網(wǎng)絡(luò)的識別能力,將BP神經(jīng)網(wǎng)絡(luò)運(yùn)用到一個(gè)實(shí)例中,識別了包含不同噪聲的數(shù)字0到9,并且針對不同噪聲強(qiáng)度的樣本進(jìn)行仿真。之后的仿真結(jié)果充分表明,BP神經(jīng)網(wǎng)絡(luò)在噪聲強(qiáng)度小于0.3的時(shí)候是可以正確地識別出數(shù)字的,另外只要不斷地調(diào)整仿真的迭代步數(shù)是能夠有效提高網(wǎng)絡(luò)的容錯能力的。