曾晨雨,黃 靜
(長沙職業(yè)技術(shù)學(xué)院 湖南 長沙 410217)
由于近年來的溫室效應(yīng)、洋流變化和氣壓變化等,極端天氣發(fā)生愈發(fā)頻繁,突發(fā)性的極端天氣極易引起人員傷亡和財產(chǎn)損失。 大風(fēng)極端天氣是極端天氣中最常見的一類,會影響到人們出行安全及社會正常運轉(zhuǎn)。 為了降低風(fēng)災(zāi)對人們正常生活和生產(chǎn)的影響,有效預(yù)測風(fēng)速并及時預(yù)警,顯得尤為重要[1]。 目前,風(fēng)速預(yù)測方法大致可以分為以下兩類,第一種是傳統(tǒng)數(shù)學(xué)方法,第二種是以機器學(xué)習(xí)為代表的智能算法。 一方面,傳統(tǒng)數(shù)學(xué)方法模型復(fù)雜,依賴過多的假設(shè),預(yù)測結(jié)果偏理論不能用于實際[2];另一方面,隨著氣象數(shù)據(jù)采集和處理技術(shù)的不斷發(fā)展,人工智能技術(shù)也越來越多地參與到了天氣相關(guān)的預(yù)測中,其中機器學(xué)習(xí)被國內(nèi)外研究人員廣泛運用到風(fēng)速預(yù)測中。
深度學(xué)習(xí)是一種廣泛的基于數(shù)據(jù)表示的機器學(xué)習(xí)方法,拓寬了機器學(xué)習(xí)的應(yīng)用領(lǐng)域,延伸了人工智能的服務(wù)范圍,其中許多應(yīng)用已成為行業(yè)研究熱點。 在機器學(xué)習(xí)中,風(fēng)速預(yù)測可以歸結(jié)為一個基于時間序列的預(yù)測問題,本質(zhì)是根據(jù)前T個時刻的風(fēng)速觀測數(shù)據(jù)建模,通過訓(xùn)練好的模型來預(yù)測T+1 時刻的時間序列的風(fēng)速數(shù)據(jù)。 傳統(tǒng)風(fēng)速時間序列預(yù)測方法都是使用單一序列,往往會忽視掉其他因素的影響,容易造成預(yù)測結(jié)果的不準確[3]。 因此,本文提出了一種基于長短期記憶(long short-term memory,LSTM)的多特征預(yù)測算法,通過耶拿氣象數(shù)據(jù)集(Jena climate dataset)進行模型訓(xùn)練,并對風(fēng)速預(yù)測值和實際值擬合曲線對比,發(fā)現(xiàn)該模型在風(fēng)速預(yù)測上有較好的效果。
循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)是一系列能夠處理順序數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)的總稱。 一般RNN 包含以下特性:
①每個隱單元間循環(huán)鏈接,且能在下個時間節(jié)點T產(chǎn)生輸入;
②當前時間節(jié)點僅與下一時間節(jié)點的隱單元循環(huán)鏈接;
③所有隱單元排列成的循環(huán)鏈接結(jié)構(gòu)能夠處理輸入的數(shù)據(jù),產(chǎn)生單一的輸出預(yù)測。
但是RNN 存在以下缺點:如果時間序列較長會導(dǎo)致梯度消失或者梯度爆炸,后層梯度無法傳遞到前邊層,無法長期記憶。 LSTM 是一種特殊的RNN 模型,用于接收和處理序列數(shù)據(jù),如文本、語音、視頻等。 該模型通過一系列的門控制機制,特點是記住長期的信息,可以有效地解決RNN 存在的梯度消失和梯度爆炸的問題,能更好地處理長時序列信息[4]。
LSTM 在每個時間步長上接收輸入,同時上一時間步長的輸出和內(nèi)部狀態(tài)作為當前的輸入。 與普通的RNN 不同,LSTM 在內(nèi)部狀態(tài)中保留了長期記憶信息,通過門的機制控制長期信息的更新和遺忘,從而實現(xiàn)了對信息的選擇性記憶和遺忘[5]。 其中,門控制機制包括遺忘門、輸入門以及輸出門。 LSTM 模型結(jié)構(gòu)如圖1 所示。
圖1 LSTM 模型結(jié)構(gòu)示意圖
遺忘門用于選擇性遺忘部分信息,公式如式(1)所示:
式(1)中:σ為sigmoid 神經(jīng)網(wǎng)絡(luò)激活函數(shù),Wf為連接權(quán)重矩陣,ht-1為上一時刻神經(jīng)元短時記憶輸出,xt為本時刻(t)神經(jīng)元輸入。 輸入門表示當前時刻輸入,決定信息輸入的多少,依賴遺忘門ft和tanh 層生成的候選向量,公式如式(2)所示:
式(2)中:ft為遺忘門輸出,Ct-1為上一時刻輸入門輸出,it為輸入門新增的信息,tanh 為雙曲正切激活函數(shù),Wc為連接權(quán)重矩陣,ht-1為上一時刻神經(jīng)元短時記憶輸出,xt為本時刻(t)神經(jīng)元輸入,bc為偏置向量。 輸出門用于控制神經(jīng)元信息被過濾的程度,計算公式如式(3)所示:
式(3)中:ht-1為上一時刻神經(jīng)元短時記憶輸出,xt為本時刻(t)神經(jīng)元輸入,it為輸入門需要添加的新信息,Wf為連接權(quán)重矩陣,b和σ分別是偏置向量和sigmoid 函數(shù)。
本文采用的數(shù)據(jù)集為耶拿氣象數(shù)據(jù)集,該數(shù)據(jù)集為天氣時間序列數(shù)據(jù)集,由德國耶拿的一個生物地球化學(xué)研究所的氣象站記錄,在這個數(shù)據(jù)集中,每10 min 記錄14 個不同的量(比如氣溫、氣壓、濕度、風(fēng)向、風(fēng)速等,見表1),本文使用其中2009—2016 年的數(shù)據(jù)。
表1 數(shù)據(jù)集劃分表
主要特征及其分布如圖2 所示:
本實驗選取其中的氣壓、溫度、熱力學(xué)溫度、濕度溫度、相對濕度、飽和蒸汽壓、蒸汽壓力、蒸汽壓差、含濕量、水蒸氣濃度等作為風(fēng)速預(yù)測的輸入特征。
為保證模型準確有效,需要對數(shù)據(jù)進行處理,包括異常值處理、數(shù)據(jù)標準化。 從圖2 中可以看出風(fēng)速數(shù)據(jù)有個別異常極值,會影響到整體數(shù)據(jù)質(zhì)量和模型構(gòu)建,需要將其濾除。 數(shù)據(jù)標準化可以將不同量綱的特征值轉(zhuǎn)成無量綱的純數(shù)值,方便不同指標間能夠進行比較和加權(quán),為模型構(gòu)建打下基礎(chǔ)。
本文使用的數(shù)據(jù)標準化方法為Z-Score 標準化,ZScore 標準化是數(shù)據(jù)處理的一種常用方法。 通過它能夠?qū)⒉煌考壍臄?shù)據(jù)轉(zhuǎn)化為統(tǒng)一量度的Z-Score 分值進行比較,提高了數(shù)據(jù)可比性,削弱了數(shù)據(jù)解釋性。 Z-Score 標準化主要思想為基于原始數(shù)據(jù)的均值(mean)和標準差(std)來進行數(shù)據(jù)的標準化,具體如式(4)所示:
式(4)中:x為個體觀測值,μ為總體數(shù)據(jù)的均值,σ為總體數(shù)據(jù)的標準差。
通過上述步驟對耶拿氣象數(shù)據(jù)集進行處理后,選取前3.3 萬條數(shù)據(jù),并采用9 ∶1 比例劃分訓(xùn)練集和驗證集,結(jié)果如表2 所示。
表2 數(shù)據(jù)集劃分表
為了實現(xiàn)風(fēng)速的時間序列預(yù)測,本文使用Date Time作為時間序列,以氣壓、溫度、熱力學(xué)溫度、濕度溫度、相對濕度、飽和蒸汽壓、蒸汽壓力、蒸汽壓差、含濕量、水蒸氣濃度指標作為特征點來構(gòu)建LSTM 多特征預(yù)測模型,該模型包含三個LSTM 層、一個全連接Dense 層和一個輸出層[6-7]。
其中LSTM 第一層設(shè)置8 個神經(jīng)元,第二層設(shè)置16個神經(jīng)元,第三層設(shè)置32 個神經(jīng)元,dropout 設(shè)置為0.5,同時設(shè)置L2 正則化來避免過擬合;全連接層設(shè)置64 個神經(jīng)元,設(shè)置隨機正態(tài)分布的權(quán)重初始化和L2 正則化;輸出層返回回歸計算后t+1 時間點的風(fēng)速預(yù)測值。
本文使用Keras 來搭建模型。 Keras 是一個模型級的庫,為開發(fā)深度學(xué)習(xí)模型提供了高層次的構(gòu)建模塊。 它依賴一個專門的、高度優(yōu)化的張量庫來完成這些運算,這個張量庫就是Keras 的后端引擎。 Keras 有三個后端實現(xiàn):TensorFlow 后端、Theano 后端和微軟認知工具包(cognitive toolkit,CNTK)。 這三個不同的后端引擎都可以無縫嵌入到Keras 中。
Keras 模型編譯時必須設(shè)置優(yōu)化器,常見的優(yōu)化器包括隨機梯度下降優(yōu)化器(stochastic gradient descent,SGD)、RMSprop 優(yōu)化器、Adagrad 優(yōu)化器、Adadelta 優(yōu)化器、Adam優(yōu)化器等。 RMSprop 是一種自適應(yīng)學(xué)習(xí)率的優(yōu)化算法,它可以有效地應(yīng)對不同特征的梯度變化差異較大的情況,以及避免梯度消失或爆炸的問題。 RMSprop 的核心思想是,根據(jù)梯度的歷史信息來自適應(yīng)地調(diào)整學(xué)習(xí)率。 具體地,RMSprop 維護一個梯度平方的移動平均數(shù),然后將學(xué)習(xí)率按照每個參數(shù)在梯度平方的移動平均數(shù)的比例進行縮放。其中Adam 優(yōu)化器是RMSprop 優(yōu)化器的動量版,適合處理非平穩(wěn)目標(季節(jié)性和周期性),氣象數(shù)據(jù)帶有強季節(jié)性和周期性,Adam 優(yōu)化器能取得較好的效果,同時自適應(yīng)學(xué)習(xí)率Adam 能避免梯度爆炸,故本模型編譯時使用Adam優(yōu)化器,設(shè)置學(xué)習(xí)率為0.001,同時損失函數(shù)為平均絕對誤差(mean absolute error,MAE),計算標簽和預(yù)測之間絕對差異的平均值。
本實驗的風(fēng)速預(yù)測方法流程如下:
(1)數(shù)據(jù)讀取,對數(shù)據(jù)進行特征選擇。
(2)數(shù)據(jù)預(yù)處理,將數(shù)據(jù)進行Z-Score 標準化,選取前3.3 萬條數(shù)據(jù),采用9 ∶1比例劃分訓(xùn)練集和驗證集。
(3)模型構(gòu)建,編譯訓(xùn)練網(wǎng)絡(luò),并對測試集進行評價,繪制訓(xùn)練損失曲線。
(4)模型預(yù)測,繪制預(yù)測的氣溫曲線圖進行對比。
本實驗每個滑窗取5 天的數(shù)據(jù)量720 個觀測點,預(yù)測下一個時間點的風(fēng)速,對比實際值和預(yù)測值的可視化結(jié)果,來驗證模型的準確性。 根據(jù)輸入的耶拿數(shù)據(jù)和滑窗預(yù)測方式,將數(shù)據(jù)集劃分為若干個10×720 的矩陣向量(以上述10 個特征值,720 個以10 min 為單位的觀測點)。
神經(jīng)網(wǎng)絡(luò)中跑一次完整訓(xùn)練樣本記作一個epoch(輪次)。 本實驗將epoch 設(shè)置為5,訓(xùn)練損失曲線如圖3 所示。
圖3 訓(xùn)練損失曲線
從圖3 中可以看出,上面的曲線為訓(xùn)練損失,下面的曲線為驗證損失。 在訓(xùn)練開始階段損失值下降幅度很大,說明學(xué)習(xí)率合適且進行梯度下降過程中,在學(xué)習(xí)到一定階段后,損失曲線趨于平穩(wěn),損失變化沒有一開始那么明顯,整體損失曲線較合適。
最終本模型擬合結(jié)果如圖4 所示。
圖4 風(fēng)速預(yù)測擬合結(jié)果
圖4 中圓形實心點為實際風(fēng)速,三角形為預(yù)測風(fēng)速。圖4 中可以看出,和實際值對比,預(yù)測值基本貼合,說明本模型預(yù)測效果優(yōu)秀,所建立的基于LSTM 的多特征預(yù)測模型擬合程度良好[8]。
為提高風(fēng)速預(yù)測的精度,本文設(shè)計了基于LSTM 的多特征預(yù)測模型,以耶拿氣象數(shù)據(jù)為來源,預(yù)測未來200 個時間觀測點的風(fēng)速數(shù)據(jù)。 實驗結(jié)果發(fā)現(xiàn),本文設(shè)計的模型損失曲線收斂良好,多特征預(yù)測模型能有效避免極端天氣對風(fēng)速預(yù)測的影響,能精準地預(yù)測出未來的風(fēng)速走向,并具備良好的性能和預(yù)測精準度。
在后續(xù)深入研究中,可將LSTM 多特征預(yù)測模型和其他模型進行組合,綜合地理位置、季節(jié)等其他信息,進一步提高預(yù)測精準度。