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