資源描述:
《BP算法實(shí)現(xiàn)字母識別.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、基于BP網(wǎng)絡(luò)多層感知機(jī)的字母識別摘要:本次實(shí)驗(yàn)主要使用了BP神經(jīng)網(wǎng)絡(luò)方法對給定的英文字母A-Z進(jìn)行識別,并對應(yīng)輸出0-25表示識別成功。考慮的干擾因素的存在,在實(shí)驗(yàn)中分別測試了隱藏16%和33%樣本數(shù)據(jù)的效果,使得網(wǎng)絡(luò)具有一定的容錯能力。本次實(shí)驗(yàn)程序的編寫主要使用了C語言。關(guān)鍵詞:BP神經(jīng)網(wǎng)絡(luò);模式識別;C語言一、實(shí)驗(yàn)?zāi)康?.了解BP神經(jīng)網(wǎng)絡(luò)的原理與實(shí)現(xiàn)方法。?2.了解BP神經(jīng)網(wǎng)絡(luò)各種優(yōu)化算法的特點(diǎn)。3.通過實(shí)驗(yàn)分析BP網(wǎng)絡(luò)的識別和容錯性能。?4.熟悉C語言編程的基本方法。二、實(shí)驗(yàn)工具與方法1.BP網(wǎng)絡(luò)簡介20世紀(jì)8
2、0年代中期,學(xué)者Rumelhart、McClelland和他們的同事提出了多層前饋網(wǎng)絡(luò)MFNN(MutltilayerFeedforward?Neural?Networks)的反向傳播學(xué)習(xí)算法,簡稱BP網(wǎng)絡(luò)(Back?Propagation?Network)學(xué)習(xí)算法。BP網(wǎng)絡(luò)是對非線性可微分函數(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ò)主要作用于以下幾個方面:(1)函數(shù)逼近:用輸入矢量和相應(yīng)的輸出矢量訓(xùn)練一個網(wǎng)絡(luò)來逼近一個函數(shù)。(2)模式識別:用一
3、個特定的輸出矢量將它與輸入矢量聯(lián)系起來。(3)分類:把輸入矢量以所定義的合適的方式進(jìn)行分類。(4)數(shù)據(jù)壓縮:減少輸出矢量的維數(shù)以便于數(shù)據(jù)傳輸或存儲。2.BP算法實(shí)現(xiàn)具體步驟BP神經(jīng)網(wǎng)絡(luò)是一種多層前饋神經(jīng)網(wǎng)絡(luò),該網(wǎng)絡(luò)的主要特點(diǎn)是信號前向傳遞,誤差反向傳播。在前向傳遞中,輸入信號從輸入層經(jīng)隱含層逐層處理,直至輸出層。每一層的神經(jīng)元狀態(tài)只影響下一層神經(jīng)元狀態(tài)。如果輸出層得不到期望輸出,則轉(zhuǎn)入反向傳播,根據(jù)預(yù)測誤差調(diào)整網(wǎng)絡(luò)權(quán)值和閾值,從而使BP神經(jīng)網(wǎng)絡(luò)預(yù)測輸出不斷逼近期望輸出。BP神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)如圖1所示。P1w1w2T
4、1P2。。。。。。TmPn輸入層隱藏層輸出層圖1BP神經(jīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖圖1中P1,P2,……,Pn是BP神經(jīng)網(wǎng)絡(luò)的輸入值,T1,T2,……Tm是BP神經(jīng)的預(yù)測值,w1和w2為BP神經(jīng)網(wǎng)絡(luò)權(quán)值。從圖1可以看出,BP神經(jīng)網(wǎng)絡(luò)可以看成一個非線性函數(shù),網(wǎng)絡(luò)輸入值和預(yù)測值分別為該函數(shù)的自變量和因變量。當(dāng)輸入節(jié)點(diǎn)數(shù)為n,輸出節(jié)點(diǎn)數(shù)為m時,BP神經(jīng)網(wǎng)絡(luò)就表達(dá)了從n個自變量到m個因變量的函數(shù)映射關(guān)系。BP神經(jīng)網(wǎng)絡(luò)預(yù)測前首先要訓(xùn)練網(wǎng)絡(luò),通過訓(xùn)練使網(wǎng)絡(luò)具有聯(lián)想記憶和預(yù)測能力。BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程包括以下幾個步驟。?步驟1:網(wǎng)絡(luò)初始化。
5、根據(jù)系統(tǒng)輸入輸出序列(p,t)確定網(wǎng)絡(luò)輸入層節(jié)點(diǎn)數(shù)n,隱含層節(jié)點(diǎn)數(shù)x,輸出層節(jié)點(diǎn)數(shù)m。初始化輸入層、隱含層和輸出層神經(jīng)元之間的連接權(quán)值w、偏值b和學(xué)習(xí)速度a,還需要選擇合適的激勵函數(shù)。一般而言,初試權(quán)值和偏值是隨機(jī)產(chǎn)生的較小實(shí)數(shù)。w步驟2:一輪學(xué)習(xí)結(jié)束時,初始化各層前向輸出值和各層敏感性,主要完成置0工作。步驟3:前向傳播計(jì)算。根據(jù)公式,a0=p0,an=fn(wn*an-1+bn)計(jì)算網(wǎng)絡(luò)最終輸出值an,更新實(shí)際誤差e。步驟4:敏感性計(jì)算。根據(jù)公式,首先逆推出sn,然后依次反向計(jì)算出sn-1-s1。步驟5:權(quán)值、偏
6、值更新。根據(jù)步驟4所得各層敏感性更新權(quán)值w和對應(yīng)偏值b。步驟6:一輪迭代結(jié)束后,驗(yàn)證平均誤差:e是否滿足誤差要求E,若滿足要求,則訓(xùn)練學(xué)習(xí)完成;若不滿足誤差要求,就返回步驟2進(jìn)行下一輪迭代,如此反復(fù)直到滿足誤差要求或者達(dá)到最大迭代次數(shù),最終訓(xùn)練學(xué)習(xí)完成。三、實(shí)驗(yàn)內(nèi)容1.網(wǎng)絡(luò)的設(shè)計(jì)與實(shí)驗(yàn)前的預(yù)處理工作網(wǎng)絡(luò)的設(shè)計(jì):網(wǎng)絡(luò)的選擇如圖2所示:圖2網(wǎng)絡(luò)的結(jié)構(gòu)如圖2所示,本次實(shí)驗(yàn)所用的網(wǎng)絡(luò)有一個輸入層,一個隱含層,一個輸出層,網(wǎng)絡(luò)結(jié)構(gòu)為30-30-1。p為待輸入的學(xué)習(xí)(識別)向量,維數(shù)為30*1,w1為第一層權(quán)值,維數(shù)30*30,
7、w2為第二層權(quán)值,維數(shù)30*1,b1為第一層偏值,維數(shù)30*1,b2為第二層偏值,維數(shù)1*1,a1為第一層輸出,維數(shù)30*1,a2為網(wǎng)絡(luò)最后的輸出。激勵函數(shù)分為兩種,第一種是S型函數(shù),另一種是y=x直線函數(shù)?;舅枷耄豪梅聪騻鞑ニ惴▽?shí)現(xiàn)對A-Z圖像的識別,使得輸入圖像A-Z,對應(yīng)輸出0-25。再次基礎(chǔ)上討論下BP的性能和容錯能力。預(yù)處理工作:字符識別是模式識別領(lǐng)域的一項(xiàng)傳統(tǒng)課題,這是因?yàn)樽址R別不是一個孤立的問題,而是模式識別領(lǐng)域中大多數(shù)課題都會遇到的基本問題,并且在不同的課題中,由于具體的條件不同,解決的方法也不
8、盡相同,因而字符識別的研究仍具有理論和實(shí)踐意義。這里討論的是用BP神經(jīng)網(wǎng)絡(luò)對26個英文字母的識別。在對字母進(jìn)行識別之前,首先必須將字母進(jìn)行預(yù)處理,即將待識別的26個字母中的每一個字母都通過的方格形式進(jìn)行數(shù)字化處理,其有數(shù)據(jù)的位置設(shè)為1,其他位置設(shè)為-1。如圖3給出了字母A、B和C的數(shù)字化過程,然后用一個1×30的向量表示。例如圖3中字母A的數(shù)字