河南師范大學新聯學院 程聰河南師范大學新聯學院 阮瑩開封市兒童醫院 李舸
BP神經網絡的研究及應用
河南師范大學新聯學院程聰1河南師范大學新聯學院阮瑩2開封市兒童醫院李舸3
摘要:人工神經網絡的應用領域非常廣泛,其中大部分的人工神經網絡模型采用BP網絡,它也是前饋網絡的核心部分,體現了人工神經網絡最精華的部分。通過對BP算法的研究,提出了利用它來實現對我國的三大產業數據的預測方案。并在MATLAB仿真中取得了很好的效果。
關鍵詞:BP神經網絡;MATLAB仿真
中圖分類號:TP183
文獻標識碼:A
文章編號:1671-864X(2015)03-0181-02
BP(Back Propagation)網絡是1986年由Rumelhart和McCelland為首的科學家小組提出,是一種按誤差逆傳播算法訓練的多層前饋網絡,是目前應用最廣泛的神經網絡模型之一。它的學習規則是使用最速下降法,通過反向傳播來不斷調整網絡的權值和閾值,使網絡的誤差平方和最小。BP一般為多層神經網絡,其模型拓撲結構一般包括輸入層(input)、隱層(hide layer)和輸出層(output layer)。如圖1所示:
(一)最速下降BP算法(steepest descent backpropagation,SDBP)
如圖2所示的BP神經網絡,設k為迭代次數,則每一次權值和閾值的修正案下式進行:
式中:w(t)為第k次迭代各層之間的連接權向量或閾值向量。x(k)=為第k次迭代的神經網絡輸出誤差對個權值或閾值的梯度向量。負號代表梯度的反方向,即梯度的最速下降方向。α為學習速率,在訓練時事一常數。在MATLAB神經網絡工具箱中,其默認值為0.01,可以通過改變訓練參數進行設置。EK為第k次迭代的網絡輸出的總誤差性能函數,在MATLAB神經網絡工具箱中,BP網絡誤差性能函數的默認值為均誤差MSE(mean square error)∶
根據(2.2)式,可以求出第k次迭代的總誤差曲面的梯度x(k)=,分別代入式(2.1)中,就可以逐次修正其權值和閾值,并使總的誤差向減小的方向變化,最終求出所要求的誤差性能。
(二)沖量BP算法(momentum backpropagation,MOBP)
因為反向傳播算法的應用廣泛,所以已經開發出了很多反向傳播算法的變體。其中最常見得事在梯度下降算法的基礎上修改公式(2.1)的權值更新法則,即引入沖量因子η,并且0≤η<1的常數。更新后的公式為:
標準BP算法實質上是一種簡單的最速下降靜態尋優方法,在修正W(K)時,只按照第K步的負梯度方向進行修正,而沒有考慮到以前積累的經驗,即以前時刻的梯度方向,從而常常使學習過程發生振蕩,收斂緩慢。動量法權值調整算法的具體做法是:將上一次權值調整量的一部分迭加到按本次誤差計算所得的權值調整量上,作為本次的實際權值調整量,即公式(2.3)所示:η是沖量系數,通常0≤η<1;α為學習率,范圍在0.001~1之間。這種方法所加的沖量因子實際上相當于阻尼項,它減小了學習過程中的振蕩趨勢,來改善收斂性。沖量法降低了網絡對誤差曲面局部細節的敏感性,有效的抑制了網絡陷入局部極小值。
(三)學習率可變的BP算法(variable learnling rate backpropagation, VLBP)
標準BP算法收斂速度緩慢的一個重要原因是學習率選擇不當,學習率選得太小,收斂慢;反之,則有可能修正的過頭,導致振蕩甚至發散。因此可以采用圖3所示的自適應方法調整學習率。
自適應調整學習率的梯度下降算法,在訓練的過程中,力求使算法穩定,而同時又使學習的不長盡量地大,學習率則是根據局部誤差曲面作出相應的調整。學習率則是通過乘上一個相應的增量因子來調整學習率的大小。即公式(2.5)所示:
其中:Kinc為使步長增加的增量因子,Kdec為使步長減小的增量因子;α為學習率。
BP預測模型的設計主要有輸入層、隱含層、輸出層及各層的個數和層與層之間的傳輸函數。
(一)網絡層數
BP有一個輸入層和一個輸出層,但可以包含多個隱含層。但理論的上已證明,在不限制隱含層節點的情況下,只有一個隱含層的BP就可以實現任意非線性映射。
(二)輸入層和輸出層的節點數
輸入層是BP的第一層,它的節點數由輸入的信號的維數決定,這里輸入層的個數為3;輸出層的節點數取決于BP的具體應用有關,這里輸出節點為1。
(三)隱含層的節點數
隱含層節點數的選擇往往是根據前人設計所得的經驗和自己的進行的實驗來確定的。根據前人經驗,可以參考以下公式設計:
其中:n為隱含層節點數;m為輸入節點數;t為輸出節點數;a為1~10之間的常數。根據本文要預測的數據及輸入和輸出節點的個數,則取隱含層個數為10。
(四)傳輸函數
BP神經網絡中的傳輸函數通常采用S(sigmoid)型函數:
如果BP神經網絡的最后一層是Sigmoid函數,那么整個網絡的輸出就會限制在0~1之間的連續;而如果選的是Pureline函數,那么整個網絡輸出可以取任意值。因此函數選取分別為sigmoid和pureline函數。
(一)樣本數據的預處理
本文的樣本數據來源于中國歷年國內生產總值統計表,為了讓樣本數據在同一數量級上,首先對BP輸入和輸出數據進行預處理:將原樣本數據乘上0.0001,同時將樣本數據分為訓練樣本集和測試樣本集,1991~1999年我國的三大產業的各總值的處理結果作為訓練樣本集,即1991~1998年訓練樣本作為訓練輸入;1999年訓練樣本數據作為輸出訓練輸出;1992~2000年我國的三大產業的各總值的處理結果作為測試樣本集,即1992~1999年的測試樣本作為測試輸入,2000年測試樣本數據作為測試輸出。
(二)確定傳輸函數
根據本文的數據,如第3節所述,本文選取S函數(tansig)和線性函數(purelin)。
(三)設定BP的最大學習迭代次數為5000次。
(四)設定BP的學習精度為0.001;BP的學習率為0.1。
(五)創建BP結構如圖4所示;訓練BP的結果圖5所示:
正如圖5所示的數據與本文所示設計的網絡模型相符,且如圖5所示當BP神經網絡學習迭代到99次時,就達到了學習精度0.000997788,其學習速度比較快。
(六)測試BP神經網絡
通過MATLAB對測試樣本數據進行仿真,與實際的2000年我國三大產業的各生產總值比較(見表1),說明BP神經網絡預測模型是可行的。

表1 2000年我國三大產業的各生產總值
總之,在人工神經網絡的實際應用中,BP神經網絡廣泛應用于函數逼近、模式識別/分類、數據壓縮等。通過本文可以體現出MATLAB語言在編程的高效、簡潔和靈活。雖然BP在預測方面有很多的優點,但其還有一定的局限性,還需要進一步的改進。
參考文獻:
[1]周開利,康耀紅.神經網絡模型及其MATLAB仿真程序設計[M].北京∶清華大學出版社,2005.7
[2]張德豐等.MATLAB神經網絡應用設計[M].北京∶機械工業出版社,2009.1
[3](美)米歇爾(Mitchell,T.M.)著;曾華軍等譯.北京∶機械工業出版社,2003.1
[4]豈興明等編著.MATLAB7.0程序設計快速入門[M].北京∶人民郵電出版社,2009.7
[5]李正學.神經網絡理論及其在股市短期預測中的應用[D].長春∶吉林大學,2004
1.程聰(1981--)河南省開封市人畢業于河南財經政法大學計算機應用技術專業數字圖像處理方向
2.阮瑩河南師范大學新聯學院畢業于河南科技大學計算機應用技術專業
3.李舸開封市兒童醫院畢業于河南大學護理學院兒童護理智能技術專業
作者簡介: