




已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
用BP算法實(shí)現(xiàn)數(shù)字字符(0-9)識別F0303033班 5030309906 戴海鵬 人工智能導(dǎo)論字符識別是模式識別領(lǐng)域的一項(xiàng)傳統(tǒng)的課題,這是因?yàn)樽址R別不是一個孤立的問題,而是模式識別領(lǐng)域中大多數(shù)課題都會遇到的基本問題,并且在不同的課題中,由于具體的條件不同,解決的方法也不盡相同,因而字符識別的研究仍具有理論和實(shí)踐意義。這里討論的是用神經(jīng)網(wǎng)絡(luò)識別數(shù)字的問題. 人工神經(jīng)網(wǎng)絡(luò)模式識別方法是近些年提出的新方法,為字符識別研究提供了一種新手段,它具有一些傳統(tǒng)技術(shù)所沒有的優(yōu)點(diǎn):良好的容錯能力、分類能力強(qiáng)、并行處理能力和自學(xué)習(xí)能力。因而,采用神經(jīng)網(wǎng)絡(luò)識別方式是一種很好的選擇。神經(jīng)網(wǎng)絡(luò)的字符識別系統(tǒng)是神經(jīng)網(wǎng)絡(luò)模式識別系統(tǒng)的一種,原理是一致的。一般神經(jīng)網(wǎng)絡(luò)字符識別系統(tǒng)由預(yù)處理,特征提取和神經(jīng)網(wǎng)絡(luò)分類器組成。預(yù)處理就是將原始數(shù)據(jù)中的無用信息刪除,平滑,二值化和進(jìn)行幅度歸一化等。神經(jīng)網(wǎng)絡(luò)字符識別系統(tǒng)中的特征提取部分不一定存在,這樣就分為兩大類:(1)有特征提取部分的:這一類系統(tǒng)實(shí)際上是傳統(tǒng)方法與神經(jīng)網(wǎng)絡(luò)方法技術(shù)的結(jié)合,這種方法可以充分利用人的經(jīng)驗(yàn)來獲取模式特征以及神經(jīng)網(wǎng)絡(luò)分類能力來識別字符。特征提取必須能反應(yīng)整個字符的特征。但它的抗干擾能力不如第2類。(2)無特征提取部分的:省去特征抽取,整個字符直接作為神經(jīng)網(wǎng)絡(luò)的輸入(有人稱此種方式是使用字符網(wǎng)格特征),這種方式下,系統(tǒng)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的復(fù)雜度大大增加了,輸入模式維數(shù)的增加導(dǎo)致了網(wǎng)絡(luò)規(guī)模的龐大。此外,神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)需要完全自己消除模式變形的影響。但是網(wǎng)絡(luò)的抗干擾性能好,識別率高。構(gòu)造神經(jīng)網(wǎng)絡(luò)分類器首先要選擇適當(dāng)?shù)木W(wǎng)絡(luò)結(jié)構(gòu):神經(jīng)網(wǎng)絡(luò)分類器的輸入就是數(shù)字字符的特征向量;神經(jīng)網(wǎng)絡(luò)分類器的輸出節(jié)點(diǎn)應(yīng)該是字符數(shù)。10個數(shù)字輸出層就有個10個神經(jīng)元,每個神經(jīng)元代表一個數(shù)字;隱層數(shù)要選好,每層神經(jīng)元數(shù)要合適,目前有很多采用一層隱層的網(wǎng)絡(luò)結(jié)構(gòu)。然后要選擇適當(dāng)?shù)膶W(xué)習(xí)算法,這樣才會有很好的識別效果。在學(xué)習(xí)階段應(yīng)該用大量的樣本進(jìn)行訓(xùn)練學(xué)習(xí),通過樣本的大量學(xué)習(xí)對神經(jīng)網(wǎng)絡(luò)的各層網(wǎng)絡(luò)的連接權(quán)值進(jìn)行修正,使其對樣本有正確的識別結(jié)果,這就像人記數(shù)字一樣,網(wǎng)絡(luò)中的神經(jīng)元就像是人腦細(xì)胞,權(quán)值的改變就像是人腦細(xì)胞的相互作用的改變,神經(jīng)網(wǎng)絡(luò)在樣本學(xué)習(xí)中就像人記數(shù)字一樣,學(xué)習(xí)樣本時的網(wǎng)絡(luò)權(quán)值調(diào)整就相當(dāng)于人記住各個數(shù)字的形象,網(wǎng)絡(luò)權(quán)值就是網(wǎng)絡(luò)記住的內(nèi)容,網(wǎng)絡(luò)學(xué)習(xí)階段就像人由不認(rèn)識數(shù)字到認(rèn)識數(shù)字反復(fù)學(xué)習(xí)過程是一樣的。神經(jīng)網(wǎng)絡(luò)是按整個特征向量的整體來記憶數(shù)字的,只要大多數(shù)特征符合曾學(xué)習(xí)過的樣本就可識別為同一字符,所以當(dāng)樣本存在較大噪聲時神經(jīng)網(wǎng)絡(luò)分類器仍可正確識別。在字符識別階段,只要將輸入進(jìn)行預(yù)處理,特征提取后的特征向量作為神經(jīng)網(wǎng)絡(luò)分類器的輸入,經(jīng)過網(wǎng)絡(luò)的計(jì)算,分類器的輸出就是識別結(jié)果。 這里我們采用BP神經(jīng)網(wǎng)絡(luò)來進(jìn)行車輛字符的識別。BP網(wǎng)絡(luò)是采用Widrow-Hoff學(xué)習(xí)算法和非線性可微轉(zhuǎn)移函數(shù)的多層網(wǎng)絡(luò)。一個典型的BP網(wǎng)絡(luò)采用的是梯度下降算法,也就是Widrow-Hoff算法所規(guī)定的。backpropagation就是指的為非線性多層網(wǎng)絡(luò)計(jì)算梯度的方法。一個典型的BP網(wǎng)絡(luò)結(jié)構(gòu)如圖所示:我們將它用向量圖表示如下: 其中:對于第k個模式對,輸出層單元的j的加權(quán)輸入為 ,該單元的實(shí)際輸出為 ,而隱含層單元i的加權(quán)輸入為 ,該單元的實(shí)際輸出為 ,函數(shù)f為可微分遞減函數(shù) 。其算法描述如下:(1)初始化網(wǎng)絡(luò)及學(xué)習(xí)參數(shù),如設(shè)置網(wǎng)絡(luò)初始權(quán)矩陣、學(xué)習(xí)因子等。(2)提供訓(xùn)練模式,訓(xùn)練網(wǎng)絡(luò),直到滿足學(xué)習(xí)要求。(3)前向傳播過程:對給定訓(xùn)練模式輸入,計(jì)算網(wǎng)絡(luò)的輸出模式,并與期望模式比較,若有誤差,則執(zhí)行(4);否則,返回(2)。(4)后向傳播過程:a.計(jì)算同一層單元的誤差;b.修正權(quán)值和閾值;c.返回(2)我采用Matlab來模擬用神經(jīng)網(wǎng)絡(luò)進(jìn)行車牌照數(shù)字識別這一過程。作為對比,一種采用提取特征部分的方法,一組采用無特征部分提取的方法。 下面就開始用BP網(wǎng)絡(luò)的思想來設(shè)計(jì)實(shí)現(xiàn)一個真正的實(shí)際的神經(jīng)網(wǎng)絡(luò)。BP網(wǎng)絡(luò)的一個重要的用途就是用于模式識別。我們的任務(wù)是要設(shè)計(jì)并訓(xùn)練出一個可行、高效的BP網(wǎng)絡(luò),以實(shí)現(xiàn)對0到9共10個加噪聲后的數(shù)字和識別。這里,數(shù)字采用了55共25點(diǎn)陣的形式,使用美觀的數(shù)碼管字體。首先,要選擇一種編碼方式。這里要求的是點(diǎn)陣直接01編碼的方式。 比如,對于數(shù)字1,可以編碼為:0 0 1 0 00 0 1 0 00 0 1 0 00 0 1 0 00 0 1 0 0但是,上圖只是理想圖像系統(tǒng)得到的結(jié)果,實(shí)際中的圖像系統(tǒng)總會存在一些噪聲干擾或者是非線性因素。設(shè)計(jì)的網(wǎng)絡(luò)要不僅能夠?qū)硐氲妮斎胂蛄窟M(jìn)行很好的分類,也要對含有誤差的輸入向量有合理的準(zhǔn)確度。在本問題中,10個含25個元素的輸入向量被定義成一個輸入向量矩陣number。目標(biāo)向量也被定義成一個變量targets,每個目標(biāo)向量含有10個元素。向量代表某個數(shù)字,則其對應(yīng)位置的元素值為1,而其他位置的元素值為0。例如,數(shù)字0對應(yīng)的向量,其第一個位置的元素值為1(因?yàn)?是數(shù)字09中的第一個數(shù)字),而從第210個位置的元素值均為0。設(shè)計(jì)的網(wǎng)絡(luò)把25個布爾值作為一個具有25個元素的輸入向量。需要網(wǎng)絡(luò)通過輸出一個具有10個元素的輸出向量來區(qū)分?jǐn)?shù)字。這個10元素向量的每一個代表著一個數(shù)字。在正常運(yùn)行的情況下,對于一個輸入數(shù)字,網(wǎng)絡(luò)要能輸出一個向量,它的對應(yīng)位置元素值為1,其他的值為0。除此之外,網(wǎng)絡(luò)還必須能夠有容錯能力。在實(shí)際中,網(wǎng)絡(luò)不可能接收到一個理想的布爾向量作為輸入。假設(shè)設(shè)計(jì)的網(wǎng)絡(luò)能夠有一定的容錯能力,對于輸入向量,若其噪聲均值為0,標(biāo)準(zhǔn)差不大于0.2,則能夠分辨出來。為了辨別數(shù)字,所設(shè)計(jì)的網(wǎng)絡(luò)需要有25個輸入,在輸出層,則需要有10個神經(jīng)元。我們設(shè)計(jì)一個有兩層結(jié)構(gòu)的log-sigmoid/log-sigmoid網(wǎng)絡(luò)。之所以選擇log-sigmoid函數(shù),是因?yàn)樗妮敵龇秶?到1)正好適合學(xué)習(xí)后輸出布爾值。在網(wǎng)絡(luò)的隱含層(第一層)設(shè)計(jì)了10神經(jīng)元。關(guān)于神經(jīng)元的數(shù)組選擇不僅需要經(jīng)驗(yàn)也還要有猜測的成分。訓(xùn)練網(wǎng)絡(luò)就是要使其將輸出向量中正確的位置設(shè)置為1,其余位置全為0。然而,由于噪聲信號的引入,網(wǎng)絡(luò)就可能不會輸出正確的1或0信號。在網(wǎng)絡(luò)被訓(xùn)練后,將帶有噪聲的數(shù)字信號輸入網(wǎng)絡(luò),就會在正確的位置上得到1和0。當(dāng)數(shù)字?jǐn)?shù)據(jù)混入噪聲時,可以看作是對0、1數(shù)據(jù)進(jìn)行簡單的隨機(jī)反轉(zhuǎn)。比如說,要加入10%的噪聲,那就可以對2至3個0或者1進(jìn)行反轉(zhuǎn)。反轉(zhuǎn)哪一個,這里是隨機(jī)的。如上圖,經(jīng)噪聲干擾后的0編碼為:0 0 1 1 00 0 1 0 00 1 1 0 00 0 1 0 00 0 0 0 0 圖中,加下劃線的斜體部分就是噪聲。在編程時實(shí)際的做法是將均勻分布的噪聲疊加在訓(xùn)練樣本上,例如加噪10%時,對于每個節(jié)點(diǎn):一. Matlab編程1.1.使用函數(shù)newff創(chuàng)建一個兩層網(wǎng)絡(luò)。S1=10;R,Q=size(number);S2,Q=size(targets);Pnumber;net=newff(minmax(P),S1 S2,logsiglogsig,traingdx);net.LW2,1=net.LW2,1*0.01;net.b2=net.b2*0.01;為了使產(chǎn)生的網(wǎng)絡(luò)對輸入向量有一定的容錯能力,最好的辦法是既使用理想的信號和又使用帶有噪聲的信號對網(wǎng)絡(luò)進(jìn)行訓(xùn)練。我們的具體做法是先用理想的輸入信號對網(wǎng)絡(luò)進(jìn)行訓(xùn)練,直到平方和誤差足夠小。接下來,使用10組理想信號和帶有噪聲的信號對網(wǎng)絡(luò)進(jìn)行訓(xùn)練。在輸入帶有誤差的向量時,要輸入兩倍重復(fù)的無誤差信號,這樣做的目的是為了保證網(wǎng)絡(luò)在分辨理想輸入向量時的穩(wěn)定性。在網(wǎng)絡(luò)進(jìn)行了上述的訓(xùn)練以后,網(wǎng)絡(luò)對無誤差的信號可能也會采用對付帶有噪聲信號的辦法。這樣做就會付出較大的代價(jià)。因此,我們可以再一次訓(xùn)練網(wǎng)絡(luò)。這一次就只使用理想的向量進(jìn)行訓(xùn)練。這樣就可以保證在輸入端輸入理想數(shù)字信號時,網(wǎng)絡(luò)能夠最好地對其做出反應(yīng)。以上所有的訓(xùn)練都是使用BP網(wǎng)絡(luò)來實(shí)現(xiàn)的。網(wǎng)絡(luò)學(xué)習(xí)的速率和沖量參數(shù)設(shè)置為自適應(yīng)改變。使用函數(shù)trainbpx進(jìn)行快速訓(xùn)練。1.2.無噪聲的訓(xùn)練開始時使用無噪聲的信號對網(wǎng)絡(luò)進(jìn)行訓(xùn)練。當(dāng)訓(xùn)練時間達(dá)到5000個時間單位或者是網(wǎng)絡(luò)平方和誤差小于0.001時停止網(wǎng)絡(luò)的訓(xùn)練。輸入訓(xùn)練樣本為:number1=0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0; % 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1; % 2 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1; % 3 1 0 1 0 0 1 0 1 0 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 0; % 4 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1; % 5 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1; % 6 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1; % 7 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1; % 8 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1; % 9 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1; % 0的轉(zhuǎn)置。輸出目標(biāo)向量為:targets=1 0 0 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0 0; 0 0 0 1 0 0 0 0 0 0; 0 0 0 0 1 0 0 0 0 0; 0 0 0 0 0 1 0 0 0 0; 0 0 0 0 0 0 1 0 0 0; 0 0 0 0 0 0 0 1 0 0; 0 0 0 0 0 0 0 0 1 0; 0 0 0 0 0 0 0 0 0 1;訓(xùn)練過程誤差變化情況可通過MATLAB進(jìn)行觀察。下面進(jìn)行無噪聲訓(xùn)練,訓(xùn)練結(jié)束條件:最大次數(shù)5000,誤差平方和為0.001;P=number;T=targets;net.performFcn=sse;net.trainParam.goal=0.001;net.trainParam.show=10;net.trainParam.epochs=5000;net.trainParam.mc=0.95;net,tr=train(net,P,T);從Matlab 程序運(yùn)行主窗口可以得到一次訓(xùn)練過程的誤差變化情況如下:TRAINGDX, Epoch 0/5000, SSE 24.6758/0.001, Gradient 11.1211/1e-006TRAINGDX, Epoch 10/5000, SSE 14.9317/0.001, Gradient 6.45664/1e-006TRAINGDX, Epoch 20/5000, SSE 10.3002/0.001, Gradient 2.71067/1e-006TRAINGDX, Epoch 30/5000, SSE 8.8988/0.001, Gradient 0.935004/1e-006TRAINGDX, Epoch 40/5000, SSE 8.6348/0.001, Gradient 0.647037/1e-006TRAINGDX, Epoch 50/5000, SSE 8.5208/0.001, Gradient 0.71758/1e-006TRAINGDX, Epoch 60/5000, SSE 8.21807/0.001, Gradient 0.779685/1e-006TRAINGDX, Epoch 70/5000, SSE 7.59446/0.001, Gradient 0.723299/1e-006TRAINGDX, Epoch 80/5000, SSE 6.83991/0.001, Gradient 0.867937/1e-006TRAINGDX, Epoch 90/5000, SSE 5.58366/0.001, Gradient 0.653499/1e-006TRAINGDX, Epoch 100/5000, SSE 4.06306/0.001, Gradient 0.56084/1e-006TRAINGDX, Epoch 110/5000, SSE 2.53431/0.001, Gradient 0.38593/1e-006TRAINGDX, Epoch 120/5000, SSE 1.17375/0.001, Gradient 0.295479/1e-006TRAINGDX, Epoch 130/5000, SSE 0.322258/0.001, Gradient 0.114873/1e-006TRAINGDX, Epoch 140/5000, SSE 0.0754051/0.001, Gradient 0.0374297/1e-006TRAINGDX, Epoch 150/5000, SSE 0.0248915/0.001, Gradient 0.0143682/1e-006TRAINGDX, Epoch 160/5000, SSE 0.0108384/0.001, Gradient 0.00538902/1e-006TRAINGDX, Epoch 170/5000, SSE 0.00593896/0.001, Gradient 0.00301417/1e-006TRAINGDX, Epoch 180/5000, SSE 0.00367134/0.001, Gradient 0.00179562/1e-006TRAINGDX, Epoch 190/5000, SSE 0.0023838/0.001, Gradient 0.000994086/1e-006TRAINGDX, Epoch 200/5000, SSE 0.00160969/0.001, Gradient 0.000633002/1e-006TRAINGDX, Epoch 210/5000, SSE 0.00110437/0.001, Gradient 0.000424074/1e-006TRAINGDX, Epoch 213/5000, SSE 0.00098557/0.001, Gradient 0.000374607/1e-006TRAINGDX, Performance goal met.Ep的收斂曲線為:1.3.含有噪聲信號的訓(xùn)練為了保證設(shè)計(jì)的網(wǎng)絡(luò)對噪聲不敏感,可用理想的數(shù)字向量和加了噪聲的數(shù)字表向量分別訓(xùn)練網(wǎng)絡(luò)。設(shè)置向數(shù)字表加入的噪聲信號平均值分別為0.1和0.2。這樣就可以保證神經(jīng)元網(wǎng)絡(luò)學(xué)會在辨別帶噪聲信號的數(shù)字表向量時,也能對理想的數(shù)字向量有正確的識別。另外,設(shè)置網(wǎng)絡(luò)對含噪聲信號的向量進(jìn)行訓(xùn)練的最大時間為12000個單位時間,并且把誤差參數(shù)也增加到0.006。之所以要提高誤差參數(shù),是因?yàn)檫@次的訓(xùn)練向量(其中一些向量含有誤差)增加了四倍。1.4.再次對無噪聲信號訓(xùn)練上面已經(jīng)用含噪聲的信號對網(wǎng)絡(luò)進(jìn)行了訓(xùn)練,為了保證網(wǎng)絡(luò)總是能夠正確地對理想輸入進(jìn)行分類,我們需要再一次用無噪聲的理想信號對網(wǎng)絡(luò)進(jìn)行訓(xùn)練。其代碼如下:P=number;T=targets;net.performFcn=sse;net.trainParam.goal=0.001;net.trainParam.show=10;net.trainParam.epochs=5000;net.trainParam.mc=0.95;net,tr=train(net,P,T);二 系統(tǒng)性能評估為了測試我們設(shè)計(jì)的網(wǎng)絡(luò)模式識別系統(tǒng)的可靠性,我們用數(shù)百個加入了不同數(shù)量的噪聲的數(shù)字向量作為輸入,來觀察其輸出結(jié)果。(系統(tǒng)性能評估的代碼見附頁)在本問題中,使用不同級別的誤差信號,并且繪制理論網(wǎng)絡(luò)識別率與噪聲信號的比較的曲線。如下圖所示:加到網(wǎng)絡(luò)輸入向量上的噪聲均值為0,標(biāo)準(zhǔn)差范圍為00.5。在每個噪聲級別上,分別有100個不同版本的噪聲信號被加到每個數(shù)字向量上,然后用設(shè)計(jì)的網(wǎng)絡(luò)計(jì)算其輸出。將輸出通過競爭傳遞函數(shù),保證10個輸出(代表09中的數(shù)字)中只有一個的值為1,其余均為0。上圖中靠上的紅線顯示的是既經(jīng)過噪聲信號又經(jīng)過非噪聲信號訓(xùn)練后的網(wǎng)絡(luò)的可靠性。而靠下的藍(lán)線顯示的則是同樣的網(wǎng)絡(luò)只經(jīng)過非噪聲信號而沒有經(jīng)過噪聲信號訓(xùn)練的網(wǎng)絡(luò)的可靠性。從以上的曲線可以看出,網(wǎng)絡(luò)經(jīng)過含噪聲信號的輸入訓(xùn)練后,其容錯能力有了較明顯的增強(qiáng)。它們各自在加噪為10%、20%和30%是的識別率用表格表示為:識別率加噪為10%加噪為20%加噪為30%既經(jīng)過噪聲信號又經(jīng)過非噪聲信號訓(xùn)練后的網(wǎng)絡(luò)77.9%54.6%34.0%只經(jīng)過非噪聲信號而沒有經(jīng)過噪聲信號訓(xùn)練的網(wǎng)絡(luò)73.1%49.0%29.8%當(dāng)輸入向量的誤差平均值為0或0.05時,網(wǎng)絡(luò)識別沒有錯誤。但是當(dāng)誤差平均值達(dá)到0.2時,兩個網(wǎng)絡(luò)都開始產(chǎn)生誤差。如果需要有更高的精度,一種辦法是增長網(wǎng)絡(luò)的訓(xùn)練時間,另一種辦法是增加網(wǎng)絡(luò)隱含層的神經(jīng)元數(shù)目。當(dāng)然,把輸入的數(shù)字向量從55的網(wǎng)格增加到66的網(wǎng)絡(luò)也是一種辦法。另外,如果網(wǎng)絡(luò)要求對誤差信號有更高的可靠性,還可以在訓(xùn)練時增加輸入向量的誤差的數(shù)量。為了測試系統(tǒng),可試驗(yàn)幾個實(shí)際的數(shù)字,并對它們加入誤差信號,然后把它們輸入到網(wǎng)絡(luò)中,觀察其得到的輸出,如下圖所示:加噪為10%時,識別1、2、3的結(jié)果為:加噪為20%時,識別1、2、3的結(jié)果為:加噪為30%時,識別1、2、3的結(jié)果為:由圖可以看出,網(wǎng)絡(luò)較正確地識別了這些數(shù)字。所以本設(shè)計(jì)是比較成功的。源程序?yàn)椋? number1 10 X 25 為系統(tǒng)輸入的轉(zhuǎn)置number1=0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0; % 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1; % 2 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1; % 3 1 0 1 0 0 1 0 1 0 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 0; % 4 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1; % 5 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1; % 6 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1; % 7 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1; % 8 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1; % 9 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1; % 0number=number1;% number 為系統(tǒng)輸入矢量targets=eye(10);% targets 為目標(biāo)矢量%下面使用函數(shù)newff創(chuàng)建一個兩層網(wǎng)絡(luò)。S1=10;R,Q=size(number);S2,Q=size(targets);P=number;net=newff(minmax(P),S1 S2,logsig logsig,traingdx);net.LW2,1=net.LW2,1*0.01;net.b2=net.b2*0.01;%下面進(jìn)行無噪聲訓(xùn)練%訓(xùn)練結(jié)束條件:最大次數(shù)5000,誤差平方和為0.001;P=number;T=targets;net.performFcn=sse;net.trainParam.goal=0.001;net.trainParam.show=10;net.trainParam.epochs=5000;net.trainParam.mc=0.95;net,tr=train(net,P,T);%下面進(jìn)行含噪聲信號的訓(xùn)練netn=net;netn.trainParam.goal=0.006;netn.trainParam.epochs=12000;T=targets targets targets targets;for pass=1:10 E1=rand(25,10); E2=rand(25,10); for m=1:25 for n=1:10 if(E1(m,n)*10010) E1(m,n)=1; else E1(m,n)=0; end; if(E2(m,n) *10020) E2(m,n)=1; else E2(m,n)=0; end; end; end; P=number,number,. rem(number+E1,2),. rem(number+E2,2);netn,tr=train(netn,P,T);end%下面網(wǎng)絡(luò)再次對無誤差輸入信號進(jìn)行訓(xùn)練P=number;T=targets;netn.performFcn=sse;netn.trainParam.goal=0.001;netn.trainParam.show=10;netn.trainParam.epochs=5000;netn.trainParam.mc=0.95;netn,tr=train(netn,P,T);%pause;%下面代碼用來測試網(wǎng)絡(luò)容錯性noise_range=0:0.05:0.5;max_test=100;T=targets;for i=1:11 noise_level(i)=noise_range(i); errors1(i)=0; errors2(i)=0; for j=1:max_test E=rand(25,10); for m=1:25 for n=1:10 if(E(m,n)noise_range(i) E(m,n)=1; else E(m,n)=0; end; end; end; P=rem(number+E,2); %測試未經(jīng)誤差訓(xùn)練的網(wǎng)絡(luò) A=sim(net,P); AA=compet(A); errors1(i)=errors1(i)+sum(sum(abs(AA-T)/2; %測試經(jīng)過誤差訓(xùn)練的網(wǎng)絡(luò) An=sim(netn,P); AAn=compet(An); errors2(i)=errors2(i)+sum(sum(abs(AAn-T)/2; end;end;%pausecorrect1=1-errors1/1000;correct2=1-errors2/1000;figureplot(noise_range,correct1,r-,noise_range,correct2);title(識別率);xlabel(噪聲指標(biāo));ylabel(未經(jīng)誤差訓(xùn)練的網(wǎng)絡(luò) - 經(jīng)過誤差訓(xùn)練的網(wǎng)絡(luò)-);%對實(shí)際含噪聲的數(shù)字進(jìn)行識別err=0.3; for index=1:1:3 E=rand(25,1); for m=1:25 if(E(m,1)err) E(m,1)=1; else E(m,1)=0; end; end; noisyJ=rem(number(:,index)+E,2); e=index; subplot(2,3,e); plotchar(noisyJ); A2=sim(net,noisyJ); A2=compet(A2); answer=find(compet(A2)=1); subplot(2,3,e+3); plotchar(number(:,answer); end;fprintf(程序運(yùn)行成功結(jié)束!);附:另外還有一種理解噪聲的方式,即認(rèn)為所加載的噪聲是正態(tài)分布的,當(dāng)加噪為10%時,就是將標(biāo)準(zhǔn)正態(tài)分布的噪聲乘以10%疊加在訓(xùn)練樣本上,例如加噪10%的噪聲可以為:0.1157 -0.0408 -0.1564 0.2796 0.13980.1724 0.0627 -0.2090 -0.0606 -0.08630.0344 -0.0579 -0.0468 0.0583 -0.03260.0585 -0.0320 -0.1959 -0.1036 0.14710.1770 0.1310 -0.0191 -0.0718 -0.0347這是的Matlab編程與前面的方法相比較為簡單,相對的區(qū)別是輸入的訓(xùn)練樣本為:P=number+randn(25,10)*noise_level(i);而之上的輸入訓(xùn)練樣本表示形式為:E=rand(25,10); for m=1:25 for n=1:10 if(E(m,n)noise_range(i) E(m,n)=1; else E(m,n)=0; end; end; end; P=rem(number+E,2);類似的,使用不同級別的誤差信號,并且繪制理論網(wǎng)絡(luò)識別率與噪聲信號的比較的曲線。如下圖所示:上圖中靠上的紅線顯示的是既經(jīng)過噪聲信號又經(jīng)過非噪聲信號訓(xùn)練后的網(wǎng)絡(luò)的可靠性。而靠下的藍(lán)線顯示的則是同樣的網(wǎng)絡(luò)只經(jīng)過非噪聲信號而沒有經(jīng)過噪聲信號訓(xùn)練的網(wǎng)絡(luò)的可靠性。各自在加噪為10%、20%和30%是的識別率用表格表示為:識別率加噪為10%加噪為20%加噪為30%既經(jīng)過噪聲信號又經(jīng)過非噪聲信號訓(xùn)練后的網(wǎng)絡(luò)100%98.7%89.3%只經(jīng)過非噪聲信號而沒有經(jīng)過噪聲信號訓(xùn)練的網(wǎng)絡(luò)100%98.2%89.0%可見,用這種方式理解的噪聲的識別率比之前的識別率大大提高了。加噪為10%時,識別1、2、3的結(jié)果為:加噪為20%時,識別1、2、3的結(jié)果為:加噪為30%時,識別1、2、3的結(jié)果為:源程序?yàn)椋? number1 10 X 25 為系統(tǒng)輸入的轉(zhuǎn)置number1=0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0; % 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1; % 2 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1; % 3 1 0 1 0 0 1 0 1 0 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 0; % 4 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1; % 5 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1; % 6 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1; % 7 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1; % 8 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1; % 9 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1; % 0number=number1;% number 為系統(tǒng)輸入矢量targets=eye(10);% targets 為目標(biāo)矢量%下面使用函數(shù)newff創(chuàng)建一個兩層網(wǎng)絡(luò)。S1=10;R,Q=size(number);S2,Q=size(targets);P=number;net=newff(minmax(P),S1 S2,logsig logsig,traingdx);net.LW2,1=net.LW2,1*0.01;net.b2=net.b2*0.01;%下面進(jìn)行無噪聲訓(xùn)練%訓(xùn)練結(jié)束條件:最大次數(shù)5000,誤差平方和為0.001;P=number;T=targets;net.performFcn=sse;net.trainParam.goal=0.001;net.trainParam.show=10;net.trai
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 谷物磨制企業(yè)戰(zhàn)略規(guī)劃與市場定位策略考核試卷
- 藥用提取設(shè)備與有效成分分析考核試卷
- 紡織面料鞋的廢舊資源再利用技術(shù)考核試卷
- 紙張印刷與印后加工考核試卷
- 羽絨加工企業(yè)工藝優(yōu)化與成本降低實(shí)踐考核試卷
- 車輛信息安全與隱私保護(hù)技術(shù)考核試卷
- 傳染病敗血癥診療與防控要點(diǎn)
- 寵物美容連鎖店品牌加盟、技術(shù)培訓(xùn)與設(shè)備租賃合同
- 綠色環(huán)保住宅售后返租投資協(xié)議
- 婚前商標(biāo)權(quán)權(quán)屬爭議調(diào)解及執(zhí)行協(xié)議
- 園林綠化安全培訓(xùn)課件
- DB14T 3231-2025安全風(fēng)險(xiǎn)分級管控和隱患排查治理雙重預(yù)防機(jī)制建設(shè)通則
- 八省聯(lián)考陜西試題及答案
- 腔隙性腦梗塞護(hù)理常規(guī)
- 2025年入團(tuán)積極分子培訓(xùn)考試題庫及答案
- 人工智能在價(jià)格預(yù)測中的應(yīng)用-深度研究
- 《新聞傳播學(xué)》課件
- Unit 3 The world of Science 大單元教學(xué)設(shè)計(jì)-2023-2024學(xué)年高中英語外研版(2019)必修第三冊
- 延邊大學(xué)《物聯(lián)網(wǎng)技術(shù)1》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024年山東省濟(jì)南市中考英語試題卷(含答案解析)
- 2025中考英語作文預(yù)測:19個熱點(diǎn)話題及范文
評論
0/150
提交評論