新疆農業大學機械交通學院 ■ 張東東
北京三力新能科技有限公司 ■ 崔新維
1986年,Rumelhart D E和McClland J L提出了一種利用誤差反向傳播訓練算法的神經網絡,簡稱BP(Back Propagation)網絡[1]。在人工神經網絡的實際應用中,BP神經網絡包含了神經網絡理論中最精華的部分,由于其結構簡單、可塑性強,故廣泛應用于模式識別、函數逼近、信息分類和數據壓縮等,80%~90%的人工神經網絡模型采用BP網絡或其變形,它是前饋型神經網絡的核心部分[2]。由于它的數學意義明確,學習算法步驟分明,使其應用背景更加廣泛。然而,依靠操作人員的經驗建立合理的神經網絡算法,編寫程序仿真再分析結果需很長時間的試探,并且網絡結構、訓練參數及訓練方法的改變往往會引起程序的更改,為設計和仿真帶來諸多不便[3]。
Matlab神經網絡工具箱以神經網絡理論為基礎,用Matlab 的語言構造出各種神經網絡激活函數、訓練函數及各種網絡集成塊等。設計者通過對激活函數、網絡函數等的調用,僅需寫很少的源代碼,即可完成必需的科學計算。根據各種典型修正網絡權值規則,配合網絡訓練過程,用Matlab編寫出各種網絡設計與訓練的子程序,網絡的設計者可根據所需調用工具箱中有關神經網絡的設計訓練程序,使自己能從繁瑣的編程中解放出來,集中精力去思考問題和解決問題[4,5]。
BP網絡,即誤差反向傳播網絡,是一種前饋型網絡,由1個輸入層、若干隱含層和1個輸出層構成。圖1為常用BP網絡結構[6]。

圖1 BP神經網絡模型
如果輸入層、隱含層和輸出層的節點個數分別為n、q、m,則該3層網絡可表示為BP(n, q, m),利用該網絡可實現n維輸入向量Xn=(x1, x2,…, xn)T到m維的輸出向量Ym=(y1, y2,…, ym)T的非線性映射。輸入層和輸出層的節點數根據具體問題而定,隱含層的節點數q常根據式(1)進行設計。

式中,q為隱含層節點數;n為輸入層節點數;m為輸出層節點數;a為1~10之間的常數。


激活函數f(u)常采用Sigmoid型激活函數:

式中,參數δ1表示偏值,正的δ1使激活函數水平向左移動;δ0的作用是調節Sigmoid函數的形狀,較小δ0使Sigmoid函數逼近一個階躍限幅函數,而較大δ0將使Sigmoid函數變得較為平坦。
選用Sigmoid型的激活函數時,數據要進行歸一化處理,歸一化公式為:

隱含層將信息傳到輸出層,最終得到的輸出結果為:

以上所述是信息在神經網絡中信息正向的傳播過程。BP網絡特有的是誤差反向傳播,當網絡的輸出與期望輸出存在誤差時,誤差反向傳播,進而修正網絡權值和閥值。網絡權值和閥值的修正公式為:

BP網絡會不斷修正網絡權值和閥值,直到達到預先設定的訓練次數時停止。如果在訓練過程中全局誤差提前達到設定值,則停止訓練,此網絡收斂;如果在所設定的訓練次數結束時系統的全局誤差還未達到設定值,則此網絡無法收斂。
本文根據2012年6月12日新疆達坂城風電場中某臺風力發電機每秒所測的相關風向數據,從中隨機選出兩段連續的風向數據,經過相關修正得到的數據如圖2和圖3所示。

圖2 10:00:00~10:12:00期間每秒的風向數據

圖3 12:00:00~12:08:00期間每秒的風向數據
將圖2的風向數據作為訓練集使用,按每連續15 s的風向數據為一個訓練的組織樣本,根據圖1中的風向數據可得到700組數據,即BP網絡訓練集的輸入向量是一個15維矩陣,設為P;將每個15 s后第5 s的風向數據作為輸出因子,則BP網絡訓練集的輸出向量是一個1維矩陣,設為T。將圖3的風向數據作為測試集,同樣將每連續15 s的風向數據作為一個測試的輸入向量,設為P_Test;將每個15 s后第5 s的風向數據作為測試的輸出向量,設為T_Test。在對這些數據進行訓練前要進行歸一化處理,可按式(1)進行。Matlab神經網絡工具箱中有專門進行數據歸一化處理的工具,在對數據進行訓練前插入歸一化處理程序即可,這樣省去了繁瑣的數據歸一化處理工作。
本研究采用3層BP網絡,輸入向量是15維的數據,那么輸入層節點數為15;輸出向量是1維的數據,則輸出層節點數為1;根據隱含層節點的計算式(1),設隱含層的節點數為9;訓練次數為1000;訓練目標為0.001;學習率為0.1;由于本次風向的訓練數據較多,而實際應用中要求BP網絡要有較快的訓練速率來解決風向較快的隨機波動性問題,BP網絡訓練的算法中LM(levenberg-marquardt)算法是為了訓練中等規模的前饋型神經網絡而提出的最快速算法,它對Matlab實現也相當有效,因此本次研究選用LM算法。
編寫Matlab程序,將圖2的數據按上述要求進行訓練,訓練的誤差性能曲線如圖4所示。由圖4可知,經過6次訓練,系統的誤差性可達到訓練的目標要求。

圖4 訓練過程的誤差性能曲線
預測的誤差曲線如圖5所示。由圖5可知,BP網絡預測的風向與實際風向的誤差中有24次誤差在5°~10°之間,風向誤差超過10°的情況只有4次,剩余93%的風向誤差在5°內。

圖5 預測風向與實際風向的測試誤差曲線
本次BP網絡的訓練算法中使用LM算法僅6次就達到了目標要求,這與BP網絡其他普通訓練中達上百次的訓練算法相比速度快很多,也反映出LM訓練算法在中等規模前饋網絡的訓練中所具有的優越性。仿真所得預測風向的誤差93%都在5°內,預測精確性較高。誤差在5°內屬于BP網絡泛化精度范圍內;而大于5°的28次誤差是由訓練的樣本集較少引起的,若增大此訓練集,大于5°的誤差次數可有效減少。
BP神經網絡訓練速度較快、學習速率快、泛化能力強,雖然用BP網絡預測的風向與實際風向還有一定誤差,但該誤差與風力發電機上偏航執行動作的±15°風向誤差相比精度較高;這里預測的風向用在風力發電機的偏航系統中不是為了取代實際風向,而是作為風力發電機偏航執行動作前的一個預判,因此BP網絡預測風向應用在實際的風力發電機上具有更大的可行性。
[1] 魏海坤. 神經網絡結構設計的理論與方法[M]. 北京: 國防工業出版社, 2005.
[2] 張立明. 人工神經網絡的模型及其應用[M]. 上海:復旦大學出版社, 1993.
[3] 汪定偉. 智能優化方法[M]. 北京: 高等教育出版社, 2007.
[4] 阮曉鋼. 神經計算科學[M]. 北京: 國防工業出版社, 2006.
[5] 李明. 基于遺傳算法改進的BP網絡的城市人居環境質量評價研究[D]. 沈陽: 遼寧師范大學, 2007.
[6]林香, 姜青山, 熊騰科. 一種基于BP網絡的預測模型[D].廈門: 廈門大學軟件學院, 2006.