陳 鵬
(福建省電子產品監督檢驗所,福建 福州 350003)
人工神經網絡廣泛應用于非線性場合。在經濟預測、機器故障識別[1]、無損探測[2]等領域反向誤差傳播學習算法網絡(簡稱BP神經網絡)占有一席之地,是目前人工神經網絡應用最廣泛的模型之一。本研究針對較為常見的單隱含層BP神經網絡進行分析、編程和驗證。總的說來,商業軟件功能相當強大;然而商業軟件無論在費用、物理平臺或操作上都占用大量資源,所以有必要進行研究,我們在理解的基礎上開發簡單實用的小型軟件以滿足具體需求。另外,許多的網絡文章或者出版的中外書籍,都沒有全面闡明該單隱含層BP神經網絡算法的應用公式。本文利用Visua Basic 6.0編程,對單隱含層BP神經網絡加以實現,闡明了權值(weight)、偏置值(bias)的更新公式,同時,為了避免局部極值的問題引入了動量因子。以下給出軟件開發、設計原理和結果驗證的闡述。
軟件主界面如圖1所示,該軟件允許用戶在文本文件中定義訓練樣本和測試樣本的組數并輸入數據;用戶可以定義BP神經網絡的輸入層節點數、單隱含層節點數、輸出層節點數、迭代次數限制和要求精度。在主界面中,用戶輸入學習率(learning rate)和動量因子(momentum factor)。當滿足要求時,軟件自動從文本文件中讀入訓練樣本數據,并動態產生用來存儲數據的數組,然后對數據歸一化處理,接著運行BP神經網絡算法,最后將各種數據制成文本文件加以保存。這其中包括處理歸一化后的樣本數據、樣本的極值、各層的初始化權值、隱含層和輸出層的偏置值以及最終的各個權值和偏置值。另外,軟件也保存預測值這一最重要的數據。軟件允許用戶根據具體的預測項目方便地修改文本文件,如更改輸入/輸出和隱含層的節點數,從而達到較理想的預測效果。

圖1 軟件主界面
關于BP單隱含層神經網絡公式的推導過程,有一些值得參考的出處[3-5],本文不再重復,但這些推導過程也各有欠缺,有的只論述了權值的更新而沒有偏置值的更新,有的論述了權值和偏置值更新但沒論述使用動量因子的情形。綜合這些論述,我們給出簡潔方便的公式結果以方便讀者使用。本軟件假設隱含層和輸出層的激勵函數均為簡化的Sigmoid函數,即:

定義yk是輸出層k上的激勵函數值,tk是其上的期望值,于是輸出層總誤差為:

設α是學習率,i,j,k分別是輸入層、隱含層和輸出層的序號,δ是誤差,ω是權值,b是偏置值,則從隱含層到輸出層就有:

對于輸入層到隱含層,類似有:

此時引入動量因子η,于是對于從隱含層到輸出層的情況,就有:

上述公式就是本軟件的開發基礎。另外,必須將使用的數據進行歸一化處理再進行輸入值、輸出值、權值和偏置值等的處理。這里采用以下公式:

在系統訓練好做出預測之后,必須進行反歸一化以便得到恰當的預測結果數據。
為了檢驗軟件的可用性和編程的正確性,使用了兩種方法:曲線擬合和簡單字符識別。對于曲線擬合,我們假設有下列函數:

為減少數據量,將各輸入變量的值限定于(0,5]區間,隨機選取20組數據形成訓練樣本。另外選取20組數據作為測試樣本。定義本軟件的BP神經網絡的輸入層節點數為3,輸出層節點數為1,隱含層節點數為5或者8,則在學習率為0.01以及動量因子為0.5時都獲得了較好的訓練學習效果。在設定要求的總誤差為不大于0.07并且隱含層節點數為8時,軟件迭代了46425次就獲得了不錯的曲線擬合效果。其中的訓練樣本和測試樣本數據見表1。訓練過程中神經網絡的誤差曲線以及預測樣本期望值,與訓練后神經網絡對預測樣本的預測值的擬合曲線分別見圖2和圖3。

圖2 訓練過程誤差曲線

圖3 預測樣本期望值與預測值曲線

表1 輸入輸出數據樣本集(Y是期望值)
對于字符識別,我們以字母A的判定來舉例[3]。為簡化問題,假設字符像素矩陣為[5,6],圖4從左至右前兩圖為部分訓練樣本、最后一圖為測試樣本。訓練樣本值舉例見表2。定義輸入層的節點數為5*6=30,輸出層的節點數為1,隱含層的節點數為5。字母A為真時,其值為1。

圖4 字母A的簡化像素圖[3]

表2 字母A的某個手寫體的像素值矩陣
從軟件的運行看,上述例子的字符識別對于軟件來說是簡單的,因為樣本需要數較少時軟件就能準確識別。基于學習率為0.1以及動量因子為0.5時,當精度要求為0.02且迭代了73次后,預測值為0.9404669;當精度要求為0.01時且迭代了143次后,預測值為0.977557,說明圖4的字母A被正確識別。
本文論述了一種比較簡單易行且實用的基于VB編程的單隱含層BP神經網絡編程原理及設計并給出結果驗證。文章采用的公式可以方便研究人員編程學習借鑒。該軟件成功地進行了曲線擬合,以及簡單字符識別的測試,說明該軟件設計原理和編程是正確的。雖然與商業軟件比較,該軟件還有許多不足之處,但在一些需要BP神經網絡分類或預測的應用場合,可以合理運行該軟件進行處理。該軟件的用戶界面友好性有待進一步提高。另外,還需增加輸出層的純線性激勵函數可選擇項,從而使軟件的考慮更全面。在本軟件基礎上將來可以考慮包含兩個隱含層的BP神經網絡編程設計。
參考文獻(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]楊建剛.人工神經網絡實用教程[M].浙江大學出版社,2001.