陳 鵬
(福建省電子產(chǎn)品監(jiān)督檢驗(yàn)所,福建 福州 350003)
人工神經(jīng)網(wǎng)絡(luò)廣泛應(yīng)用于非線性場(chǎng)合。在經(jīng)濟(jì)預(yù)測(cè)、機(jī)器故障識(shí)別[1]、無損探測(cè)[2]等領(lǐng)域反向誤差傳播學(xué)習(xí)算法網(wǎng)絡(luò)(簡(jiǎn)稱BP神經(jīng)網(wǎng)絡(luò))占有一席之地,是目前人工神經(jīng)網(wǎng)絡(luò)應(yīng)用最廣泛的模型之一。本研究針對(duì)較為常見的單隱含層BP神經(jīng)網(wǎng)絡(luò)進(jìn)行分析、編程和驗(yàn)證。總的說來,商業(yè)軟件功能相當(dāng)強(qiáng)大;然而商業(yè)軟件無論在費(fèi)用、物理平臺(tái)或操作上都占用大量資源,所以有必要進(jìn)行研究,我們?cè)诶斫獾幕A(chǔ)上開發(fā)簡(jiǎn)單實(shí)用的小型軟件以滿足具體需求。另外,許多的網(wǎng)絡(luò)文章或者出版的中外書籍,都沒有全面闡明該單隱含層BP神經(jīng)網(wǎng)絡(luò)算法的應(yīng)用公式。本文利用Visua Basic 6.0編程,對(duì)單隱含層BP神經(jīng)網(wǎng)絡(luò)加以實(shí)現(xiàn),闡明了權(quán)值(weight)、偏置值(bias)的更新公式,同時(shí),為了避免局部極值的問題引入了動(dòng)量因子。以下給出軟件開發(fā)、設(shè)計(jì)原理和結(jié)果驗(yàn)證的闡述。
軟件主界面如圖1所示,該軟件允許用戶在文本文件中定義訓(xùn)練樣本和測(cè)試樣本的組數(shù)并輸入數(shù)據(jù);用戶可以定義BP神經(jīng)網(wǎng)絡(luò)的輸入層節(jié)點(diǎn)數(shù)、單隱含層節(jié)點(diǎn)數(shù)、輸出層節(jié)點(diǎn)數(shù)、迭代次數(shù)限制和要求精度。在主界面中,用戶輸入學(xué)習(xí)率(learning rate)和動(dòng)量因子(momentum factor)。當(dāng)滿足要求時(shí),軟件自動(dòng)從文本文件中讀入訓(xùn)練樣本數(shù)據(jù),并動(dòng)態(tài)產(chǎn)生用來存儲(chǔ)數(shù)據(jù)的數(shù)組,然后對(duì)數(shù)據(jù)歸一化處理,接著運(yùn)行BP神經(jīng)網(wǎng)絡(luò)算法,最后將各種數(shù)據(jù)制成文本文件加以保存。這其中包括處理歸一化后的樣本數(shù)據(jù)、樣本的極值、各層的初始化權(quán)值、隱含層和輸出層的偏置值以及最終的各個(gè)權(quán)值和偏置值。另外,軟件也保存預(yù)測(cè)值這一最重要的數(shù)據(jù)。軟件允許用戶根據(jù)具體的預(yù)測(cè)項(xiàng)目方便地修改文本文件,如更改輸入/輸出和隱含層的節(jié)點(diǎn)數(shù),從而達(dá)到較理想的預(yù)測(cè)效果。
圖1 軟件主界面
關(guān)于BP單隱含層神經(jīng)網(wǎng)絡(luò)公式的推導(dǎo)過程,有一些值得參考的出處[3-5],本文不再重復(fù),但這些推導(dǎo)過程也各有欠缺,有的只論述了權(quán)值的更新而沒有偏置值的更新,有的論述了權(quán)值和偏置值更新但沒論述使用動(dòng)量因子的情形。綜合這些論述,我們給出簡(jiǎn)潔方便的公式結(jié)果以方便讀者使用。本軟件假設(shè)隱含層和輸出層的激勵(lì)函數(shù)均為簡(jiǎn)化的Sigmoid函數(shù),即:
定義yk是輸出層k上的激勵(lì)函數(shù)值,tk是其上的期望值,于是輸出層總誤差為:
設(shè)α是學(xué)習(xí)率,i,j,k分別是輸入層、隱含層和輸出層的序號(hào),δ是誤差,ω是權(quán)值,b是偏置值,則從隱含層到輸出層就有:
對(duì)于輸入層到隱含層,類似有:
此時(shí)引入動(dòng)量因子η,于是對(duì)于從隱含層到輸出層的情況,就有:
上述公式就是本軟件的開發(fā)基礎(chǔ)。另外,必須將使用的數(shù)據(jù)進(jìn)行歸一化處理再進(jìn)行輸入值、輸出值、權(quán)值和偏置值等的處理。這里采用以下公式:
在系統(tǒng)訓(xùn)練好做出預(yù)測(cè)之后,必須進(jìn)行反歸一化以便得到恰當(dāng)?shù)念A(yù)測(cè)結(jié)果數(shù)據(jù)。
為了檢驗(yàn)軟件的可用性和編程的正確性,使用了兩種方法:曲線擬合和簡(jiǎn)單字符識(shí)別。對(duì)于曲線擬合,我們假設(shè)有下列函數(shù):
為減少數(shù)據(jù)量,將各輸入變量的值限定于(0,5]區(qū)間,隨機(jī)選取20組數(shù)據(jù)形成訓(xùn)練樣本。另外選取20組數(shù)據(jù)作為測(cè)試樣本。定義本軟件的BP神經(jīng)網(wǎng)絡(luò)的輸入層節(jié)點(diǎn)數(shù)為3,輸出層節(jié)點(diǎn)數(shù)為1,隱含層節(jié)點(diǎn)數(shù)為5或者8,則在學(xué)習(xí)率為0.01以及動(dòng)量因子為0.5時(shí)都獲得了較好的訓(xùn)練學(xué)習(xí)效果。在設(shè)定要求的總誤差為不大于0.07并且隱含層節(jié)點(diǎn)數(shù)為8時(shí),軟件迭代了46425次就獲得了不錯(cuò)的曲線擬合效果。其中的訓(xùn)練樣本和測(cè)試樣本數(shù)據(jù)見表1。訓(xùn)練過程中神經(jīng)網(wǎng)絡(luò)的誤差曲線以及預(yù)測(cè)樣本期望值,與訓(xùn)練后神經(jīng)網(wǎng)絡(luò)對(duì)預(yù)測(cè)樣本的預(yù)測(cè)值的擬合曲線分別見圖2和圖3。
圖2 訓(xùn)練過程誤差曲線
圖3 預(yù)測(cè)樣本期望值與預(yù)測(cè)值曲線
表1 輸入輸出數(shù)據(jù)樣本集(Y是期望值)
對(duì)于字符識(shí)別,我們以字母A的判定來舉例[3]。為簡(jiǎn)化問題,假設(shè)字符像素矩陣為[5,6],圖4從左至右前兩圖為部分訓(xùn)練樣本、最后一圖為測(cè)試樣本。訓(xùn)練樣本值舉例見表2。定義輸入層的節(jié)點(diǎn)數(shù)為5*6=30,輸出層的節(jié)點(diǎn)數(shù)為1,隱含層的節(jié)點(diǎn)數(shù)為5。字母A為真時(shí),其值為1。
圖4 字母A的簡(jiǎn)化像素圖[3]
表2 字母A的某個(gè)手寫體的像素值矩陣
從軟件的運(yùn)行看,上述例子的字符識(shí)別對(duì)于軟件來說是簡(jiǎn)單的,因?yàn)闃颖拘枰獢?shù)較少時(shí)軟件就能準(zhǔn)確識(shí)別?;趯W(xué)習(xí)率為0.1以及動(dòng)量因子為0.5時(shí),當(dāng)精度要求為0.02且迭代了73次后,預(yù)測(cè)值為0.9404669;當(dāng)精度要求為0.01時(shí)且迭代了143次后,預(yù)測(cè)值為0.977557,說明圖4的字母A被正確識(shí)別。
本文論述了一種比較簡(jiǎn)單易行且實(shí)用的基于VB編程的單隱含層BP神經(jīng)網(wǎng)絡(luò)編程原理及設(shè)計(jì)并給出結(jié)果驗(yàn)證。文章采用的公式可以方便研究人員編程學(xué)習(xí)借鑒。該軟件成功地進(jìn)行了曲線擬合,以及簡(jiǎn)單字符識(shí)別的測(cè)試,說明該軟件設(shè)計(jì)原理和編程是正確的。雖然與商業(yè)軟件比較,該軟件還有許多不足之處,但在一些需要BP神經(jīng)網(wǎng)絡(luò)分類或預(yù)測(cè)的應(yīng)用場(chǎng)合,可以合理運(yùn)行該軟件進(jìn)行處理。該軟件的用戶界面友好性有待進(jìn)一步提高。另外,還需增加輸出層的純線性激勵(lì)函數(shù)可選擇項(xiàng),從而使軟件的考慮更全面。在本軟件基礎(chǔ)上將來可以考慮包含兩個(gè)隱含層的BP神經(jīng)網(wǎng)絡(luò)編程設(shè)計(jì)。
參考文獻(xiàn)(References):
[1]I.N.Tansel,T.T.Arkan,W.Y.Bao,et al.Tool wear estimation in micro-machining.Part I:tool usage-cutting force relationship[J].International Journal of Machine Tools&Manufacture,2000.40(4):599-608
[2]I.N.Tansel,Feyzi Inanc,N.Reen,P.Chen,et al.Neural Network Based ThicknessEstimation from Multiple Radiographic Images[J]. Journal of Nondestructive Evaluation,2006.25(2):53-66
[3]Toshinori Munakata.Fundamentals of the New Aritificial Intelligence[M].2nd ed.London:Springer-Verlag,2008.
[4]James A.Freeman and David M.Skapura.Neural Networks:Algorithms,Applications,and Programming Techniques[M].New York:Addison-Wesley Publishing Company,1991.
[5]楊建剛.人工神經(jīng)網(wǎng)絡(luò)實(shí)用教程[M].浙江大學(xué)出版社,2001.