摘要:BP學習算法是一種單向傳播的多層前向網絡,Matlab中的神經網絡工具箱是以人工神經網絡理論為基礎,基于Matlab的工具箱,結合西瓜仁重的預測,驗證了BP神經網絡預測西瓜仁重的可行性,且BP算法收斂速度快,誤差小,值得在預測作物生長中推廣。
關鍵詞:Matlab;BP神經網絡;預測
中圖分類號:TP183文獻標識碼:A文章編號:1009-3044(2008)19-30124-02
Based on Matlab BP Neural Network Application
YANG Bao-hua
(Institute of Information and Computer, Anhui Agricultural University, Hefei 230036, China)
Abstract: BP learning algorithm is a one-way transmission of multi-layer to the network, Matlab toolbox is based on the theory of artificial neural network, based on Matlab toolbox, with watermelon-heavy forecasts, BP neural network forecast the feasibility of re-watermelon is verified, and fast convergence, small error, should be promoted in the forecast crop growth.
Key words: Matlab; BP Neural Networks; Forecast
1 引言
人工神經網絡是人工構造的模擬人腦功能而構建的一種網絡,BP神經網絡是結構較簡單、應用最廣泛的一種模型,BP神經網絡是Rumelhart等在1986年提出的。它是一種單向傳播的多層前向網絡,一般具有三層或三層以上的神經網絡,包括輸入層、中間層(隱層)和輸出層[1],其模型見圖1所示。
■
圖1 BP網絡模型
Matlab中的神經網絡工具箱是以人工神經網絡理論為基礎,利用Matlab語言構造出許多典型神經網絡的傳遞函數、網絡權值修正規則和網絡訓練方法。網絡的設計者可根據自己的需要調用工具箱中有關神經網絡的設計與訓練的程序,免去了繁瑣的編程過程。
紅籽瓜(Red-seed Watermelon)種子即瓜子富含有蛋白質、脂肪、鈣、磷及多種維生素,含油率達55%左右,營養頗為豐富,經過精細加工,味道鮮美,市場十分暢銷[4]。為了提高瓜子的產量,需要關注很多因素,這些因素的改變會影響瓜子的產量,所以確定哪些因素能預測產量,如何預測是本文研究的內容。本文利用紅籽西瓜的測量數據,以單果重,種子數,千粒重,種子重作為輸入因子,仁重為輸出因子,選擇合適的隱層,構建影響紅籽西瓜種仁重量的BP網絡模型,運用Matlab軟件進行預測。
2 BP神經網絡設計的基本方法
Matlab的NNbox提供了建立神經網絡的專用函數newff()[5]。用newff函數來確定網絡層數、每層中的神經元數和傳遞函數,其語法為:
net=newff(PR,[S1,S2,…,SN],{TF1,TF2,…,TFN},BTF,BLF,PF)
式中:PR表示由每個輸入向量的最大最小值構成的R×2矩陣;Si表示第i層網絡的神經元個數;TF表示第i層網絡的傳遞函數,缺省為tansig,可選用的傳遞函數有tansig,logsig或purelin;BTF表示字符串變量,為網絡的訓練函數名,可在如下函數中選擇:traingd、traingdm、traingdx、trainbfg、trainlm等,缺省為trainlm;BLF表示字符串變量,為網絡的學習函數名,缺省為learngdm;BF表示字符串變量,為網絡的性能函數,缺省為均方差“mse”。
2.1 網絡層數
BP網絡可以包含不同的隱層,但理論上已經證明,在不限制隱層節點數的情況下,兩層(只有一個隱層)的BP網絡可以實現任意非線性映射。
2.2 輸入層節點數
輸入層起緩沖存儲器的作用,它接受外部的輸入數據,因此其節點數取決于輸入矢量的維數。
2.3 輸出層節點數
輸出層節點數取決于兩個方面,輸出數據類型和表示該類型所需的數據大小。在設計輸人層和輸出層時,應該盡可能的減小系統規模,使系統的學習時間和復雜性減小。
2.4 隱層節點數
一個具有無限隱層節點的兩層BP網絡可以實現任意從輸入到輸出的非線性映射。但對于有限個輸入模式到輸出模式的映射,并不需要無限個隱層節點,這就涉及到如何選擇隱層節點數的問題,至今為止,尚未找到一個很好的解析式,隱層節點數往往根據前人設計所得的經驗和自己進行試驗來確定。一般認為,隱層節點數與求解問題的要求、輸入輸出單元數多少都有直接的關系。另外,隱層節點數太多會導致學習時間過長;而隱層節點數太少,容錯性差,識別未經學習的樣本能力低,所以必須綜合多方面的因素進行設計。
隱層節點數的初始值可先由以下兩個公式中的其中之一來確定[2,3]。
1=■+a (1)
或1=■(2)
式中,m、n分別為輸入結點數目與輸出結點數目,a為1~10之間的常數。
2.5 數據歸一化
因為原始數據幅值大小不一,有時候還相差比較懸殊。如果直接投人使用,測量值大的波動就壟斷了神經網絡的學習過程,使其不能反映小的測量值的變化。所以,在網絡訓練之前,輸人數據和目標矢量都要經過歸一化處理。
根據公式可將數據“歸一化”,即限定在[0,1]區間內。歸一化公式為:
■ (3)
也可以使用歸一化函數Premnmx,及反歸一化函數Postmnmx。
3 BP學習算法及實例
3.1 BP學習算法
1) 初始化網絡及學習參數;
2) 從訓練樣本集合中取一個樣本,并作為輸入向量送入網絡;
3) 正向傳播過程,對給定的輸入樣本,通過網絡計算得到輸出樣本,并把得到的輸出樣本與期望的樣本比較,如有誤差超出限定范圍,則執行第4步;否則返回第2步,輸入下一個樣本;
4) 反向傳播過程,即從輸出層反向計算到第一隱層,修正各神經元的連接權值,使用誤差減小。
3.2 實例
為了提高瓜籽產量,需要關注很多因素,濾去相關度過低的因子,根據經驗確定輸入因子為單果重,種子數,千粒重,種子重,輸出因子為仁重。現以表1所示的2000~2002年測量數據作為訓練樣本進行訓練,對2003年的數據進行預測。輸出層結點代表仁重量,神經網絡的預測模型采用4-4-1,即輸入層4個神經元,根據公式(2)計算隱層神經元數確定為4,1個輸出神經元。設定最大的迭代次數為500次,系統全局誤差小于0.001。傳遞函數為tansig,訓練函數為trainlm。
根據經典的BP算法,采用Matlab編程,樣本訓練結果見圖2,2003的數據作為預測樣本,預測結果如下:
TRAINLM, Epoch 0/500, MSE 0.316381/0.001, Gradient 2.8461/1e-010
TRAINLM, Epoch 4/500, MSE 0.00056622/0.001, Gradient 0.0830661/1e-010
TRAINLM, Performance goal met.
SSE = 0.0102
y = 0.269 0.267 0.27 0.269 0.2679 0.2679
表1 紅籽西瓜數量性狀表
瓜籽仁重實際值為0.265,0.282,0.264,0.269,0.265,0.287,誤差為0.0102,當樣本較少時可以接受的誤差范圍內。并且收斂速度快。
■
圖2訓練函數為trainlm的訓練結果
采用traingd函數進行訓練,則5000次仍未達到要求的目標誤差0.001,說明該函數訓練的收斂速度很慢。見圖3所示。所以訓練函數的選擇也非常關鍵。
■
圖3 訓練函數為traingd的訓練結果
4 結論
用Matlab編編寫的基于BP網絡的仁重預測程序,計算結果表明,誤差較小,預測值與實測值吻合較好,所建立的模型具有較好的實用性,說明單果重,種子數,千粒重,種子重的數據影響瓜子的產量,同時驗證BP算法可以用于瓜仁產量的預測。
目前所進行的預測試驗中數據的樣本較少,且生長動態變化,今后擬建立一個動態預測系統,為紅籽瓜品種培育、提高產量提供新的方法,值得在預測作物生長中推廣。
參考文獻:
[1] 飛思科技產品研發中心.神經網絡理論與Matlab 7實現[M].北京:電子工業出版社.2006:100-105.
[2] 徐廬生.微機神經網絡[M].北京:中國醫藥科技出版社,1995.
[3] 高大啟.有教師的線性基本函數前向三層神經網絡結構研究[J].計算機學報,1998,21(1):80-85.
[4] 欽州農業信息網:http://www.qzny.gov.cn.
[5] 周開利,康耀紅.神經網絡模型及其Matlab仿真程序設計[M].北京:清華大學出版社,2005.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文