倪 錚 梁 萍
(中國人民解放軍96873部隊(duì) 陜西 寶雞 721000)
天氣與人類活動(dòng)密切相關(guān),隨著科技發(fā)展和生活節(jié)奏的加快,準(zhǔn)確精細(xì)的天氣預(yù)報(bào)在日常生活、工作、國防與軍隊(duì)建設(shè)上起到越來越重要的作用。但是,氣溫要素的預(yù)報(bào)一直是天氣預(yù)報(bào)中的重點(diǎn)和難點(diǎn),本文利用LSTM神經(jīng)網(wǎng)絡(luò),初步嘗試精細(xì)化氣溫預(yù)報(bào)的模擬計(jì)算。
人工神經(jīng)網(wǎng)絡(luò)一直是氣象預(yù)報(bào)的一種重要手段,但是由于BP神經(jīng)網(wǎng)絡(luò)的缺陷,其在氣象預(yù)報(bào)業(yè)務(wù)方面的發(fā)展受到了極大制約。而近年來,人工神經(jīng)網(wǎng)絡(luò)在時(shí)間序列上的重大發(fā)展,使其在氣象業(yè)務(wù)上有了重大突破。在時(shí)間序列分析中,未來的數(shù)據(jù)與過去的數(shù)據(jù)是相關(guān)的,但是普通BP神經(jīng)網(wǎng)絡(luò)并不能把這種相關(guān)性體現(xiàn)出來,而近年來出現(xiàn)的LSTM網(wǎng)絡(luò)能很好地把這種相關(guān)性體現(xiàn)出來。并且在語音識(shí)別[8-9]、自動(dòng)樂曲譜寫[10]、自然語言學(xué)習(xí)[11]等領(lǐng)域已經(jīng)有了重大應(yīng)用,在氣象領(lǐng)域也有LSTM結(jié)合CNN(Convolitional Neural Networks)進(jìn)行臨近降水預(yù)報(bào)的先例[6],還有研究表明通過LSTM神經(jīng)網(wǎng)絡(luò)建立的模型,能有效預(yù)報(bào)24小時(shí)和72小時(shí)的逐時(shí)次氣溫、濕度和風(fēng)[1]。
圖1是目前RNN運(yùn)用的一種典型結(jié)構(gòu)[5],RNN和傳統(tǒng)的多層感知機(jī)的不同就是跟時(shí)間有了關(guān)系,下一時(shí)間的數(shù)據(jù)會(huì)受到上一時(shí)間數(shù)據(jù)的影響。圖1的右邊就是將左邊展開的結(jié)果。
圖1 典型的RNN結(jié)構(gòu)
從圖中的結(jié)構(gòu)可以看出,一組時(shí)間序列(x1,x2,x3,…)的隱藏層和輸出層將由如下公式計(jì)算得來:
(1)
(2)
與傳統(tǒng)BP相比,RNN在隱層計(jì)算上多了過去時(shí)次數(shù)據(jù)作為輸入,將未來的數(shù)據(jù)預(yù)報(bào)與過去數(shù)據(jù)比較緊密的聯(lián)系起來,因此,更適用于時(shí)間序列預(yù)報(bào)。
原生的RNN會(huì)遇到一個(gè)很大的問題,叫作梯度消失(The vanishing gradient problem for RNNs)。對(duì)于傳統(tǒng)深度神經(jīng)網(wǎng)絡(luò)來說,由于sigmoid函數(shù)的性質(zhì)會(huì)導(dǎo)致反向傳播過程中梯度消失,導(dǎo)致模型收斂速度過慢,訓(xùn)練時(shí)間加長(zhǎng)。而對(duì)RNN來說,后面的時(shí)間節(jié)點(diǎn)對(duì)前面時(shí)間節(jié)點(diǎn)感知力下降,導(dǎo)致模型無法記住更久之前的數(shù)據(jù),這也是原生RNN從20世紀(jì)80年代末提出以來,一直沒有較大作用的原因。
但是,近幾年,一種改進(jìn)的RNN較好地解決了這個(gè)問題,這就是LSTM(Long-Short Term Memory)。
LSTM的特點(diǎn)是可以記憶長(zhǎng)時(shí)間的數(shù)據(jù),因?yàn)樗M(jìn)了一個(gè)核心元素Cell。Cell中有一堆參數(shù)state來記錄過去的數(shù)據(jù),但是有時(shí)候state參數(shù)并不是全部有用。比如,Cell中記錄了過去1小時(shí)的氣溫,但在輸入了當(dāng)前時(shí)刻的氣溫后,相對(duì)于過去1小時(shí)的氣溫來說,當(dāng)前時(shí)刻的氣溫更有價(jià)值。所以,為了表示這種關(guān)系,引入了一種遺忘機(jī)制Forget Gate。本文所使用的LSTM結(jié)構(gòu)如圖2所示。
圖2 本文所使用的LSTM結(jié)構(gòu)
本文對(duì)LSTM網(wǎng)絡(luò)的實(shí)現(xiàn),主要參考了文獻(xiàn)[5,10]對(duì)LSTM的公式描述,但是對(duì)其結(jié)構(gòu)略有簡(jiǎn)化。
圖2中s所代表的就是Cell的參數(shù)state;f(t)為Forget Gate方程;i(t)和g(t)共同構(gòu)成了Input Gate方程,用來更新Cell狀態(tài)s;o(t)是Output Gate方程,與s一起輸出h。其方程如下:
f(t)=σ(Wf·[ht-1,xt]+bf)
(3)
i(t)=σ(Wi·[ht-1,xt]+bi)
(4)
g(t)=tanh(Wg·[ht-1,xt]+bg)
(5)
o(t)=σ(Wo·[ht-1,xt]+bo)
(6)
st=f(t)×st-1+i(t)×g(t)
(7)
ht=o(t)×tanh(st)
(8)
如圖3所示,所構(gòu)建的模型為有兩層LSTM隱層的網(wǎng)絡(luò)。
圖3 模型流程及各層輸入輸出的數(shù)組形狀
InputLayer:是一個(gè)全鏈接層,其輸入數(shù)據(jù)為2維向量,第二維度是數(shù)據(jù)的特征;其輸出也是一個(gè)2維向量(None,27),第二維度是隱層網(wǎng)絡(luò)單元(在實(shí)驗(yàn)中并沒有對(duì)節(jié)點(diǎn)單元數(shù)量進(jìn)行控制,但是很多研究表明,尋找一個(gè)合適節(jié)點(diǎn)數(shù)是保證訓(xùn)練速度和訓(xùn)練效果的有效保障)。根據(jù)對(duì)LSTM的解釋,為了能輸入LSTMLayer,需要將其變?yōu)橐粋€(gè)三維向量(None,8,27),增加的一維是時(shí)間步長(zhǎng)(time step),在這個(gè)例子中就是說每8組數(shù)據(jù)構(gòu)成一個(gè)時(shí)間序列。
LSTMLayer:LSTM層的具體結(jié)構(gòu)如上文所述。第一層接受的輸入為InputLayer的輸出(None,8,27),其輸出格式為(None,8,27),第二層接受的輸入為第一層LSTM的輸出(None,8,27),輸出格式也為(None,8,27),但為了能進(jìn)行輸出層的輸入,需要將其轉(zhuǎn)為一個(gè)2維向量(None,27),去掉的維度是時(shí)間步長(zhǎng)(time step)。
OutputLayer:是一個(gè)全鏈接層,其輸入數(shù)據(jù)為L(zhǎng)STMLayer的Output,輸出為預(yù)報(bào)值的2維向量。
眾所周知,人工神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)有兩大難題,一是反向傳播梯度下降過慢,二是過擬合,本文通過如下方法來抑制。
(1) 梯度下降問題 本文使用梯度下降優(yōu)化器來解決這個(gè)問題。本文所使用的Adma優(yōu)化器[4]依靠對(duì)梯度的一階期望和二階期望對(duì)學(xué)習(xí)率進(jìn)行動(dòng)態(tài)調(diào)整,目的是將一個(gè)固定的學(xué)習(xí)率變?yōu)橐粋€(gè)動(dòng)態(tài)的學(xué)習(xí)率。
(2) 過擬合 使用Dropout來防止過擬合。依據(jù)Srivastava等[2]對(duì)Dropout的解釋,它能有效抑制過擬合。其主要思想是將每一個(gè)神經(jīng)網(wǎng)絡(luò)單元按照一定的概率暫時(shí)將其隨機(jī)丟棄(Drop),因此每一次訓(xùn)練網(wǎng)絡(luò)都是在訓(xùn)練不同的網(wǎng)絡(luò)模型,這相當(dāng)于是在訓(xùn)練多個(gè)模型進(jìn)行組合。
訓(xùn)練數(shù)據(jù):氣溫?cái)?shù)據(jù)為寶雞市2017年9月到2018年3月每日逐小時(shí)實(shí)況觀測(cè)數(shù)據(jù)。高度場(chǎng)、渦度場(chǎng)、濕度場(chǎng)和溫度場(chǎng)使用空軍T511數(shù)值預(yù)報(bào)模式計(jì)算出的對(duì)應(yīng)數(shù)據(jù)。每個(gè)時(shí)次太陽高度角和方位角數(shù)據(jù)是通過Python的PyEphem庫計(jì)算的。其中,T511數(shù)值預(yù)報(bào)模式為每3小時(shí)一次預(yù)報(bào)。
驗(yàn)證數(shù)據(jù):將2018年3月寶雞市逐3小時(shí)氣溫作為驗(yàn)證數(shù)據(jù)。其特征數(shù)據(jù)為2018年3月T511數(shù)值產(chǎn)品、過去24小時(shí)氣溫、太陽高度角和方位角。輸出為逐3小時(shí)氣溫預(yù)報(bào),并與實(shí)況觀測(cè)數(shù)據(jù)進(jìn)行對(duì)比分析。
本實(shí)驗(yàn)使用Python作為開發(fā)語言,LSTM的構(gòu)建使用Google的Tensorflow開源架構(gòu)。
數(shù)據(jù)清洗流程如圖4所示。
圖4 數(shù)據(jù)清洗流程
對(duì)空值和缺失值的處理,并沒有一種統(tǒng)一的做法,不同數(shù)據(jù)只能根據(jù)數(shù)據(jù)特點(diǎn)分別處理。本文中,為了體現(xiàn)數(shù)據(jù)的連續(xù)性將使用上一條數(shù)據(jù)與下一條數(shù)據(jù)的均值進(jìn)行填充,公式如下:
Xt=(Xt-1+Xt+1)/2
(9)
在實(shí)驗(yàn)中,主要對(duì)未來24小時(shí)的逐3小時(shí)氣溫進(jìn)行預(yù)報(bào)。根據(jù)天氣學(xué)原理, 氣溫除與歷史氣溫相關(guān)外, 還主要與對(duì)流層中下部的氣溫、風(fēng)、水汽含量等大氣物理量有關(guān)。結(jié)合預(yù)報(bào)員的經(jīng)驗(yàn)和氣象工作者的長(zhǎng)期研究,在數(shù)據(jù)特征選擇中,主要選取了850 hpa溫度場(chǎng)、850 hpa濕度場(chǎng)、700 hpa濕度場(chǎng)、850 hpa渦度場(chǎng)、700 hpa渦度場(chǎng)、2 m溫度場(chǎng)。另外,為了表現(xiàn)局地的變化,還加上了太陽高度角和方位角。本文基于經(jīng)驗(yàn),初步選取了9個(gè)特征,并不排除有其他特征量對(duì)結(jié)果有較大影響,并且這9個(gè)特征在作為因變量時(shí),相互之間也會(huì)有一定影響,這在一定程度上也會(huì)對(duì)結(jié)果產(chǎn)生一定偏差。
參數(shù)初始化:對(duì)于輸入層,對(duì)權(quán)重初始化為均值為0,標(biāo)準(zhǔn)差為1的標(biāo)準(zhǔn)正態(tài)矩陣;對(duì)輸出層,初始化為0.1的常數(shù)矩陣;對(duì)LSTM層,從上面公式可以看出有s和h兩個(gè)輸出需要初始化,為了簡(jiǎn)單起見,直接初始化為0。
學(xué)習(xí)率:學(xué)習(xí)率經(jīng)過多次實(shí)驗(yàn),確定為0.001。
時(shí)間步長(zhǎng):時(shí)間步長(zhǎng)可以設(shè)為一周、一個(gè)月甚至一年,隨著時(shí)間步長(zhǎng)的加大,可以學(xué)習(xí)到的數(shù)據(jù)細(xì)節(jié)可能會(huì)更多。但由于本文數(shù)據(jù)量和機(jī)器性能的局限,只把步長(zhǎng)設(shè)為一天。
所采取的預(yù)報(bào)模型如圖5所示。
圖5 預(yù)報(bào)模型
根據(jù)日常氣象業(yè)務(wù)氣溫精細(xì)化預(yù)報(bào)的要求,當(dāng)預(yù)報(bào)氣溫與實(shí)際氣溫之差小于等于2.0 ℃時(shí),預(yù)報(bào)結(jié)果即為正確。所以本文所使用的預(yù)報(bào)準(zhǔn)確率定義如下:
(10)
式(10)的含義是預(yù)報(bào)值與真實(shí)值差的絕對(duì)值小于等于2.0 ℃的個(gè)數(shù)與實(shí)際個(gè)數(shù)的比值,可以看到,模型效果越好,acc越接近1。
逐3小時(shí)氣溫化氣溫預(yù)報(bào)與實(shí)況的具體對(duì)比如圖6所示,橫軸為時(shí)間,單位是小時(shí)(h),縱軸是氣溫,單位是攝氏度(℃),實(shí)曲線為預(yù)報(bào)值,虛曲線為實(shí)況。結(jié)果表明:預(yù)報(bào)準(zhǔn)確率為68.75%,日最低氣溫預(yù)報(bào)準(zhǔn)確率為84.62%,日最高氣溫預(yù)報(bào)準(zhǔn)確率為61.54%,預(yù)報(bào)值能較好地?cái)M合實(shí)況。并且,從實(shí)況曲線中可以看到有兩次天氣轉(zhuǎn)折的過程,這兩次轉(zhuǎn)折也在模型預(yù)報(bào)中體現(xiàn)了出來,說明LSTM神經(jīng)網(wǎng)絡(luò)結(jié)合數(shù)值預(yù)報(bào)產(chǎn)品能對(duì)天氣轉(zhuǎn)折進(jìn)行較好描述。同時(shí)能較好地?cái)M合實(shí)況也說明通過Dropout的方法可以避免過擬合的風(fēng)險(xiǎn)。
圖6 實(shí)況與預(yù)報(bào)數(shù)據(jù)的對(duì)比
所訓(xùn)練模型對(duì)寶雞地區(qū)2018年3月份的氣溫預(yù)報(bào)結(jié)果顯示:
(1) 其氣溫預(yù)報(bào)預(yù)報(bào)準(zhǔn)確率為68.75%,日最低氣溫預(yù)報(bào)準(zhǔn)確率84.62%,日最高氣溫預(yù)報(bào)準(zhǔn)確率61.54%,可以滿足平時(shí)業(yè)務(wù)需要。
(2) 能較好地對(duì)轉(zhuǎn)折天氣的氣溫進(jìn)行預(yù)報(bào)。
(3) 如果運(yùn)用Optimizer和Dropout方法,能較好地解決神經(jīng)網(wǎng)絡(luò)收斂過慢和過擬合的問題。
本文運(yùn)用了LSTM神經(jīng)網(wǎng)絡(luò),對(duì)空軍T511數(shù)據(jù)模式產(chǎn)品進(jìn)行了試用,初步探索了LSTM網(wǎng)絡(luò)在平時(shí)業(yè)務(wù)過程中的使用方法,并且發(fā)現(xiàn)其對(duì)氣溫預(yù)報(bào)的指導(dǎo)性較高,可以運(yùn)用在平時(shí)業(yè)務(wù)過程中。
本文還存在選取的LSTM模型比較簡(jiǎn)單、訓(xùn)練數(shù)據(jù)過小,數(shù)據(jù)特征的選取沒有依靠統(tǒng)計(jì)學(xué)原理等問題。這些問題對(duì)計(jì)算結(jié)果的影響有待進(jìn)一步研究。