根据世界气象组织和政府间气候变化专门委员会的报告,人类引起的气候变化已经影响了全球每个地区的许多天气和气候极端事件。自20世纪50年代以来,强降雨事件的频率和强度已经增加,并预计这种情况将继续下去。全球每升温1°C,日极端降水事件预计将加剧约7%。
强对流降水是形成众多灾害性天气的主要原因,对其0-2小时的短时临近预报关系到日常生命财产保护,具有重要意义。然而,因其复杂度高、非线性强,强对流风暴短临预报仍是当前国际前沿热点难点问题。
在此背景下,本文以新型双偏振雷达观测数据和降水格点数据,进行数据预处理,构建了以ConvLSTM为基 本框架的水平反射率因子 𝒁𝒁𝒉𝒉深度学习预测模型 DRPP-Net,为解决预测结果的模糊效应,融合注意力机制模块CBAM和差值优化模块DOM**,** 构建了新型水平反射率因子 𝒁𝒁𝒉𝒉深度学习预测模型 SA-DRPP-DNet,同时为了定量估计降水量,构建了以U-Net为 基本框架,融合了 swin transformer模块和 ASPP模块的 降水量预测模型 PP-Net。对比分析不同数据组合,验证了双偏振雷达观测数据对短临强降水预测具有高贡献度,融合多模态双偏振雷达观测数据,进一步提高模型精度。
针对问题一,首先对双偏振雷达观测数据进行数据预处理,计算了水平反射率因子与
降水量之间的相关性,验证了基本假设;根据问题所给建议的雷达观测数据归一化范围,
利用线性归一化方法,对双偏振雷达数据进行归一化处理;结合前人论文研究,确定水平反射率因子𝑍𝑍ℎ分割阈值变化范围,利用步长法和阈值分割法,以35 𝑑𝑑𝐵𝐵𝑍𝑍为分割阈值,将原始数据中低于35 𝑑𝑑𝐵𝐵𝑍𝑍的数据视为弱降水或无降水情景,不作为样本输入深度学习模型;随机划分训练样本和测试样本,构成样本数据集。然后以ConvLSTM为基本框架,构建水平反射率因子𝑍𝑍ℎ深度学习预测模型DRPP-Net,选取两类具有代表性的降水事件,进行预测结果分析。利用气象预测评估指数CSI、ETS、FAR、MAR、POD和RMSE,对模型精度进行评估,结果表明DRPP-Net模型取得较好的预测结果和较高的精度。
针对问题二,问题一中预测结果存在模糊效应,引入注意力机制CBAM模块和差值优化DOM模块,构建了新型水平反射率因子𝑍𝑍ℎ深度学习预测模型SA-DRPP-DNet。同样对问题一选择的两类代表性降水事件,进行预测结果分析和模型精度评价,并对比问题一的
DRPP-Net模型,结果表明SA-DRPP-DNet缓解了预测结果的模糊效应,提高了预测精度。
针对问题三,首先对降水格点数据进行数据空洞弥补,采用最邻近插值法,进行数值补全,然后以U-Net模型为基本框架,引入了swin transformer模块和ASPP模块,构建了降水量定量估计深度学习模型PP-Net,然后对预测结果进行分析和模型的精度评定,结果表明,PP-Net对降水量的估计,取得了较好的估计结果和不错的预测精度。
针对问题四,首先针对双偏振雷达观测数据对短临强降水预测的贡献度进行分析,设
计了两类模型的不同数据输入组合的共六种组合方案,分别对这六种方案进行精度评定,
结果表明双偏振雷达数据的输入有效提高了降水预测的精度,对降水预测具有高贡献度。
其次,对不同等高面的双偏振雷达观测数据,进行加权数据融合,构建多模态的雷达数据集,输入PP-Net模型,结果表明多模态数据提高了预测精度,使模型取得更好的预测结果。
综上所述,SA-DRPP-DNet和 PP-Net模 型对于短临强降水预测具有良好的精度和泛 用性,预测结果符合预期。
1 问题重述与数据说明
1.1 问题背景
进入21世纪,全球气候变化引发的极端天气气候事件愈加频繁,高温、洪水、飓风、寒潮等极端天气呈现常态化趋势,一是极端天气的频率、强度增加,时空分布模式发生变化;二是灾害的复杂性、极端性、不可预测性增加,容易引发灾害链效应和系统性风险[1]。
《中国气候变化蓝皮书(2023)》显示,中国气候风险指数呈升高趋势,表现为极端高温事件频发趋强,极端强降水事件增多,台风平均强度波动增强。
在全球变暖背景下,暴雨事件会变得更强、更频繁。例如,在全球 1.5℃温升下,当前20年一遇的强降水事件发生频率将增加10%,100年一遇的强降水事件发生频率将增加20%;在全球2℃温升下,当前20年一遇的强降水事件发生频率将增加22%,100年一遇的强降水事件发生频率将增加45%以上。
近年来,我国短临强降水纪录不断刷新,2021年7月20日郑州最大小时降雨量达201.9毫米,突破我国大陆小时降雨量历史极值[2]。
随着我国新一代的气象观测设备如双偏振雷达、降水现象仪等的布设,更多的专家学
者关注强降水物理过程机理和微物理特征分析的研究。其中双偏振雷达可以对不同降水类
型的微物理特征进行全面的分析,通过对水平反射率因子、差分反射率、比差分相移、相
关系数等变量的分析,可以得到有关降水粒子的大小、相态、含水量等信息,从而探究不同对流特征的降水的微物理特征及其演变规律[2,3]。
强降水短时(0~12 小时)和临近(0~2 小时)预报通常也是天气预报业务中的难点,传统强对流天气临近预报主要依靠雷达等观测资料,结合风暴识别、追踪技术进行雷达外
推预报,即通过外推的方法得到未来时刻的雷达反射率因子,并进一步使用雷达反射率因子和降水之间的经验性关系(即Z-R关系)估计未来时刻的降水量[4,5]。而结合大量的气象数据和强大的计算机算力,运用深度学习或机器学习来预测未来降水量的研究发展迅速,
短临强降水数据具有数据量大、时间序列完整等特点,大量深度学习模型被引入短临强降水领域,例如基于传统的卷积神经网络的U-Net、ResNet等模型,和基于循环神经网络的LSTM、BRNN等模型,提高了预测精度[6]。
本篇文章针对提出的问题,在给定的双偏振雷达观测数据和降水格点数据的基础上,
引入深度学习模型,对未来时刻的水平反射率因子𝑍𝑍ℎ和降水量𝐾𝐾𝐷𝐷𝐷𝐷_𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅进行预测,并根据真实值与预测值的差值,引入深度学习模型,对提出的算法模型进行优化。
1.2 问题提出
问题一:如何有效应用双偏振变量改进强对流预报,仍是目前气象预报的重点难点问
题。请利用题目提供的数据,建立可提取用于强对流临近预报双偏振雷达资料中微物理特征信息的数学模型。临近预报的输入为前面一小时(10帧)的雷达观测量(𝑍𝑍ℎ、𝑍𝑍𝐷𝐷𝐷𝐷、𝐾𝐾𝐷𝐷𝐷𝐷),输出为后续一小时(10帧)的𝑍𝑍ℎ预报。
问题二:当前一些数据驱动的算法在进行强对流预报时,倾向于生成接近于平均值的预报,即存在"回归到平均(Regression to the mean)"问题,因此预报总是趋于模糊。在问题一的基础上,请设计数学模型以缓解预报的模糊效应,使预报出的雷达回波细节更充分、更真实。
问题三:请利用题目提供的𝑍𝑍ℎ、𝑍𝑍𝐷𝐷𝐷𝐷和降水量数据,设计适当的数学模型,利用𝑍𝑍ℎ及𝑍𝑍𝐷𝐷𝐷𝐷
进行定量降水估计。模型输入为𝑍𝑍ℎ和𝑍𝑍𝐷𝐷𝐷𝐷,输出为降水量。(注意:算法不可使用𝐾𝐾𝐷𝐷𝐷𝐷变量。) 问题四:请设计数学模型来评估双偏振雷达资料在强对流降水临近预报中的贡献,并优化数据融合策略,以便更好地应对突发性和局地性强的强对流天气。
1.3 全文思路框架
全文的思路框架图如下所示:
图1-1 全文思路框架流程图
2 基本假设
2.1 关于数据的假设
1、 数据有效性假设:获取到的NJU-CPOL双偏振雷达观测数据和降水格点数据已经完成质量控制,其数值是准确的,没有噪声或失真,异常值已经得到剔除。
2、 数据独立性假设:各降水事件之间无任何关联,彼此独立。
2.2 关于模型的假设
1、 降水过程抽象为数值的时间序列,不考虑其他因素的影响,如地形、风向、风速、温 度等。
2、 所有降水事件皆处于统一稳定的大气系统,不存在其他气象因素的影响。
3、 模型得到充分训练。
4、 短临强降水事件具有可预测性,可以利用双偏振雷达观测数据进行预测。
3 符号说明
表3-1 符号说明
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 符号 | 含义 |
| 𝑍𝑍ℎ 𝑍𝑍𝐷𝐷𝐷𝐷 𝐾𝐾𝐷𝐷𝐷𝐷 𝑑𝑑𝐵𝐵𝑍𝑍 𝑑𝑑𝐵𝐵 °𝑘𝑘𝑘𝑘−1 RNN LSTM ConvLSTM DRPP-Net 𝐾𝐾𝐷𝐷𝐷𝐷_𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅 NJU-CPOL CSI ETS FAR MAR POD RMSE Hits False Alarms Misses Correct negatives SA CBAM CAM SAM DOM | 水平反射率因子 差分反射率 比差分相移 水平反射率因子的单位 差分反射率的单位 比差分相移的单位 循环神经网络 长短期记忆神经网络 卷积长短期记忆神经网络 双偏振雷达水平反射率因子预测网络 降水量 双偏振雷达观测数据集 临界成功指数 公平技巧得分 空报率 漏报率 命中率 均方根误差 命中 误警 漏报 正确否定 注意力机制 卷积注意力机制模块 通道注意力机制模块 空间注意力机制模块 差值优化模块 |
SA-DRPP-DNet
Default Relationship
Rosenfeld tropical Realtionship Marshall-Palmer Realtionship swin transformer
Windows Multi-Head Self-Attention
Shifted Windows Multi-Head Self-Attention
融合注意力机制与差值模块的双偏振雷达水平
反射率因子预测网络
传统默认Z-R关系
罗斯菲尔德热带Z-R关系
马歇尔·帕尔默Z-R关系
swin transformer模型
窗口多头注意力机制模块
滑动窗口多头注意力机制模块
|-----------------------|-------------------------------------|
| MLP ASPP U-Net PP-Net | 多层感知机 空洞空间金字塔池化模块 U-Net网络结构 降水量预测网络 |
4 问题一的分析与模型建立
4.1 问题一描述与分析
根据题目的描述,本问题要求根据题目提供的双偏振雷达观测数据建立数学模型,输入不同等高面的前10帧(一小时)的𝑍𝑍ℎ、𝑍𝑍𝐷𝐷𝐷𝐷和𝐾𝐾𝐷𝐷𝐷𝐷数据,预测未来10帧(一小时)的不同等高面的𝑍𝑍ℎ值。
问题一属于时间序列大数据预测问题,数据文件中给出了258个降水事件的双偏振雷达观测数据,总数据量超过78 Gigabytes,传统的雷达回波降水预测方法难以处理大数据量的雷达数据,因此本文引入最新的深度学习模型,旨在输入多个雷达参数指标,从中提取有效特征以进行未来时刻的水平反射率因子𝑍𝑍ℎ预测。
第一步:数据预处理,首先读取数据集中的𝑍𝑍ℎ数据,设计了不同的阈值分割算法,对数据集中降水较少或无降水的降水事件进行剔除,得到符合强降水的要求的数据。
第二步:建立深度学习模型
第三步:模型精度评定
问题一的技术流程图4-1如下:
图4-1 问题一技术流程图
4.2 双偏振雷达原理
传统雷达仅能发射和接收一个偏振方向上的电磁波,而新型的双偏振雷达可同时发射
和接收在水平和垂直两个偏振方向的电磁波,可以根据两个偏振方向上的回波的强度差别、
相位关系等信息获得降水粒子的大小、相态、含水量等信息。
4.2.1 水平反射率因子𝑍𝑍ℎ
水平反射率因子𝑍𝑍ℎ与粒子数浓度和等体积直径的六次方成正比,粒子直径越大,粒子数浓度越高,则水平反射率因子𝑍𝑍ℎ越大,通常能够反映降水的强度,其数学公式如下:
|---------|-------------------------------------------------------------|------------------------|--------------------|-------|
| 𝑍𝑍ℎ = | 4𝜆𝜆4 𝐷𝐷𝑚𝑚𝑚𝑚𝑚𝑚 𝜋𝜋4|𝐾𝐾𝑤𝑤|2 𝐷𝐷𝑚𝑚𝑚𝑚𝑚𝑚 | |𝑓𝑓ℎℎ(𝜋𝜋,𝐷𝐷)|2 | 𝑁𝑁(𝐷𝐷)𝑑𝑑𝐷𝐷 | (4−1) |
其中𝐷𝐷是粒子的直径,单位是𝑘𝑘𝑘𝑘;𝑁𝑁(𝐷𝐷)是单位体积空气、单位尺寸内的粒子数浓度,单位是𝑘𝑘−3𝑘𝑘𝑘𝑘−1;𝜆𝜆是雷达波长,单位是𝑘𝑘𝑘𝑘;𝐷𝐷𝑚𝑚𝑚𝑚𝑚𝑚和𝐷𝐷𝑚𝑚𝑚𝑚𝑚𝑚是粒子直径的最大值和最小值;𝐾𝐾𝑤𝑤是粒子的介电常数;𝑓𝑓ℎℎ(𝜋𝜋,𝐷𝐷)是水平极化方向上的后向散射幅度;水平反射率因子𝑍𝑍ℎ的单位是𝑑𝑑𝐵𝐵𝑍𝑍。
4.2.2 差分反射率𝑍𝑍𝐷𝐷𝐷𝐷
差分反射率为水平极化方向和垂直极化方向回波的反射率因子的比值的对数,主要反
映了观测区域的降水粒子大小。𝑍𝑍𝐷𝐷𝐷𝐷取决于粒子的形状、大小、密度和相态组成,与产生后向散射的粒子浓度无关,其数学公式如下:
|-------------------------|----------|-------|
| 𝑍𝑍𝐷𝐷𝐷𝐷 = 10 log10 | 𝑍𝑍ℎ | (4−2) |
| 𝑍𝑍𝐷𝐷𝐷𝐷 = 10 log10 | 𝑍𝑍𝑣𝑣 | (4−2) |
其中𝑍𝑍𝑣𝑣是垂直反射率因子;差分反射率𝑍𝑍𝐷𝐷𝐷𝐷的单位是𝑑𝑑𝐵𝐵。
4.2.2 比差分相移𝐾𝐾𝐷𝐷𝐷𝐷
比差分相移为单位距离上降水粒子导致的水平和垂直方向回波的相位差,主要反映了
液态含水量。𝐾𝐾𝐷𝐷𝐷𝐷几乎与降水率呈线性关系,取决于粒子浓度、大小和组成成分(即粒子介电常数),不受雷达定标不准、衰减和差分衰减,波束部分阻挡等因素的影响,其数学
公式如下:
|-----------------------------------------------------------------------------|------------------------------------------|---------------------|-------|
| 𝐷𝐷𝑚𝑚𝑚𝑚𝑚𝑚 𝐾𝐾𝐷𝐷𝐷𝐷 = 10−3 180 𝜋𝜋 𝜆𝜆𝑅𝑅𝑒𝑒 𝐷𝐷𝑚𝑚𝑚𝑚𝑚𝑚 | [𝑓𝑓ℎℎ(0,𝐷𝐷)− 𝑓𝑓𝑣𝑣𝑣𝑣(0,𝐷𝐷)] | 𝑁𝑁(𝐷𝐷)𝑑𝑑𝐷𝐷� | (4−3) |
其中𝑅𝑅𝑒𝑒是积分部分的实部值;𝑓𝑓ℎℎ(0,𝐷𝐷)和𝑓𝑓𝑣𝑣𝑣𝑣(0,𝐷𝐷)是水平极化方向和垂直极化方向上
的前向散射幅度,单位是𝑘𝑘𝑘𝑘;比差分相移𝐾𝐾𝐷𝐷𝐷𝐷的单位是°𝑘𝑘𝑘𝑘−1[8]。
4.3 数据预处理
首先对数据进行归一化处理,依据给出的数据说明文件,其中水平反射率因子的归一
化范围为[0,65],差分反射率的归一化范围为[-1,5],比差分相移的归一化范围为[-1,6]。
其次依据假设,水平反射率因子𝑍𝑍ℎ与降水量之间有一定的相关性,采用相关性比较、卡方比较和巴氏距离比较,对数据集中的水平反射率因子和降水格点数据进行相关性分析,
验证了假设的成立,然后对弱降水和无降水情况进行数据剔除。
依据相关资料,部分学者认为水平反射率因子𝑍𝑍ℎ小于30 𝑑𝑑𝐵𝐵𝑍𝑍为弱降水,大于35 𝑑𝑑𝐵𝐵𝑍𝑍且小于40 𝑑𝑑𝐵𝐵𝑍𝑍为较强降水,大于40 𝑑𝑑𝐵𝐵𝑍𝑍为强降水[9],具体阈值分割情况如表4-1:
表4-1 水平反射率因子与降水强度类型的关系
|-------------------------------------------------|-----------------|
| 水平反射率因子(𝑑𝑑𝐵𝐵𝑍𝑍) | 降水强度类型 |
| 𝑍𝑍ℎ<35 35<𝑍𝑍ℎ<40 40<𝑍𝑍ℎ<60 𝑍𝑍ℎ>60 | 弱降水 较强降水 强降水 冰雹 |
8 总结与评价
8.1 模型的结论与评价
8.1.1 模型的优势
SA-DRPP-DNet模型对水平反射率因子的未来一小时预测,精度高,不受预测时间影响,能很好地反映未来一小时的强对流降水的发展历程,通过气象预测评估指数,极大地保证了预测结果的合理性和正确性,有效缓解了预测结果的模糊效应。
PP-Net模型在降水量定量估计上,取得了较好的精度,在数据输入方面,考虑了输入数据的广度,融合了多模态数据,进一步提高了模型精度。
8.1.2 模型的劣势
预测结果的模糊效应虽然被缓解,但依然存在,一定程度上影响了最终的结果,后续将进一步改善模型。
并未考虑融合传统的Z-R关系,由于数据限制,并未添加气象相关的物理属性,后续将增加数据广度,增强模型的物理意义。
8.2 模型的推广与改进
8.2.1 模型的推广
本文在研究短临强降水情景下,水平反射率因子未来预测与降水量定量估计中,并未
使用传统的模型,而是融合深度学习算法,既考虑了数据本身的自我关联性和独立性,取
得了较高的精度。因此,气象行业从业人员可以考虑使用本文建立的模型,进行短临强降水的预测。
8.2.2 模型的改进
对于问题二优化后的模型,可以进一步提高硬件性能,对数据集进行多次训练,提高
样本的利用率,也可以进一步增加可用的模块,提高对强降水的指标敏感度,提升预测准确性。
对于问题三,由于提供的是多个降水场景的降水格点数据,降水类型多样,可以进一步对降水事件进行分类,提高对各种降水类型的适应度,提高模型泛用性。
可以进一步融合传统的Z-R关系算法,提升模型的可解释性。
代码:
DRPP-Net:
import torch.nn as nn
import torch
class ConvLSTMCell(nn.Module):
def init(self, input_dim, hidden_dim, kernel_size, bias): """
Initialize ConvLSTM cell.
Parameters
input_dim: int
Number of channels of input tensor.
hidden_dim: int
Number of channels of hidden state.
kernel_size: (int, int)
Size of the convolutional kernel.
bias: bool
Whether or not to add the bias.
"""
super(ConvLSTMCell, self).init()
self.input_dim = input_dim
self.hidden_dim = hidden_dim
self.kernel_size = kernel_size
self.padding = kernel_size[0] // 2, kernel_size[1] // 2
self.bias = bias
self.conv = nn.Conv2d(in_channels=self.input_dim + self.hidden_dim,
out_channels=4 * self.hidden_dim,
kernel_size=self.kernel_size,
padding=self.padding,
bias=self.bias)
def forward(self, input_tensor, cur_state):
h_cur, c_cur = cur_state
combined = torch.cat([input_tensor, h_cur], dim=1) # concatenate along channel axis
combined_conv = self.conv(combined)
cc_i, cc_f, cc_o, cc_g = torch.split(combined_conv, self.hidden_dim, dim=1) i = torch.sigmoid(cc_i)
f = torch.sigmoid(cc_f)
o = torch.sigmoid(cc_o)
g = torch.tanh(cc_g)
c_next = f * c_cur + i * g
h_next = o * torch.tanh(c_next)
return h_next, c_next
def init_hidden(self, batch_size, image_size):
height, width = image_size
|--------|--------------------------|------------------|---------|--------|
| return | (torch.zeros(batch_size, | self.hidden_dim, | height, | width, |
device=self.conv.weight.device),
|-------------------------|------------------|---------|--------|
| torch.zeros(batch_size, | self.hidden_dim, | height, | width, |
device=self.conv.weight.device))
class ConvLSTM(nn.Module):
"""
Parameters:
input_dim: Number of channels in input
hidden_dim: Number of hidden channels
kernel_size: Size of kernel in convolutions
num_layers: Number of LSTM layers stacked on each other batch_first: Whether or not dimension 0 is the batch or not bias: Bias or no bias in Convolution
return_all_layers: Return the list of computations for all layers Note: Will do same padding.
Input:
A tensor of size B, T, C, H, W or T, B, C, H, W
Output:
A tuple of two lists of length num_layers (or length 1 if return_all_layers is False).
0 - layer_output_list is the list of lists of length T of each output 1 - last_state_list is the list of last states
each element of the list is a tuple (h, c) for hidden state and memory
Example:
>> x = torch.rand((32, 10, 64, 128, 128))
>> convlstm = ConvLSTM(64, 16, 3, 1, True, True, False) >> _, last_states = convlstm(x)