马景奕,刘维成,闫文君
(1.中国气象局气象干部培训学院甘肃分院,甘肃 兰州730020;2.兰州市中心气象台,甘肃 兰州730020)
2019年Reichstein等[1]在《Nature》上发表论文“Deep learning and process understanding for datadriven Earth system science”,充分预示着地球系统科学将随着诸如神经网络、深度学习等人工智能技术的发展,进入到智能化大数据时代。
大气科学作为地球系统科学的重要组成,由于对人类的日常生活以及各行业均密切相关,与气象相关的研究便一直是学术界研究的最前沿[2-5]。气象条件复杂多变,制约气象状态的因素多样、连续、动态、多维的,因此准确预测气象要素一直充满挑战[6]。
气象预报的研究主要以两种方式进行,即基于物理学计算和基于数据驱动。基于物理学的气象预报模型直接模拟大气中物理过程,该过程对大气动力学、热辐射以及绿色空间、湖泊和海洋的影响进行数值分析。目前,大多数商业和公共气象预报系统中都包含此类物理模型[7-9]。数据驱动的模型使用统计数据或基于机器学习的方法进行气象预测。数据驱动模型的优点在于能够在没有任何先验知识的情况下为气象系统检测意外。但这其中可能需要大量数据,且缺乏对模型工作机理的有效解释。相反,基于物理学的方法具有可解释的优势,具有根据观察信息进行外推的潜力。但这种方法也存在先验知识需要明确定义以及运算量大的缺点[1,10]。近年,随着可用功能和观测数量的不断增加,数据驱动模型被广泛地应用于气象预测。
作为传统气象预测和预报方法的补充,随着机器学习(ML)[11-12]和深度学习(DL)[13]技术的快速发展,大大促进了数据驱动模型的使用[14-17]。例如,文献[18]展示了识别三层前馈神经网络模型结构和参数的潜力,以致更好地表示柯林斯附近中型叶河流域的降雨与径流的气象关系。Liu等[19]利用深度神经网络(DNN)模型逐层细化原始天气数据的特征,从而有利于处理大量的天气数据。Alberto等[20]将深度学习(DL)用于智利天气预报,为了在实时决策中提供及时的信息和支持,以适应气候变暖时的极端水文情况,提出了基于深度学习径流模型结合气象预报的水文预警系统。Lu等[21]将基于案例的推理系统以及基于数值模型的降水预测结果,作为预测系统的输入,为推断实际降水值与预测值之间的关系,构建了基于神经网络和案例推理系统的降水数据同化系统。Emilcy等[22]的研究中采用了一个自动编码器来减少和捕获变量之间的非线性关系,然后训练了一个多层感知器来对当地天气进行预测。Shi等[23]将降水临近预报问题表述为一个时空序列预报问题,并提出了基于卷积神经网络预测方法。Ha等[24]使用DBN(深度信念网络)来提高韩国首尔过去的降水、温度等的预测精度,并通过实验证明,在预测降水方面,DBN的表现优于MLP(多层感知器)。
在气象大数据的背景下,深度学习技术可以利用海量且多源的气象数据,拥有充足的观测数据作为训练样本,从而保证了气象预测模型的准确性。为了同时适应不同气象信息的预测需求,发挥前向传输和递归训练优势,本文将神经网络(NN)和基于长短时记忆(LSTM)相结合,提出基于深度学习的气象预测方法,提升气象预测的准确性,从而能够通过历史数据的自主训练,对能见度、温度、露点、风速、风向和气压进行准确预测。
从广义上讲,数据预处理是一个过程,在此过程中,将以通用方式处理和调整不同来源的气象数据,并可以将其广泛使用。数据处理可包含两个方面:一是将具有不同精度的气象数据组合成一个有机的数据,以提供更好的数值预测。二是综合利用不同时期的观测资料,然后将其转化为相应空间气象信息。
狭义地讲,数据预处理被认为是分析和处理符合某些时空分布的观测数据的过程,为数值模型提供接近精确的初始信息。数值模型的初始状态(称为分析)不是仅根据可用的观测值确定的。相反,它是观察和预测的组合:观察是实际系统的当前观察数据,而预测是通过将过去的观察信息传播到当前时间的数值模型生成的预测。该分析将预测信息与当前观测的信息相结合,基本上是通过对两者的加权平均值进行计算。通常,该过程被称为“窄数据预处理”。狭窄的数据预处理过程总是伴随着多变化,包括变量之间的近似关系。观测值是真实系统的,而不是模型对该系统的不完整表示。因此,变量之间的关系可能与模型中的变量具有不同的关系。为了减少这些问题的影响,经常执行增量分析[25]。
在数据预处理过程中,通常涉及成本函数的最小化。典型的成本函数是将分析值与观察值的平方偏差做平方再求和,在此基础上再加上观测值的准确性。这一处理方式,具有确保分析过程不会偏离真实性的作用。
式中,B表示背景误差协方差;H是观测误差协方差;x是初始值;xb是加上扰动后的初值;y是分析值;R为观测误差协方差;i表示第i时段。
本文使用了神经网络(NN)[26]和基于长短期记忆(LSTM)[27]的深度学习方法,实现了气象数据的预测分析。
如图1中,神经网络(NN),也被称为多层感知机,由被称为输入层、输出层和多个隐藏层的多层神经元排列组成[28]。每一层神经元以上一层的输出作为输入,并经过激励函数进行加权处理,从而为下一层的每个神经元提供输入。其中,每个神经元的激活性受到被称为激励函数的功能所支配。
图1 多层神经网络结构
这类网络也称为前馈神经网络,因为信息仅在一个方向上传输,即从输入层到输出层。网络中的各层之间没有反向连接(或循环)。多层神经网络的输出模型为,
式中,x={x1,x2,……,xn}和y={y1,y2,……,yn}分别为输入和输出变量;ω和v是神经网络的互连权值;b代表偏差或阈值;f(⋅)是激励函数,通常为sigmoid或relu函数。
递归神经网络(RNN)是目前功能最强大的神经网络之一,能够处理任意输入模式的信息序列[29]。然而,RNN也存在梯度消失的问题,这使得在训练过程中难以有效地进行反向传播,从而导致大量的计算工作。为了克服这个问题,学者提出了其他的结构,例如门控循环单元和LSTM单元。
如图2所示,展现了时间序列x1,x2,……,xn通过一个展开的LSTM层的工作流程。图2a为展开长-短期存储器单元结构,图2b为LSTM单元结构。LSTM由一个输入层、一个输出层和它们之间的几个递归隐藏层组成。递归隐含层由多个内存模块组成。每个模块包含一个或多个自连接的记忆单元和三个控制信息流的门:记忆门、遗忘门和输出门。其中,xt对应于一个输入特征向量,ht表示输出向量,ct表示细胞状态,它们均在第t时刻上求值。
图2 基于LSTM的深度学习网络 a.长短期存储器单元结构;b.LSTM单元结构。
如图2b中所示的经典LSTM块结构,由被称为门的不同进程组成[30-31]。这些门计算所需的输出,同时需要一个在t时刻的新输入数据,以及t-1时刻的元素。
下列式(3)~式(8)描述了LSTM块中的运算过程[31]。其中,式(3)~式(5)表示输入、输出和遗忘门。这些门将输入数据xt与之前时间步长ht-1进行输出的线性组合,并使用sigmoid激活函数进行处理。另一方面,gt门的生成将成为新单元状态的候选项。式(7)对应于细胞状态ct,它表示一个包含所有先前状态信息的记忆囊。最后,输出ht将依据式(8),通过输出门的元素乘以细胞状态的激活来计算式。
式中,ωi是前一隐含层xt输入与存储器模块之间的连接矩阵;ui是之前步长ht-1中当前隐含层输出与内存模块之间的连接矩阵;b是偏移量;σ是非线性的sigmoid函数。
在LSTM结构中,h相当于递归神经网络中对短时输入敏感的部分,而c则实现长时记忆功能,各种门控单元将短时记忆与长时记忆相结合,这种机制使得LSTM实现了信息的长期筛选与保留,并能有效地解决长期依赖问题[32]。
在1.6 GHz、1.8 GHz双核CPU、8GRAM计算硬件上,运用MATLAB仿真编译环境实现了本论文的方法。实验中构建了五层结构的神经网络,其中隐藏层数为3,第一个隐藏层设置8个神经元,第二个隐藏层设置10个神经元,第三个隐藏层设置8个神经元,激励函数选用relu函数,反馈优化函数采用随机梯度下降函数,互连权值ω=0.2、v=0.4,阈值b=0.5。
为了更好地进行比对,论文实验数据采用了美国国家气象中心的气象数据(http://cdo.ncdc.noaa.gov/qclcd/qclcd)。在深度学习的训练过程中,采用了2018年美国9个不同城市每小时气象数据,每个城市代表美国的一个气候区域。如图3所示,这些城市分别是:西雅图、旧金山、科尔特斯、俾斯麦、达拉斯、亚特兰大、印第安纳波利斯、明尼阿波利斯、波士顿。当地气象站每天大约记录40次不同时间间隔的数据。因此,为了使记录之间的时间正常化,我们只使用以每4小时为时间段的记录数据,即9个城市在365天,每天24小时,其中每隔4小时测量一次,总共有19 710次数据记录。每次记录标注六个特征:能见度、温度、露点温度、风速、风向和气压。为了标准化不同的特征,我们将每个特征的均值设为0,然后用该特征的标准差除以该特征的均值,进行归一化处理。
图3 气象数据地域来源示意图
为了确保整个深度学习网络正常,特别是反向传播函数能够正常工作,实验首先在一个非常小的数据集上进行测试,以确保本文方法能够精确地对它进行建模与处理。图4为小数据集上进行训练后的预测结果。其中,绿线展现了未经过深度学习方法训练的预测值,其值与真实结果相差很大。
图4 在小数据集上的温度预测
进一步实验,使用了一个更大的数据集,其中输入数据序列被随机划分为训练集(50%)、验证集(25%)和测试集(25%)。使用本文方法,对来自所有城市的数据(能见度、温度、露点、风速、风向、气压)进行了训练,其三层隐藏层训练误差变化如图5所示。可见,随着训练次数的增加,训练误差明显降低。
图5 训练误差随训练次数的变化情况
图6为六项气象预测值误差随训练次数变化情况,本文方法运用偏导数进行梯度下降,并使用较小的学习率,使得误差下降平滑,并随着训练次数的增加,各项测试误差均线性降低并趋于稳定。
图6 气象预测值误差随训练次数变化情况
如图7、图8所示,列举了其中温度和露点两项,以描述训练后气象预测值与真实值的变化情况。对于图7的温度预测,本文方法在数值预测和趋势预估方面都做得很好,与真实测量值的差距不大。对于图8的露点预测,本文方法能够正确预测未来趋势,但不能很好地反映真实情况的波动。这是由于方法神经网络的层数还不够多造成的,可以通过增加隐藏层层数加以改善。
图7 温度预测值与真实情况分布
图8 露点预测值与真实情况分布
为了检验本文方法性能,运用相同的测试数据选取常用的支持向量机(SVM)[32]进行实验预测对比。图9列举了本文方法(图9a、9b)和SVM方法(图9c、9d)对风速观测值和预测值的最大流量和平均流量的分布,其中灰色点分布为流量分布、红色圆为平均流量。由图10知,SVM模型和本文模型对风速的预测值与实际观测流量最大值和平均流量总体上吻合,但SVM模型预测值误差更为明显,性能略差于本文模型。
图9 不同方法对风速流量的预测分布
图10 两种方法预测值均方检验误差分布图
图10为运用两种预测方法对所有城市,分别针对能见度、温度、露点、风速、风向、压力6项气象指标的预测值均方检验误差分布图。总体比较,本文方法的预测性能始终优于SVM。这是由于本文方法中的反向传播更利于学习目标进行优化,而SVM训练模型只是以“空间距离”为牵引,更容易受到单一数据趋势的过度影响。
(1)着眼于不断增长的气象数据集,探讨人工智能技术在气象领域的应用,提出了一种基于深度学习的气象预测方法。该方法针对气象预测这一重难点,在对量大、繁杂的气象数据进行预处理的基础上,将长短时记忆(LSTM)进行优化,基于深度学习网络进行训练和预测,充分利用了数据元素之间的潜在特征。
(2)提出的方法能够对能见度、温度、露点、风速、风向以及气压气象信息进行准确预测。与经典机器学习方法相比,本文方法进一步提升了预测的准确性,各项预测值的均方检验误差平均值为0.35,比SVM方法平均低38%,能够更好地为气象预测提供参考。
(3)由于深度学习所特有的黒匣理论以及难以解释特性,使得其可解释性范畴目前仍是计算机领域的热点问题。如何更有效地解释神经网络联合长短时记忆预测气象信息的物理机理,仍有待进一步对深度学习原理的进一步研究。