《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 設(shè)計(jì)應(yīng)用 > 基于BP網(wǎng)絡(luò)的字母識(shí)別
基于BP網(wǎng)絡(luò)的字母識(shí)別
謝麗娟,,丁正生,,陳 俏
摘要: 介紹了用BP神經(jīng)網(wǎng)絡(luò)方法對(duì)英文字母進(jìn)行識(shí)別,并在識(shí)別過(guò)程中考慮了噪聲干擾及非線性因素的存在,,使網(wǎng)絡(luò)具有一定的容錯(cuò)能力,,并用MATLAB完成了對(duì)字母識(shí)別的模擬,。
Abstract:
Key words :

  摘  要: 介紹了用BP神經(jīng)網(wǎng)絡(luò)方法對(duì)英文字母進(jìn)行識(shí)別,,并在識(shí)別過(guò)程中考慮了噪聲干擾及非線性因素的存在,使網(wǎng)絡(luò)具有一定的容錯(cuò)能力,,并用MATLAB完成了對(duì)字母識(shí)別的模擬,。
    關(guān)鍵詞: BP神經(jīng)網(wǎng)絡(luò);模式識(shí)別,,MATLAB

   智能控制作為一門(mén)新興的交叉學(xué)科,,在許多方面都優(yōu)于傳統(tǒng)控制,而智能控制中的人工神經(jīng)網(wǎng)絡(luò)由于模仿人類(lèi)的神經(jīng)網(wǎng)絡(luò),,具有感知識(shí)別,、學(xué)習(xí)、聯(lián)想,、記憶,、推理等智能,,更是有著廣闊的發(fā)展前景,。其中最核心的是反向傳播網(wǎng)絡(luò)(Back Propagation Network),簡(jiǎn)稱(chēng)BP網(wǎng)絡(luò)[1],。本文介紹了運(yùn)用matlab工具箱確定隱層神經(jīng)元的個(gè)數(shù)和構(gòu)造BP神經(jīng)網(wǎng)絡(luò),,并用兩類(lèi)不同的數(shù)據(jù)對(duì)該神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,然后運(yùn)用訓(xùn)練后的網(wǎng)絡(luò)對(duì)字符進(jìn)行識(shí)別,。
1 BP網(wǎng)絡(luò)
1.1  BP網(wǎng)絡(luò)的簡(jiǎn)介
  20世紀(jì)80年代中期,,學(xué)者Rumelhart、McClelland和他們的同事提出了多層前饋網(wǎng)絡(luò)MFNN(Mutltilayer Feedforward Neural Networks)的反向傳播學(xué)習(xí)算法,,簡(jiǎn)稱(chēng)BP網(wǎng)絡(luò)(Back Propagation Network)學(xué)習(xí)算法,。BP網(wǎng)絡(luò)是對(duì)非線性可微分函數(shù)進(jìn)行權(quán)值訓(xùn)練的多層前向網(wǎng)絡(luò)。在人工神經(jīng)網(wǎng)絡(luò)的實(shí)際應(yīng)用中,,80%~90%的模型都采用BP網(wǎng)絡(luò)或其變化形式,。
BP網(wǎng)絡(luò)主要作用于以下幾個(gè)方面:
(1)函數(shù)逼近:用輸入矢量和相應(yīng)的輸出矢量訓(xùn)練一個(gè)網(wǎng)絡(luò)來(lái)逼近一個(gè)函數(shù);
(2)模式識(shí)別:用一個(gè)特定的輸出矢量將它與輸入矢量聯(lián)系起來(lái),;
(3)分類(lèi):把輸入矢量以所定義的合適的方式進(jìn)行分類(lèi),;
(4)數(shù)據(jù)壓縮:減少輸出矢量的維數(shù)以便于數(shù)據(jù)傳輸或存儲(chǔ)。
1.2  BP網(wǎng)絡(luò)模型
BP網(wǎng)絡(luò)是一種單向傳播的多層前向網(wǎng)絡(luò)[2],,每一層節(jié)點(diǎn)的輸出只影響下一層節(jié)點(diǎn)的輸出,,其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,其中X和U分別為網(wǎng)絡(luò)輸入,、輸出向量,,每個(gè)節(jié)點(diǎn)表示一個(gè)神經(jīng)元。網(wǎng)絡(luò)是由輸入層,、隱層和輸出層節(jié)點(diǎn)構(gòu)成,,隱層節(jié)點(diǎn)可為一層或多層,,同層節(jié)點(diǎn)沒(méi)有任何耦合,前層節(jié)點(diǎn)到后層節(jié)點(diǎn)通過(guò)權(quán)連接,。輸入信號(hào)從輸入層節(jié)點(diǎn)依次傳過(guò)各隱層節(jié)點(diǎn)到達(dá)輸出層節(jié)點(diǎn),。

 

 


2 字符識(shí)別問(wèn)題的描述及網(wǎng)絡(luò)識(shí)別前的預(yù)處理
字符識(shí)別是模式識(shí)別領(lǐng)域的一項(xiàng)傳統(tǒng)課題,這是因?yàn)樽址R(shí)別不是一個(gè)孤立的問(wèn)題,,而是模式識(shí)別領(lǐng)域中大多數(shù)課題都會(huì)遇到的基本問(wèn)題,,并且在不同的課題中,由于具體的條件不同,,解決的方法也不盡相同,,因而字符識(shí)別的研究仍具有理論和實(shí)踐意義。這里討論的是用BP神經(jīng)網(wǎng)絡(luò)對(duì)26個(gè)英文字母的識(shí)別,。
在對(duì)字母進(jìn)行識(shí)別之前,,首先必須將字母進(jìn)行預(yù)處理[3],即將待識(shí)別的26個(gè)字母中的每一個(gè)字母都通過(guò)的方格形式進(jìn)行數(shù)字化處理,,其有數(shù)據(jù)的位置設(shè)為1,,其他位置設(shè)為0。如圖2給出了字母A,、B和C的數(shù)字化過(guò)程,,然后用一個(gè)1×35的向量表示。例如圖2中字母A的數(shù)字化處理結(jié)果所得對(duì)應(yīng)的向量為:
LetterA=[00100010100101010001111111000110001]

 


由此可得每個(gè)字母由35個(gè)元素組成一個(gè)向量,。由26個(gè)標(biāo)準(zhǔn)字母組成的輸入向量被定義為一個(gè)輸入向量矩陣alphabet,,即神經(jīng)網(wǎng)絡(luò)的樣本輸入為一個(gè)35×26的矩陣。其中alphabet=[letterA,,letterB,,lettereC,……letterZ],。網(wǎng)絡(luò)樣本輸出需要一個(gè)對(duì)26個(gè)輸入字母進(jìn)行區(qū)分輸出向量,,對(duì)于任意一個(gè)輸入字母,網(wǎng)絡(luò)輸出在字母對(duì)應(yīng)的順序位置上的值為1,,其余為0,,即網(wǎng)絡(luò)輸出矩陣為對(duì)角線上為1的26×26的單位陣,定義為target=eye(26),。
本文共有兩類(lèi)這樣的數(shù)據(jù)作為輸入:一類(lèi)是理想的標(biāo)準(zhǔn)輸入信號(hào),;另一類(lèi)是在標(biāo)準(zhǔn)輸入信號(hào)中加上用MATLAB工具箱里的噪聲信號(hào),即randn函數(shù),。
3  網(wǎng)絡(luò)設(shè)計(jì)及其試驗(yàn)分析
為了對(duì)字母進(jìn)行識(shí)別,,所設(shè)計(jì)的網(wǎng)絡(luò)具有35個(gè)輸入節(jié)點(diǎn)和26個(gè)輸出節(jié)點(diǎn),對(duì)于隱含層節(jié)點(diǎn)的個(gè)數(shù)的選取在后面有詳細(xì)的介紹。目標(biāo)誤差為0.000 1,,從輸入層到隱層的激活函數(shù)采用了S型正切函數(shù)tansig,,從隱層到輸出層的激活函數(shù)采用了S型對(duì)數(shù)函數(shù)logsig,這是因?yàn)楹瘮?shù)的輸出位于區(qū)間[0,1]中,,正好滿(mǎn)足網(wǎng)絡(luò)輸出的要求,。
3.1  隱層節(jié)點(diǎn)個(gè)數(shù)的確定
根據(jù)BP網(wǎng)絡(luò)的設(shè)計(jì)目標(biāo),一般的預(yù)測(cè)問(wèn)題都可以通過(guò)單隱層的BP網(wǎng)絡(luò)實(shí)現(xiàn),。難點(diǎn)是隱層節(jié)點(diǎn)個(gè)數(shù)的選擇,,隱層節(jié)點(diǎn)數(shù)對(duì)網(wǎng)絡(luò)的學(xué)習(xí)和計(jì)算特性具有非常重要的影響,是該網(wǎng)絡(luò)結(jié)構(gòu)成敗的關(guān)鍵,。若隱層節(jié)點(diǎn)數(shù)過(guò)少,,則網(wǎng)絡(luò)難以處理復(fù)雜的問(wèn)題;但若隱層節(jié)點(diǎn)數(shù)過(guò)多,,則將使網(wǎng)絡(luò)學(xué)習(xí)時(shí)間急劇增加,,而且還可能導(dǎo)致網(wǎng)絡(luò)學(xué)習(xí)過(guò)度,抗干擾能力下降,。
目前為止,,還沒(méi)有完善的理論來(lái)指導(dǎo)隱層節(jié)點(diǎn)數(shù)的選擇,僅能根據(jù)Kolmogorov定理,,和單隱層的設(shè)計(jì)經(jīng)驗(yàn)公式[4],,并考慮本例的實(shí)際情況,,確定隱層節(jié)點(diǎn)個(gè)數(shù)應(yīng)該介于8~17之間,。
本文設(shè)計(jì)了一個(gè)隱層節(jié)點(diǎn)數(shù)目可變的BP網(wǎng)絡(luò),通過(guò)誤差對(duì)比,,確定最佳的隱層節(jié)點(diǎn)個(gè)數(shù),,具體程序如下:
[alphabet,targets]=prprob;
p=alphabet;
t=targets;
s=8:17;
res=zeros(1,10);
res2=zeros(1,10);
for i=1:10
fprintf('s(i)=%.0f\n',s(i));
net=newff(minmax(p),[s(i),26],{'tansig','logsig'},'traingdx');
net.trainParam.epochs=1000;
net.trainParam.goal=0.0001;
[net,tr]=train(net,p,t);
y=sim(net,p);
error=(y(1,:)-t(1,:)).^2;
error2=(y(2,:)-t(2,:)).^2;
res(i)=norm(error);
res2(i)=norm(error2);
pause
i=i+1;
end
通過(guò)網(wǎng)絡(luò)的輸出顯示以及網(wǎng)絡(luò)訓(xùn)練速度和精度因素,選取隱層節(jié)點(diǎn)的最佳個(gè)數(shù)為14,。
3.2 生成網(wǎng)絡(luò)
  使用函數(shù)newff創(chuàng)建一個(gè)兩層網(wǎng)絡(luò),,具體函數(shù)為:
[alphabet,targets]=prprob;
[R1,Q1]=size(alphabet)
[R2,Q2]=size(targets)
S1=14;
S2=R2;
net=newff(minmax(p),[S1 S2],{'tansig','logsig'},'trainlm')
net.LW{2,1}=net.LW{2,1}*0.01;
net.b{2}=net.b{2}*0.01;
3.3  網(wǎng)絡(luò)訓(xùn)練
  為了使產(chǎn)生的網(wǎng)絡(luò)對(duì)輸入向量有一定的容錯(cuò)能力,最好的辦法是使用理想的信號(hào)和帶有噪聲的信號(hào)對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,。使用不同信號(hào)的訓(xùn)練都是通過(guò)BP網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)的,。網(wǎng)絡(luò)學(xué)習(xí)的速率和沖量參數(shù)設(shè)置為自適應(yīng)改變,并使用函數(shù)trainlm進(jìn)行快速訓(xùn)練,。
3.3.1 理想樣本訓(xùn)練
首先用理想的輸入信號(hào)對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,,直到平方和誤差足夠小。下面進(jìn)行理想樣本訓(xùn)練,,訓(xùn)練結(jié)束條件為:最大次數(shù)為1 000,,誤差平方和為0.000 01。訓(xùn)練代碼如下:
net.performFcn='sse';
net.trainParam.goal=0.00001;
net.trainParam.show=5;
net.trainParam.epochs=1000;
net.trainParam.mc=0.95;
[net,tr]=train(net,p,t);
訓(xùn)練過(guò)程誤差變化情況可通過(guò)MATLAB進(jìn)行觀察,,訓(xùn)練結(jié)果為:
TRAINLM, Epoch 77/1000, SSE 6.58108e-006/1e-005, Gradient 8.03024e-005/1e-010
TRAINLM, Performance goal met.
可見(jiàn),,經(jīng)過(guò)77次訓(xùn)練后,,網(wǎng)絡(luò)誤差達(dá)到要求,結(jié)果如圖3所示,。

 

3.3.2  加噪樣本訓(xùn)練
為了保證設(shè)計(jì)的網(wǎng)絡(luò)對(duì)噪聲不敏感,,有必要用10組帶有噪聲的信號(hào)對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,設(shè)置向字母表加入的噪聲信號(hào)平均值分別為0.1和0.2,。這樣就可以保證神經(jīng)元網(wǎng)絡(luò)學(xué)會(huì)在辨別帶噪聲信號(hào)的字母表向量時(shí),,也能對(duì)理想的字母向量有正確的識(shí)別。同時(shí)在輸入帶有誤差的向量時(shí),,要輸入兩倍重復(fù)的無(wú)誤差信號(hào),,其目的是為了保證網(wǎng)絡(luò)在分辨理想輸入向量時(shí)的穩(wěn)定性。
在輸入理想樣本上加入噪聲的信號(hào)后,,網(wǎng)絡(luò)的訓(xùn)練過(guò)程誤差變化情況也可通過(guò)MATLAB進(jìn)行觀察,。選取其中的一組,觀察系統(tǒng)輸出結(jié)果如下:
TRAINLM, Epoch 30/1000, SSE 4.45738e-006/1e-005, Gradient 5.97808e-005/1e-010
TRAINLM, Performance goal met.
結(jié)果如圖4所示,。

 

3.3.3  再次用理想樣本訓(xùn)練
  在網(wǎng)絡(luò)進(jìn)行了上述的訓(xùn)練以后,,網(wǎng)絡(luò)對(duì)無(wú)誤差的信號(hào)可能也會(huì)采用對(duì)帶有噪聲信號(hào)的辦法。這樣做會(huì)付出較大的代價(jià),。因此,,必須再次使用理想的樣本進(jìn)行訓(xùn)練。這樣就可以保證在輸入理想數(shù)字信號(hào)時(shí),,網(wǎng)絡(luò)能夠最好地對(duì)其做出反應(yīng),。其訓(xùn)練代碼如下:
netn.trainParam.goal=0.00001;
netn.trainParam.epochs=1000;
netn.trainParam.show=5;
[netn,tr]=train(netn,p,t);
訓(xùn)練結(jié)果為:
TRAINLM, Epoch 0/1000, SSE 4.60127e-007/1e-005, Gradient 4.23932e-006/1e-010
TRAINLM, Performance goal met.
滿(mǎn)足要求。
3.4  對(duì)網(wǎng)絡(luò)進(jìn)行仿真和測(cè)試
  為了測(cè)試系統(tǒng)的可靠性,,本文用了加入不同級(jí)別的噪聲的字母樣本作為輸入,,來(lái)觀察用理想樣本和加噪樣本訓(xùn)練出來(lái)的網(wǎng)絡(luò)的性能,并繪制出誤識(shí)率曲線,,如圖5所示,。

 

  圖5其中虛線代表用無(wú)噪聲訓(xùn)練網(wǎng)絡(luò)的出錯(cuò)率,實(shí)線代表用有噪聲訓(xùn)練網(wǎng)絡(luò)的出錯(cuò)率,。從圖5可以看出,,在均值為0~0.05之間的噪聲環(huán)境下,兩個(gè)網(wǎng)絡(luò)都能夠準(zhǔn)確地進(jìn)行識(shí)別,。當(dāng)所加的噪聲均值超過(guò)0.05時(shí),,待識(shí)別字符在噪聲作用下不再接近于理想字符,無(wú)噪聲訓(xùn)練網(wǎng)絡(luò)的出錯(cuò)率急劇上升,,此時(shí)有噪聲訓(xùn)練網(wǎng)絡(luò)的性能較優(yōu),。
3.5 測(cè)試實(shí)例
  本文用一個(gè)含噪聲的字母F作為網(wǎng)絡(luò)輸入,并繪出含噪聲的字母F,其輸出語(yǔ)句為:
noisyF=alphabet(:,6)+randn(35,1)*0.2,;plotchar(noisyF) ,;
其結(jié)果如圖6所示。

 

  然后再用訓(xùn)練后的網(wǎng)絡(luò)進(jìn)行識(shí)別,,其識(shí)別語(yǔ)句為:
A2=sim(net,noisyF);
A2=compet(A2);
answer=find(compet(A2)==1),。識(shí)別結(jié)果如圖7所示。

 

本文利用BP網(wǎng)絡(luò)對(duì)有噪聲的字母進(jìn)行識(shí)別和仿真,,結(jié)果表明此網(wǎng)絡(luò)具有聯(lián)想記憶和抗干擾功能,,對(duì)字母具有一定的辨識(shí)能力,是一種對(duì)字母識(shí)別的有效方法,。
參考文獻(xiàn)
[1] 侯媛彬, 杜京義, 汪梅. 神經(jīng)網(wǎng)絡(luò)[M].西安:西安電子科技大學(xué)出版社, 2007.
[2] 叢 爽. 面向MATLAB工具箱的神經(jīng)網(wǎng)絡(luò)理論與應(yīng)用[M]. 北京:中國(guó)科學(xué)技術(shù)大學(xué)出版社, 1998.
[3] 叢 爽, 陸婷婷. 用于英文字母識(shí)別的三種人工神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)[J]. 儀器儀表學(xué)報(bào), 2006,27(6):2242-2244.
[4] 孟娜, 周以齊. 基于Matlab的時(shí)序數(shù)據(jù)兩種建模和預(yù)測(cè)方法比較. 山東農(nóng)業(yè)大學(xué)學(xué)報(bào),,2006, 37(3):471-476.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。