第36周:文献阅读

目录

摘要

Abstract

文献阅读

问题引入

研究背景

研究动机

研究目标 

准备工作 

传统数值天气预测方法

基于机器学习的天气预测方法

创新点

实验研究

数据集

模型DCGAN

模型架构

训练策略

模型cGAN

模型架构

训练策略

代码实践 

不确定性量化

集成预测

主要原理 

核心代码 

结果分析

总结


摘要

该文献围绕利用条件生成对抗网络(cGAN)进行(集合)天气预报展开研究。在结构上,依次介绍了研究背景、以往天气预报方法、cGAN模型架构与训练、实验结果及结论。特点在于将天气预报视为视频到视频的映射问题,采用cGAN架构并结合蒙特卡罗随机失活(Monte-Carlo dropout)进行集合预测。优势是计算成本低,能学习大气系统物理过程和固有不确定性,为基于机器学习的天气预报提供误差估计 。研究选择欧洲地区,针对500hPa位势高度、两米温度和总降水量进行预测,这是因为这些参数具有不同的预测难度和实际意义。效果比较显示,位势高度和两米温度预测在定性和定量上与真实再分析数据吻合良好,而总降水量预测效果差,主要受数据分辨率限制。未来改进方向包括在训练网络时纳入更多特征、使用全球或半球数据、重新训练高分辨率降水模型,以及进一步研究蒙特卡罗随机失活策略和将大气初始状态不确定性纳入神经网络训练。  

Abstract

This literature focuses on the use of Conditional Generative Adversarial Networks (cGAN) for ensemble weather forecasting. Structurally, the research background, previous weather forecasting methods, cGAN model architecture and training, experimental results, and conclusions were introduced in sequence. The characteristic is to treat weather forecasting as a video to video mapping problem, using cGAN architecture and combining Monte Carlo dropout for ensemble prediction. The advantage is low computational cost, the ability to learn atmospheric system physical processes and inherent uncertainties, and provide error estimates for machine learning based weather forecasting. The study chose the European region to predict the 500hPa geopotential height, 2-meter temperature, and total precipitation because these parameters have different prediction difficulties and practical significance. The comparison of results shows that the predictions of geopotential height and two meter temperature are qualitatively and quantitatively consistent with real reanalysis data, while the prediction of total precipitation is poor, mainly due to the limitation of data resolution. Future improvement directions include incorporating more features into network training, using global or hemisphere data, retraining high-resolution precipitation models, and further studying Monte Carlo random deactivation strategies and incorporating atmospheric initial state uncertainty into neural network training. 

文献阅读

A generative adversarial network approach to (ensemble) weather prediction

https://www.sciencedirect.com/science/article/abs/pii/S0893608021000459

问题引入

研究背景

传统天气预测依赖于复杂的数值模型,通过求解大气-海洋系统的偏微分方程实现,这种方法计算成本高昂且需要不断改进物理参数化方案。与此同时,气象学积累了大量的观测数据,为数据驱动的预测方法提供了基础。 

研究动机

条件生成对抗网络(cGAN)在学习大气系统基本条件分布方面的能力,即cGAN是否能够通过数据学习气象数据背后的物理过程。此外,该文献还研究了如何通过机器学习方法量化天气预测中的不确定性,举例蒙特卡洛dropout方法开发基于深度学习的集合预测系统,以低成本的方式提供预测的不确定性估计。 

研究目标 

本研究的目标是利用条件深度卷积生成对抗网络(cGAN)预测未来24小时内的500 hPa位势高度、2米温度和总降水量,并评估其预测能力。 

准备工作 

传统数值天气预测方法

传统天气预测依赖于数值模型,这些模型通过求解大气-海洋系统的偏微分方程来预测天气。这些模型从简单的准地转涡度方程(如用于预测500 hPa位势高度的方程)逐步发展到复杂的三维可压缩流体动力学方程,后者是现代操作性天气预报的标准模型。 

缺点:强大的计算资源,并且需要复杂的物理参数化方案来处理未解析的物理过程(如对流、湍流等)

基于机器学习的天气预测方法

卷积神经网络(CNN):早期的研究尝试使用二维卷积神经网络(CNN)预测500 hPa位势高度和800 hPa温度(如文献[27])。

长短期记忆网络(LSTM):一些研究结合LSTM处理时间序列数据,以预测500 hPa位势高度(如文献[31])。

立方体球面卷积网络:最近的研究扩展到全球范围,使用立方体球面上的U-Net型卷积网络进行预测(如文献[32])。

创新点

基于条件生成对抗网络(cGAN)的天气预测 

首次将条件生成对抗网络(cGAN)应用于天气预测,特别是针对特定气象参数(如500 hPa位势高度、2米温度和总降水量)的预测。cGAN能够学习气象数据的条件分布,从而为天气预测提供一种全新的数据驱动方法。 

利用蒙特卡洛Dropout进行集合天气预测 

提出了一种基于蒙特卡洛Dropout的集合天气预测方法,通过在训练和测试阶段引入Dropout噪声,生成多个预测结果,并通过计算均值和标准差来量化预测的不确定性。 

 “视频到视频”(vid2vid)预测框架 

将天气预测问题重新定义为“视频到视频”映射问题,即将过去的气象场(输入帧)映射到未来的气象场(输出帧)。这种框架允许模型一次性预测未来24小时的气象场,而不是逐帧迭代预测。 

实验研究

数据集

本文使用的数据集是欧洲中期天气预报中心(ECMWF)的ERA5再分析数据,覆盖2015—2018年的数据用于训练,2019年的数据用于测试研究区域为欧洲大部分地区(30°N—90°N,-30°E—30°E),原始空间分辨率为0.25°×0.25°,后降采样至128×128网格点以加快训练速度。数据的时间分辨率为3小时。 

在训练前进行数据预处理:数据被标准化处理(减去均值并除以标准差),预测时再反标准化。

该文献中的实验研究选取了三个气象参数作为预测目标:500 hPa位势高度、2米温度和总降水量。

模型DCGAN

DCGAN是生成对抗网络GAN中一种常见的模型结构。其中的生成器和判别器都是神经网络模型。

模型架构

生成器基于U-Net架构,输入过去24小时的二维气象数据(8帧),并一次性预测未来24小时的输出数据。利用转置卷积进行上采样,不断升维,提高分辨率减少通道数

从每一层上的操作来看,除了第一层以外,其余层均包含批归一化+LeakyReLU激活函数。瓶颈层包含两个卷积LSTM层,每层有256个滤波器,用于捕捉时间序列信息,同时引入Dropout和循环Dropout以增强模型的鲁棒性。

判别器采用PatchGAN架构,包含5层卷积层,每层分别有64、128、256、512和1个滤波器。

这些卷积层用于提取输入数据的特征,并判断生成的预测数据是否与真实数据难以区分。最后一层使用Sigmoid激活函数,输出一个概率值,表示输入数据为真实数据的可能性 

训练策略

更新生成器网络

step1 使用生成器生成一批假图像

step2 将生成的假图像输入到判别器中,让判别器来评判真实标签和假图像之间的损失,并反向传播计算生成器的梯度                                           

step3 更新生成器参数

更新判别器网络 

step1 对于真实图像,计算判别器对真实图像的输出和真实标签之间的损失;对于生成的图像,计算判别器对生成图像的输出和假标签之间的损失。

step2 然后进行反向传播计算梯度

step3 将真实图像的损失和生成图像的损失相加得到判别器的总损失

step4 更新判别器的参数

模型cGAN

 CGAN(Conditional Generative Adversarial Network)模型是一种深度学习模型,属于生成对抗网络(GAN)的一种 变体。 基本思想是通过 训练生成器和判别器两个网络,使生成器能够生成与给定条件相匹配的合成数据,而判别器则负责区分真实数据和生成数据。

模型架构

生成器网络

生成器基于U-Net架构,输入过去24小时的二维气象数据(8帧),并一次性预测未来24小时的输出数据。上采样阶段通过转置卷积进行,激活函数为ReLU,最后输出层使用线性激活函数以生成预测结果。

判别器网络

判别器采用PatchGAN架构,包含5层卷积层,这些卷积层用于提取输入数据的特征,并判断生成的预测数据是否与真实数据难以区分。 这种架构能够有效地对生成器的输出进行评估,从而在训练过程中推动生成器生成更接近真实数据的预测结果。

训练策略

损失函数 

上边的两个公式至之中,第一个公式是是普通GAN的损失函数,第二个公式则是cGAN的损失函数,它相较于一般的GAN,图像生成和判别是在知晓真实标签的某一条件下完成的。

import torch.nn as nn
 
model = nn.Sequential(
    nn.Linear(input_size, hidden_size),
    nn.ReLU(),
    nn.Linear(hidden_size, output_size)
)
criterion = nn.CrossEntropyLoss()

优化器 

Adam优化器是一种基于梯度的优化算法,结合了动量法和RMSProp算法的特性。 

learning_rate = 0.001
optimizer = optim.Adam(model.parameters(), lr=learning_rate)
代码实践 

generator

class Generator(nn.Module):
    def __init__(self, z_dim=100, num_classes=10, img_dim=784):
        super(Generator, self).__init__()
        self.gen = nn.Sequential(
            self._block(z_dim + num_classes, 256, leaky_relu=False),
            self._block(256, 512, leaky_relu=False),
            self._block(512, 1024, leaky_relu=False),
            nn.Linear(1024, img_dim),
            nn.Tanh()
        )

    def _block(self, in_channels, out_channels, leaky_relu=True):
        if leaky_relu:
            return nn.Sequential(
                nn.Linear(in_channels, out_channels),
                nn.LeakyReLU(0.1)
            )
        else:
            return nn.Sequential(
                nn.Linear(in_channels, out_channels),
                nn.BatchNorm1d(out_channels),
                nn.ReLU()
            )

    def forward(self, x, labels):
        # 拼接噪声和标签
        x = torch.cat([x, labels], dim=1)
        return self.gen(x)

上述代码描述的是一个生成器网络,通过拼接随机噪声和类别标签,生成与该类别对应的图像。

网络由多个全连接层和激活函数组成,最后使用双曲正切激活函数将输出值压缩到 [-1, 1] 范围内。 

discriminator 

class Discriminator(nn.Module):
    def __init__(self, img_dim=784, num_classes=10):
        super(Discriminator, self).__init__()
        self.disc = nn.Sequential(
            nn.Linear(img_dim + num_classes, 512),
            nn.LeakyReLU(0.1),
            nn.Linear(512, 256),
            nn.LeakyReLU(0.1),
            nn.Linear(256, 1),
            nn.Sigmoid()
        )

    def forward(self, x, labels):
        # 拼接图像和标签
        x = torch.cat([x, labels], dim=1)
        return self.disc(x)

上述代码描述的判别器是一个简单的全连接神经网络,借助拼接输入图像和类别标签,从而判断输入数据是否为真实的。

网络包含三个全连接层,中间使用 LeakyReLU 激活函数,最后使用 Sigmoid 激活函数输出一个概率值。 

不确定性量化

通过蒙特卡洛Dropout方法实现,即在生成器的卷积LSTM瓶颈层中引入Dropout,并在测试阶段保留Dropout操作。

步骤:

step1 通过多次运行生成器(100次),计算每个预测点的均值和标准差(用来预测不确定性)

step2 根据标准差,识别出预测不确定性较高的区域

step3 通过概率锥直观展示预测结果的置信区间

蒙特卡洛Dropout为评估模型预测的可靠性提供了一种低成本的手段,尤其在500 hPa位势高度和2米温度的预测中表现出较好的效果,但在总降水量预测中由于数据分辨率和模型结构的限制,不确定性估计的准确性较低

集成预测

主要原理 

‌蒙特卡洛dropout方法是一种结合了蒙特卡洛方dropout正则化技术的深度学习推断方法,主要用于量化神经网络模型的预测不确定性。  

蒙特卡洛模拟算法的核心思想是利用随机抽样来估计一个函数的期望值或者某个概率分布的特性。

dropout正则化技术是一种有效的防止神经网络过拟合的技术。它通过随机地“丢弃”网络中的一些神经元(即将其输出置为零),来简化网络结构。

 

蒙特卡洛dropout方法 

 

参考文章:一文看尽12种Dropout及其变体-腾讯云开发者社区-腾讯云 

核心代码 
def ensemble_prediction(generator, input_data, num_samples=100):
 
    # 确保模型处于评估模式,但 Dropout 仍然激活
    generator.eval()
    predictions = []

    with torch.no_grad():
        for _ in range(num_samples):
            # 每次运行模型时,Dropout 都会随机丢弃不同的神经元
            output = generator(input_data)
            predictions.append(output)

    # 将预测结果堆叠成一个张量
    predictions = torch.stack(predictions, dim=0)

    # 计算均值和标准差
    mean_prediction = predictions.mean(dim=0)
    std_prediction = predictions.std(dim=0)

    return mean_prediction, std_prediction

 param generator: 生成器模型、param input_data: 输入数据、param num_samples: 生成的样本数量、return: 预测结果的均值和标准差

结果分析

为了量化预测的不确定性,采用3个不同时间段使用条件生成对抗网络(cGAN)进行天气预测,每一组图像包含真实值、预测均值、预测标准差,结果如下:

蓝色较少、红色较多 

如果集合均值与真实值的颜色非常接近,这表明预测值与真实值接近,预测较为准确。 

集合标准差代表了预测结果的不确定性或离散程度。颜色变化较大的区域表示模型预测结果的不确定性较高

对比分析:

1、模型在较短时间内预测效果较好,能够较准确地捕捉气象场的主要特征

2、随着预测时间的增加,模型的预测准确性降低,不确定性增加。

上面的结果图展示了对500 hPa 位势高度、2米温度和总降水量的预测。 接下来单独针对2米温度降水量再次分别进行均值和方差的不确定性衡量。

最终的结果,和上面的基本一致。短时间内表现最好,时间越长预测表现将会下降。 

上面的图表展示了cGAN的模型预测结果,为了提供了模型预测准确性和不确定性的基准,我们继续将ML模型与ERA5数据进行比较

其中的黑线是集合均值、灰色阴影是集合方差、蓝线则是ERA5数据

蓝线与黑线的重合度代表预测准确度,灰色阴影的面积大小代表预测的不确定性 

结果分析:

1、ML模型在位势高度和温度预测上表现较好,但在降水预测上表现不佳。

2、所有气象变量的预测不确定性随预测时间增加而增加,在降水预测上尤其明显。 

同不确定性衡量一样,准确性和不确定性的基准衡量也进行了分变量的单独预测 

总结

这篇文献利用条件生成对抗网络(cGAN)对天气进行预测,特别是针对500 hPa气压层的位势高度、2米温度和总降水量。模型在2015至2018年的ERA5数据上训练,并在2019年数据上测试,显示出对位势高度和温度预测较为准确,但降水预测存在不足。研究还引入蒙特卡洛Dropout方法来量化预测不确定性,以提高预测的可靠性。总体而言,该研究表明cGAN在特定气象参数预测上具有潜力,但在降水预测方面仍需改进。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值