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