趙鵬飛,魏宏安
(福州大學(xué)物理與信息工程學(xué)院,福州350100)
二十一世紀(jì)以來,中國的城市化,工業(yè)化和經(jīng)濟的快速發(fā)展導(dǎo)致了中國主要城市PM2.5 濃度的持續(xù)升高,霧霾天氣越發(fā)頻繁地出現(xiàn),空氣質(zhì)量也不停地下降,特別是空氣中的PM2.5 已經(jīng)對廣大群眾的日常性的生產(chǎn)和生活造成了惡劣干擾。PM2.5,也稱為細(xì)顆粒物質(zhì),是指在環(huán)境空氣中空氣動力學(xué)當(dāng)量直徑為2.5 微米或更小的顆粒物質(zhì)。他們的體積特別小,可以深深進入肺部,因此對人體健康危害較大[1],還會導(dǎo)致大氣能見度下降[2]。它可以長時間懸浮在空氣中,空氣中的濃度越高,空氣污染就越嚴(yán)重[3]。PM2.5 濃度居高不下,霧霾頻發(fā)成為社會廣泛關(guān)注的亟待解決的問題。提前掌握空氣中未來時刻的PM2.5 濃度,可以使人們更好地安排出行活動,提前準(zhǔn)備防護裝備,保護人身健康,還可以為霧霾污染治理工作提供科學(xué)的數(shù)據(jù)支持[4],更好地研究造成污染的因素,以便及時進行污染源管控。
國內(nèi)外的研究者不斷地利用更優(yōu)化的神經(jīng)網(wǎng)絡(luò)對PM2.5 濃度進行預(yù)測。Patricio Perez 等人[5]使用多層神經(jīng)網(wǎng)絡(luò)和線性回歸方法分別對城市PM2.5 小時濃度進行預(yù)測,研究證明神經(jīng)網(wǎng)絡(luò)方法比線性回歸方法預(yù)測效果更好。張怡文等人[6]利用神經(jīng)網(wǎng)絡(luò)對PM2.5 進行預(yù)測,該模型可以達(dá)到較高的準(zhǔn)確率和召回率,但因為沒有反向傳播機制導(dǎo)致耗費大量時間調(diào)整參數(shù),并且數(shù)據(jù)量少。王敏等人[7]采用BP 人工神經(jīng)網(wǎng)絡(luò)模型對城市PM2.5 進行預(yù)測,但BP 神經(jīng)網(wǎng)絡(luò)是機器學(xué)習(xí)預(yù)測方法,是淺層神經(jīng)網(wǎng)絡(luò),不能學(xué)習(xí)數(shù)據(jù)之間的深度特征關(guān)系,并且存在預(yù)測精度不足的問題。
本文以北京市為研究區(qū),依據(jù)越來越被認(rèn)可的深度學(xué)習(xí)知識,使用TensorFlow 深度學(xué)習(xí)平臺、深度循環(huán)神經(jīng)網(wǎng)絡(luò)GRU 和Attention 注意力機制,采用大樣本數(shù)據(jù)進行模型訓(xùn)練,深入挖掘出PM2.5 與各氣象因子間存在的本質(zhì)性聯(lián)系,建立基于Attention+GRU 的PM2.5預(yù)測模型。
本文所用數(shù)據(jù)集為從機器學(xué)習(xí)數(shù)據(jù)集網(wǎng)站UCI Machine Learning Repository 下載的氣象數(shù)據(jù)集。該數(shù)據(jù)集提供了2010 年1 月1 日0 時-2014 年12 月31 日24 時北京市的PM2.5 濃度數(shù)據(jù)及相關(guān)環(huán)境數(shù)據(jù)。數(shù)據(jù)集中每小時有一個節(jié)點(記錄),每條節(jié)點(記錄)都有12 種數(shù)據(jù):年、月、日、小時、PM2.5 濃度、露點、溫度、氣壓、風(fēng)向、風(fēng)速、累積小時雪量和累積小時雨量等。本文選擇以上除日期信息和PM2.5 外的其他7 個當(dāng)前時刻氣象因子作為PM2.5 預(yù)測模型的輸入特征,選擇當(dāng)前時刻PM2.5 濃度作為輸出特征。
北京市2010 年-2014 年間的PM2.5 濃度、露點、溫度、氣壓、風(fēng)速、累積小時雪量和累積小時雨量的數(shù)據(jù)分布情況如圖1 所示。
圖1 數(shù)據(jù)集各特征分布圖
從圖1 可得到以下信息:PM2.5 濃度分布比較均勻,在冬季數(shù)值比夏季略高;露點、溫度、氣壓隨季節(jié)呈現(xiàn)出類似正(余)弦曲線的波動;風(fēng)速和降雪量冬天比較大,夏天比較??;降雨量冬天比較小,夏天比較大。
GRU(門控循環(huán)單元)是RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))的一種,是LSTM(長短時記憶單元)的一種效果很好的變體[8],它比LSTM 網(wǎng)絡(luò)的結(jié)構(gòu)更加簡單,訓(xùn)練完成時間也更短,而且效果也很好。相較于普通的神經(jīng)網(wǎng)絡(luò),RNN 的特點在于,RNN 可以處理時間序列數(shù)據(jù),能夠建立歷史輸入信息和當(dāng)前輸入信息之間的時間相關(guān)性。GRU 是由Cho 等人[9]在2014 年提出,通過門控機制使循環(huán)神經(jīng)網(wǎng)絡(luò)不僅能記憶過去的信息,同時還能選擇性地忘記一些不重要的信息,在保留長期序列信息的情況下減少梯度消失問題。GRU 在語音識別、機器翻譯、語言建模等自然語言處理領(lǐng)域有應(yīng)用,也常被用于各類時間序列預(yù)測或者結(jié)合CNN(卷積神經(jīng)網(wǎng)絡(luò))后處理計算機視覺領(lǐng)域問題。
LSTM 的歷史信息通過控制三個門(輸入門、遺忘門、輸出門)進行更新[10-11]。而在GRU 中只有兩個門:更新門和重置門。GRU 的記憶單元的示意圖如圖2 所示。重置門確定是否遺忘先前的狀態(tài)信息,這可以看做是將LSTM 中的遺忘門和輸入門合二為一。更新門決定是否要將隱藏狀態(tài)更新為新的狀態(tài),相當(dāng)于LSTM中的輸出門。更新門則可以確定隱藏狀態(tài)是否有必要轉(zhuǎn)換為新狀態(tài),具有和LSTM 中的輸出門一樣的作用。
圖2 GRU記憶單元結(jié)構(gòu)
更新門zt、重置門rt、本單元狀態(tài)和本單元輸出ht依次按照下式(1-4)計算。
其中:rt表示重置門,zt表示更新門。σ 是sigmoid函數(shù);tanh 是雙曲正切函數(shù);·表示點積。是t 時刻以及之前時刻本單元存儲的所有有用信息的隱狀態(tài)向量,ht是經(jīng)過處理后,最終被保留的當(dāng)前單元的信息,并被傳遞到下一個單元中。當(dāng)rt趨于0 時,前一個時刻的狀態(tài)信息ht-1會被遺忘,隱藏狀態(tài)會被重置為當(dāng)前輸出信息ht。
Attention 機制的靈感來自人類觀察行為。人在觀察一張圖片時,首先會快速掃描全局圖像,獲得圖片中需要重點關(guān)注的目標(biāo)區(qū)域,并作為注意力焦點。然后對注意力焦點投注全部注意力,進而獲得更多所需要的細(xì)節(jié)信息,并摒棄其他無用信息。
Attention 模塊從經(jīng)過GRU 模型的序列中學(xué)習(xí)到每條序列的重要程度,分別生成不同的權(quán)重參數(shù),將各序列加權(quán)求和。從而使重要信息獲得更多關(guān)注,并不同程度抑制其他價值小的信息。Attention 機制既有全局聯(lián)系又有局部聯(lián)系,可以更好地捕獲長期依賴關(guān)系,提高PM2.5 濃度的預(yù)測精度。
Attention 機制的公式如下所示。
hi為經(jīng)過GRU 模型輸出的數(shù)據(jù),W1和W2為兩個參數(shù),Zt為隱狀態(tài),tanh()為雙曲正切函數(shù),用于非線性變換,softmax()函數(shù)用于將輸入歸一化,將得到的權(quán)重
在現(xiàn)實世界中,直接獲取的數(shù)據(jù)通常會是缺失某些值,單位不一致的臟數(shù)據(jù)。因此,我們不可能直接使用它們進行模型訓(xùn)練,挖掘數(shù)據(jù)關(guān)系。為了提高模型預(yù)測的精度,降低實際訓(xùn)練所需要的時間,必須要對氣象數(shù)據(jù)實行預(yù)處理操作。
對本數(shù)據(jù)集的具體操作為,將數(shù)據(jù)集中的年月日時信息修改為索引,刪除PM2.5 數(shù)據(jù)集中出現(xiàn)連續(xù)空值的時間段數(shù)據(jù)、將其余少量缺失數(shù)據(jù)填充為前一數(shù)據(jù)、修改數(shù)據(jù)集格式以便神經(jīng)網(wǎng)絡(luò)讀取、將以小時為單位的數(shù)據(jù)每24 小時的數(shù)據(jù)求平均值轉(zhuǎn)換為以天為單位的數(shù)據(jù)、采用小波變換模極大值去噪法去除數(shù)據(jù)集的無用信息和異常值、對風(fēng)向特征進行獨熱編碼、進行歸一化處理。經(jīng)過預(yù)處理的數(shù)據(jù)集前五條數(shù)據(jù)如表1所示。
表1 預(yù)處理后前五條數(shù)據(jù)
從表1 中能得知,數(shù)據(jù)經(jīng)過預(yù)處理后,各值處于0到1 之間,無空值,避免了由奇異樣本數(shù)據(jù)導(dǎo)致的模型訓(xùn)練不良的影響,有利于進行模型訓(xùn)練和測試。再按照季節(jié)將五年時間長度的數(shù)據(jù)集分為春、夏、秋、冬四個數(shù)據(jù)集,依據(jù)留出法從每個季節(jié)數(shù)據(jù)集中隨機抽取20%的數(shù)據(jù),將抽取出的數(shù)據(jù)合并為測試集,其余的數(shù)據(jù)合并為訓(xùn)練集,打亂訓(xùn)練集和測試集的樣本排列順序。再通過數(shù)據(jù)平移操作將時間序列數(shù)據(jù)集轉(zhuǎn)化為監(jiān)督學(xué)習(xí)數(shù)據(jù)集。
深度學(xué)習(xí)通過堆疊多層神經(jīng)網(wǎng)絡(luò)和依靠隨機優(yōu)化,將數(shù)據(jù)的低層特征轉(zhuǎn)換為更抽象的高層次特征,并以次保留數(shù)據(jù)間的分布式特征關(guān)系?;贏ttention+GRU 的預(yù)測模型由輸入層、隱藏層、輸出層組成,如圖3 所示。
圖3 基于Attention+GRU的PM2.5預(yù)測模型
深度學(xué)習(xí)模型最核心的設(shè)計是位于模型中間的隱藏層,設(shè)置了3 層GRU 神經(jīng)單元,每層包含256 個神經(jīng)元,通過向前操作,將之前的歷史信息選擇性地不斷向后傳遞。每個新輸入數(shù)據(jù)的和神經(jīng)網(wǎng)絡(luò)中保留的信息經(jīng)過處理形成每個階段的輸出。將經(jīng)過3 層GRU神經(jīng)網(wǎng)絡(luò)處理后的數(shù)據(jù)輸入到Attention 機制,對每個輸出序列數(shù)據(jù)分別計算權(quán)重后加權(quán)求和,再傳遞到輸出層。輸入層的輸入特征為當(dāng)前時刻的7 個特征(露點、溫度、氣壓、風(fēng)向、風(fēng)速、累積小時雪量和累積小時雨量)。輸出層的輸出特征為PM2.5 濃度。
本文采用深度學(xué)習(xí)框架TensorFlow 中的GRUCell函數(shù)創(chuàng)建神經(jīng)元,再通過MultiRNNCell 函數(shù)將包含GRU 神經(jīng)元的三個神經(jīng)網(wǎng)絡(luò)層進行線性疊加,構(gòu)建多層GRU 神經(jīng)網(wǎng)絡(luò)。Attention+GRU 模型具體設(shè)置如下:
(1)模型隱藏層設(shè)置
構(gòu)建3 層GRU 網(wǎng)絡(luò)模型,且每層具有256 個神經(jīng)元;神經(jīng)層間的激活函數(shù)皆為tanh 函數(shù);使用Dropout函數(shù)配置每一層網(wǎng)絡(luò)節(jié)點的輸入舍棄率設(shè)置為0.1,輸出舍棄率設(shè)置為0.2,避免過擬合情況的發(fā)生;隱藏層連接Attention 機制,再用dense 函數(shù)添加全連接層,再連接輸出層,并將linear 函數(shù)設(shè)置為該層的激活函數(shù)。
(2)Attention 機制設(shè)置
權(quán)重向量采用隨機常數(shù)函數(shù)初始化;將輸入數(shù)據(jù)經(jīng)過tanh()函數(shù)進行非線性變換;使用softmax()函數(shù)將數(shù)據(jù)歸一化處理得到參數(shù);用矩陣乘法操作進行加權(quán)求和;再次使用tanh()函數(shù)進行非線性變換;使用Dropout 函數(shù)進行防過擬合措施,舍棄率設(shè)置為0.2。
(3)模型參數(shù)設(shè)置
模型結(jié)構(gòu)屬性設(shè)置好之后還需要進行另一些必要設(shè)置,模型的學(xué)習(xí)率、優(yōu)化器、損失函數(shù)、權(quán)重和偏置。經(jīng)過多次試驗后,本模型選擇設(shè)置學(xué)習(xí)率為0.00001,將損失函數(shù)設(shè)置為絕對值均差(MAE)損失函數(shù),將優(yōu)化器設(shè)置為Adam 優(yōu)化器,選擇xavier 函數(shù)為權(quán)重初始化,將偏置設(shè)為常數(shù)0。
(4)模型訓(xùn)練設(shè)置
將batchsize(同批次訓(xùn)練的樣本數(shù))設(shè)置為128,batchsize 過大容易使loss 陷入局部最低點,模型準(zhǔn)確性也會下降;epoch(訓(xùn)練輪數(shù))設(shè)置為1000,過小會造成模型學(xué)習(xí)不充分;將訓(xùn)練集數(shù)據(jù)分配給占位符X 和Y;輸出每一輪訓(xùn)練的損失函數(shù)值。
(5)模型預(yù)測
將測試集X 輸入訓(xùn)練完成后的模型,輸出測試集的loss 值,并將預(yù)測結(jié)果和測試集Y 進行比較,計算他們的均方根誤差RMSE。
數(shù)據(jù)集包含北京市2010 年-2014 年的43824 條逐小時氣象數(shù)據(jù),經(jīng)預(yù)處理后為1825 條有效數(shù)據(jù)。再按照留出法,隨機選擇其中20%的數(shù)據(jù)組合為測試集,共328 條數(shù)據(jù),剩余80%數(shù)據(jù)組成訓(xùn)練集,共1497 條數(shù)據(jù)。
將上述數(shù)據(jù)輸入到Attention+GRU 模型和GRU 模型中進行對比預(yù)測。圖4 為Attention+GRU 模型訓(xùn)練集每輪的損失值圖,圖5 為GRU 模型訓(xùn)練集每輪的損失值圖??梢钥闯觯珹ttention+GRU 模型的損失曲線下降更快,損失值最小值更小,預(yù)測精度更高。
圖4 Attention+GRU模型訓(xùn)練損失值圖
圖5 GRU模型訓(xùn)練損失值圖
為了顯示預(yù)測效果,用測試集的PM2.5 實際濃度值減模型預(yù)測值得到差值,圖6 為Attention+GRU 模型預(yù)測的PM2.5 濃度差值散點圖,圖7 為GRU 模型預(yù)測的PM2.5 濃度差值散點圖??梢钥闯?,實際值和預(yù)測值數(shù)據(jù)重合度很高,絕大部分差值分布在0 值附近。Attention+GRU 模型和GRU 模型都可以較好預(yù)測PM2.5 濃度值。Attention+GRU 模型預(yù)測的差值比GRU 模型預(yù)測的差值點更集中于0 值,Attention+GRU模型比GRU 模型對PM2.5 濃度預(yù)測更精準(zhǔn)。
圖6 Attention+GRU模型預(yù)測的差值圖
圖7 GRU模型預(yù)測的差值圖
Attention+GRU 模型訓(xùn)練集數(shù)據(jù)的最后一輪損失值為0.0737,測試集數(shù)據(jù)的損失值為0.0722,測試集數(shù)據(jù)的均方根誤差為8.5616。GRU 模型訓(xùn)練集數(shù)據(jù)的最后一輪損失值為0.1031,測試集數(shù)據(jù)的損失值為0.1019,測試集數(shù)據(jù)的均方根誤差為10.9736。根據(jù)實驗結(jié)果數(shù)據(jù)可知,兩個模型都可以準(zhǔn)確預(yù)測PM2.5 濃度,但Attention+GRU 模型對PM2.5 濃度的預(yù)測精度比GRU 模型的預(yù)測精度高很多。
本文首先獲取了大量氣象因子和PM2.5 數(shù)據(jù),選擇了7 個氣象因子作為預(yù)測PM2.5 濃度的輸入特征,滿足了深度學(xué)習(xí)模型訓(xùn)練的需要。在數(shù)據(jù)預(yù)處理過程中,修改數(shù)據(jù)集數(shù)據(jù)格式以便模型輸入、對各特征數(shù)據(jù)進行異常值處理、對風(fēng)向進行獨熱編碼、對各數(shù)據(jù)歸一化處理,按照留出法以8:2 的比例劃分訓(xùn)練集、測試集。然后搭建三層Attention+GRU 模型,設(shè)置學(xué)習(xí)率、訓(xùn)練輪數(shù)、損失函數(shù)及優(yōu)化器。最后,將分割好的訓(xùn)練集輸入構(gòu)建的Attention+GRU 模型,不斷調(diào)整參數(shù)優(yōu)化模型,并在測試集進行模型性能評估,并與GRU 模型進行對比。結(jié)果表明,基于深度Attention+GRU 的PM2.5 預(yù)測模型預(yù)測性能良好,預(yù)測值與實際值相近,比GRU 模型預(yù)測精度更高。該結(jié)果具有重要的實際應(yīng)用價值,可以及時提醒人們,免遭霧霾侵蝕健康,為空氣污染的治理工作提供數(shù)據(jù)支持。接下來,可以改進模型結(jié)構(gòu)、調(diào)整訓(xùn)練輪數(shù)、調(diào)整學(xué)習(xí)率、加快模型訓(xùn)練速度、增加輸入特征、提高模型預(yù)測準(zhǔn)確度等方面進行深入研究。