沈藝高


摘? 要: 介紹了一種基于改進的粒子群算法BP神經網絡(IBPPSO)來預測天氣情況。粒子群算法BP神經網絡(BPPSO)彌補了BP神經網絡迭代次數多,運算速度慢的缺點。粒子群算法中學習因子(c1、c2)、慣性權重(w)設定為常數,實際情況下,c1、c2、w隨迭代次數而變化。文章對粒子群算法進行適當改進,對最佳位置的搜索從全局的大范圍漸漸向局部的小范圍轉變,既滿足了較大的全局搜索能力,又增加了小范圍局部搜索的精度。該方法應用于上海虹橋機場近三年來12000組天氣情況數據。結果表明,IBPPSO預測準確率和成功預測雨天概率兩方面都優于BP神經網絡與BPPSO。
關鍵詞: 粒子群算法; BP神經網絡; 改進; 天氣預測
中圖分類號:TP301.6? ? ? ? ? 文獻標志碼:A? ? ?文章編號:1006-8228(2019)08-18-03
Abstract: This paper introduces an improved particle swarm optimization based BP neural network (IBPPSO) to predict weather conditions. The particle swarm optimization BP neural network (BPPSO) makes up for the shortcomings of the traditional BP neural network, which has many iterations and slow operation speed, and enhances the global search ability of the BP neural network algorithm. In particle swarm algorithm, the learning factor (c1、c2) and inertia weight (w) are set as constants. In practice, c1、c2、w vary with the number of iterations. In this paper, the particle swarm algorithm is improved appropriately, and the search for the best location is gradually changed from the global large-scale to the local small-scale, which not only satisfies the larger global search ability, but also increases the precision of the small-scale local search. The method is applied to test 12,000 sets of weather data of Shanghai Hongqiao Airport in the past three years. The results show that IBPPSO is superior to BP neural network and BPPSO in both accuracy and probability of successful prediction of rainy days.
Key words: BP neural network; particle swarm optimization; improved; weather forecast
0 引言
惡劣的天氣給人類社會造成的經濟,精神上的損失已經不可估量。在環境多變的今天,對天氣進行提前預測,進而對一些突發的情況做出準備已經變得至關重要。
從17世紀開始科學家使用科學儀器來測量天氣狀態,并使用大量的天氣數據來預報天氣。隨著時代的發展,預測天氣的方法越來越多。有學者提出將BP神經網絡應用于天氣預測,卻面臨著算法迭代次數太多,容易陷入局部極值,全局搜索能力弱等問題。后來有學者提出基于粒子群算法的BP神經網絡模型,但仍存在預測精確度低的問題。
本文提出一種基于優化的粒子群算法的BP神經網絡模型,改變了粒子群算法常系數的模式,使學習因子及慣性權重隨著迭代次數的變化而變化,同時其變化規律滿足先全局搜索后局部搜索的思想,既發揮了粒子群算法全局搜索能力強的優點,同時也提高了預測的準確度。
1 算法原理
1.1 粒子群算法
粒子群算法(particleswarm optimization,PSO)最早由Eberhart和Kennedy于1995年提出,它源于對鳥類覓食行為的研究[1]。鳥類在捕食時,為了能夠得到更多的食物,會考慮去往以下兩個位置:其自身所經歷的食物最多的位置及鳥類種群中所普遍認為的食物最多的位置。粒子群算法利用適應度函數來表征每個粒子的優良程度(對應于食物多少的程度),每個粒子同時具有三項特征:速度,位置,適應度。假設在一個n維空間中有m個粒子,則第i個粒子的位置即為:[Xi=(xi1,xi2,...,xin)],第i個粒子的速度即為:[Vi=(vi1,vi2,...,vin)],為了找到擁有最優適應度的位置,粒子群不斷迭代進化。在迭代中,每個粒子維護一個其自身的最優位置,稱為個體極值[pbest],則對于第i個粒子,其個體極值[pibest=(pi1,pi2,...,pin)];對于整個粒子群,在每次迭代時,需維護一個最優位置,稱為全局極值[gbest],記為[gbest=(g1,g2,...,gn)];在迭代過程中,粒子下一時刻的位置取決于其當前位置,當前速度,其個體極值及全局極值,其迭代公式如下[2-3]:
其中,[c1]和[c2]稱為學習因子。w稱為慣性權重(inertia weight)[4]。
上面的公式分為三部分。第一部分由前一時刻粒子速度決定,體現記憶功能。第二部分粒子參考了自身經歷,對下一次移動做出選擇,體現其自身的智能性。第三部分粒子結合整個粒子群的共享信息來改變自己的位置增強了粒子的全局搜索能力,體現了粒子間的團結協作[5]。
在迭代中,粒子速度應限定在一定范圍,即取定一個最大速度[Vmax]和一個最小速度[Vmin],粒子速度滿足:[Vmin 粒子群算法具有強大的全局搜索能力,可以避免陷入局部極值。 1.2 BP神經網絡 BP神經網絡是一種多層前饋神經網絡,這是目前應用最廣的神經網絡。其包含三層:輸入層,隱含層,輸出層,層與層之間的聯系如圖1: ⑴ 在信號前向傳播階段,輸入信號依次經過輸入層,隱藏層,輸出層,最后計算得到輸出結果。設[Wij(l)]為從[l-1]層第[j]個神經元與第l層第i個神經元之間的連接權重;[bi(l)]為第l層第i個神經元的偏置,[neti(l)]為第l層第i個神經元的輸入,[hi(l)]為第l層第i個神經元的輸出,則: 其中, [f(x)]為神經網絡的激活函數。通常激活函數取非線性函數,因為多層神經網絡本質上是多個線性函數疊加,若采用線性激活函數,則其結果仍為一個線性函數。一般來說,我們選擇sigmoid函數作為激活函數[6],即: [f(x)=11+e-x]。 ⑵ 在誤差反向傳播階段,通過實際輸出與真值的差值作為誤差,再通過誤差的反向傳播,逐次調整模型的權重和偏置,直到誤差滿足要求或達到迭代次數。設共有[n]個樣本,則樣本的總誤差即為[2]: [error=i=1nj=1l(realji-outji)2]? ? ⑸ 其中,[realji]為第j個輸出在第i組樣本作用下的真實值,[outji]為第j個輸出在第i組樣本作用下的實際輸出值。 BP神經網絡簡單,易實現,但其收斂速度慢,得到貼合實際的參數需經過大量迭代,而且容易陷入局部極值,偏離全局極值。 2 算法改進 2.1 基于粒子群算法的BP神經網絡模型(BPPSO) BP神經網絡收斂速度慢,容易陷入局部極值,偏離全局極值,因此,應用粒子群算法,增加參數向目標方向進化的速度,同時增強模型的全局搜索能力,使最終得到的模型更加準確地進行預測。 基于粒子群算法的BP神經網絡模型,采用粒子群算法取代反向誤差傳遞來進行對參數的調整,在每次迭代中,將樣本的總誤差[error]作為粒子群算法的適應度函數,將神經網絡的權重[W]及偏置[b]作為粒子的位置,值得注意的是,此時希望誤差取極小值,因此算法中尋找的是適應度函數值最小的粒子的位置。算法執行步驟如下。 ⑴ 初始化粒子群的位置(權重及偏置),個體極值[Pbest]及全局極值[gbest]。 ⑵ 進行迭代。根據每個粒子的個體極值[Pbest]和全局極值[gbest]計算粒子的速度,進而更新粒子的位置。根據新的位置分別計算每個粒子所對應的樣本總誤差作為適應度函數值,再更新每個粒子的個體極值[Pbest]及全局極值[gbest],再進行下一輪迭代。 ⑶ 達到迭代次數,得到最終權重及偏置(全局極值[gbest])。 2.2 基于優化的粒子群算法的BP神經網絡模型(IBPPSO) 粒子群算法中學習因子和慣性權重設定為常數,在實際情況下,我們需要[c1],[c2]及w隨迭代次數變化,從而實現對最佳位置的搜索從全局的大范圍漸漸向局部的小范圍轉變,既滿足了較大的全局搜索能力,又增加了小范圍局部搜索的精度。我們根據呂祥銘等人的研究結果[3],調整參數如下: 3 天氣預測 作者收集了上海虹橋機場近三年來每日不同時刻的近12000組天氣情況數據作為數據集。取其中2000組作為測試數據,剩余近10000組作為訓練數據。在訓練過程中,提取溫度,濕度,氣壓,風速四個特征作為輸入節點,通過神經網絡,將樣本分為晴天和雨天。模型輸入層有4個節點,隱藏層有9個節點,輸出層有2個節點。三種算法預測結果如表1所示。 根據表1,BP神經網絡的預測準確率和成功預測雨天概率分別為0.7954和0.0955。BPPSO的預測準確率和成功預測雨天概率分別為0.9285和0.1560。IBPPSO的預測準確率和成功預測雨天概率分別為0.9428和0.1823。可以看出,IBPPSO迭代次數優于BP神經網絡,同時在預測準確率和成功預測雨天概率兩方面都優于另外兩者,具有更高的準確度。 4 結束語 本文針對BP神經網絡迭代次數多,運算速度慢的缺點,將改進后的粒子群算法應用于BP神經網絡來預測天氣情況。該方法既滿足了粒子群算法較大的全局搜索能力,增加了小范圍局部搜索的精度,又提高了算法擬合的準確度及天氣預測的準確率,具有一定的推廣價值。由于時間原因,本文測算樣本量與迭代次數還較少。隨著樣本量的增加,未來將根據預測情況不斷調整學習因子和慣性權重,進一步提高天氣預報的準確率。 參考文獻(References): [1] 皮倩瑛,葉洪濤.一種動態調節慣性權重的粒子群算法[J].廣西科技大學學報,2016.27(3):27-31 [2] 林宇鋒,鄧洪敏,史興宇.基于新的改進粒子群算法的BP神經網絡在擬合非線性函數中的應用[J].計算機科學,2017.11:51-54 [3] 呂祥銘,閆躍,呂淞霖,張淑穎.基于非線性粒子群算法與神經網絡的天氣預測[J].現代農業科技,2013.11:265-266 [4] HUANG Hao, CHEN Kui-sheng, ZENG Liang-cai. A genetic algorithm-based neural network approach for fault diagnosis in hydraulic servo-valves[M]//Advances in Machine Learning and Cybernetics.Springer Berlin Heidelberg,2006:813-821 [5] 李松,劉力軍.改進粒子群算法優化BP神經網絡的短時交通流預測[J].系統工程理論與實踐,2012.32(9):2045-2049 [6] 王慧,劉希玉.基于最具影響粒子群優化的BP神經網絡訓練[J].計算機工程與應用,2007.43(18):69-71