朱思遠,張宸豪,吳邪,耿耀君,楊龍
(西北農林科技大學信息工程學院,咸陽712100)
天氣是農業生產的主要決定因素。在許多不同的尺度上,需要天氣數據來解決各種各樣的問題[1]。通常,計算參考蒸發蒸騰、優化灌溉策略等問題直接使用實際觀測數據進行運算,但在研究地區天氣數據缺失的情況下,模型將使用天氣發生器生成所需數據[2]。雖然我國已有一些關于天氣發生器應用的研究,但所使用的模型需要長期的日氣象數據作為輸入,這使得該模型在氣象數據不足或缺失的地方應用有限。
BP(Back Propagation)神經網絡是一種多層前饋神經網絡模型,可用于擬合任意復雜的非線性函數[3-4]。神經網絡具有良好的魯棒性、聯想記憶、高容錯性和信息并行處理能力,被用于多種任務的函數擬合[3]。
本文提出一種基于BP 神經網絡的天氣發生器模型,可以根據12 個月的月平均天氣數據,模擬生成365天的逐日天氣數據。河南省南陽氣象站從1990 年到2004 年的實測天氣數據被用于訓練網絡模型,使用2005 年到2009 年的數據進行模型驗證。
本文使用的BP 神經網絡結構如圖1 所示,由輸入層、全連接層、批量歸一化層(Batch Normalization,BN)[5]和激活函數組成。

圖1 網絡結構
第一層輸入層InputLayer,是一個全連接層,形狀為(None,6,12),用于接收經過預處理的6 個不同天氣變量12 個月的平均值(取值在[0.,1.]之間),預處理的詳細步驟見1.3。這里的None 不取定值,可表示任意正整數。
接下來,輸入層的數據會被輸入到Dense 層,Dense 層是一個全連接層,形狀為(None,6,128),其中128 是根據經驗選擇的。輸出的數據經過ReLU[6]的激活,引入非線性因素。經過激活的數據會進入批量歸一化層,在這里添加批量歸一化層是為了:①防止過擬合;②減少對網絡初始化的依賴;③解決梯度彌散[5]。
BatchNormalization 層后接一個形狀為(None,6,365)的Dense 層,用于產生6 個變量365 天的逐日天氣數據,Dense 層的輸出經過Sigmoid 激活函數,被映射成[0.,1.]間的數據,作為網絡的輸出。
本文所用的數據來自中國氣象局,包括南陽氣象站從1990 年到2010 年的逐日太陽輻射強度、最高溫度、最低溫度、風速、露點溫度、降水量的實測數據。將1990 年到2004 年的數據用于訓練模型參數,2005 年到2009 年的數據用于模型的有效性驗證。
首先,為簡化問題,將所有2 月29 日的數據剔除,從而保證每年數據的大小相同,得到20×365×6 個數據。然后,將逐日的數據按年份和月份分組,計算每年每月的天氣數據的平均值,得到20×12×6 個數據。最后,將得到的月平均數據進行歸一化處理,將數據映射到[0.,1.]范圍內式(1)。

式中:
x:歸一化前的數據
x*:經過歸一化處理的數據,x*∈[0.,1.]
min:x 所有取值中的最小值
max:x 所有取值中的最大值
網絡中的參數使用的Xavier 初始化[7],從而保證參數梯度不等于0。損失函數使用常用于回歸模型的MAE Loss。使用Adam 優化器優化網絡參數,其中超參數(學習率等)使用Kingma 等人[8]提供的值。batchsize 設置為15,即每次將15 年的數據送入網絡中訓練。
由于風速(單位m/s)和降水量(單位mm)為非負值,所以需要將模型生成的風速和降水量剔除負值(式2)。

式中:
x:處理前的數據
x*:處理后的數據
將訓練結束的模型用于生成2005 年到2009 年南陽站的逐日天氣數據,模擬數據與實測數據的逐日對比見圖2(生成的模擬數據長度為5×365 天,橫坐標跨度較大,為便于展示,圖中僅顯示2006 年的情況)。可以看到,各天氣變量的實測數據與模擬數據的分布大致相同,模型可以很好地刻畫出真實天氣數據的一些特征。

圖2 模擬數據與實測數據的逐日對比
2005 年到2009 年的日照強度、最高氣溫、最低氣溫、風速、露點溫度、降水量的逐日天氣數據與實測數據的均方根誤差RMSE,在365×5 天內,分別為6.310、5.638、5.743、0.951、7.481、9.172;平均絕對百分比誤差MAPE 分別為41.9%、23.6%、7.7%、41.9%、92.9%、208.2%。

圖3 實測數據與模擬數據的分散情況(左:實測數據;右:模擬數據)
為了進一步比較兩組數據的分布情況,使用箱形圖可視化顯示實測數據與模擬數據的分散情況(圖3)和模擬數據相對于實測數據的絕對誤差(圖4)。在圖中,異常值(綠色圓圈)被定義為大于QU+1.5×IQR 或小于QL-1.5×IQR 的值。其中QU是上四分位數,QL是下四分位數,IQR 是QU和QL的差。結果顯示:①除降水量外,各變量的實測數據與模擬數據的分布情況大致相同;②由于極端降水的不確定性,模型對于降水的模擬效果不是很理想。

圖4 模擬數據相對于實測數據的絕對誤差
下面,分析上述誤差存在的原因:
(1)本文設計的神經網絡模型過于簡單,對于各變量內和變量間的約束條件過少;
(2)本文僅分析了南陽氣象站20 年的數據,訓練數據與驗證數據過少;
(3)本文簡單地選取回歸分析常用的MAE Loss 作為損失函數,而由于極端氣候的不確定性,模型對于極端氣候的擬合效果不是很好。對于天氣發生器的任務,可以定制相應的損失函數,進行模型訓練,使之產生的數據更加接近真實分布,這方面還有待進一步研究。
本文將神經網絡應用于天氣發生器,并使用南陽氣象站的天氣數據進行模型有效性驗證,初步探索了神經網絡在天氣發生器方面的應用。實驗結果表明,該模型可以較好地刻畫出真實天氣數據的一些特征,為天氣發生器模型提供了一種具有參考價值的擬合方法。