GraphCast:基于机器学习的全球中期天气预测模型

文章信息

文章题为”GraphCast: Learning skillful medium-range global weather forecasting”,该文章于2023年发表至Science,文章内容主要关于利用机器学习模型,实现高效、准确的全球中期天气预测。由于文章内容较多,本文仅对研究背景、模型方法进行简要介绍。

引入

全球中期天气预报对许多社会和经济领域的决策至关重要。传统的数值天气预报模型(NWP)需要增加计算资源来提高预报精度,但不能直接利用历史天气数据来提升基础模型的预测精度。相较于传统的数值天气预报模型而言,这类预测模型难以直接使用历史数据中进行训练。而基于机器学习的天气预报模型(MLWP)能够直接利用历史数据训练模型,提升精度,弥补了NWP的缺点。同时,这种直接利用数据的方法使得模型有可能从数据中的提取那些不易用显式方程表示的关系从而提高预测的准确性。文章提出了一种基于机器学习的方法,称为GraphCast,该模型可以直接从再分析数据中进行训练,并且能够在一分钟内以0.25°的分辨率在全球范围内预测超过10天的数百个天气变量。文章表明,GraphCast在1380个验证目标中的90%上显著优于最准确的操作确定性系统,并且它的预测支持更好的严重事件预测,包括热带气旋、大气河流和极端温度。

中期天气预测旨在提前预测未来一段时间的大气变量,例如10天。文章所预测的指标如下表所示,包括地表变量和大气变量。由于需要分别预测不同压强水平下的大气变量,因此总变量数为(5+6*37),即227个。

f3e3d85dba76674d3e12862e66fb79bf.jpeg

符号及问题定义

符号定义:文章定义t表示预测时间步长索引;T表示预测范围,即预测总步数;d表示有效时间,指示特定天气状态的日期时间;表示预测初始时间步;表示预测步骤持续时间,指示在一个预测步骤中经过多少时间;表示预测提前期,表示预测中经过的时间e05b31c56c0e8fa13c4fc4c64edb5ef3.jpeg

问题定义:中期全球天气预测任务旨在利用历史的天气指标,利用一个潜在的离散时间动力学函数,通过自回归的方法,实现未来天气的预测。

f0bf037d023ad3131d27ba3792f625e4.jpeg

然而,通常而言,天气指标难以直接观测获取,因此文章定义为完整天气指标的一个近似。研究问题旨在找到该动力学系统中一个正确高效的模型,该模型能够有效地预测某一预测范围内的天气状况,通过自回归的方式,实现天气预测。

4d366778198118d00a2fd520dd8da279.jpeg

该任务的损失函数即为最小化真实值和预测值之间的误差,如下式所示。

85da2505c07c1ffec1e063fb4f3d4ec5.jpeg

GraphCast结构简介

文章提出了一种名为GraphCast的全球中期天气预报的新MLWP方法,它可以在单个Google Cloud TPU v4设备上在一分钟内生成准确的10天预报,并支持包括预测热带气旋路径,大气河流和极端温度在内的应用程序。

6642fbfac15dcd2a754944b1e7378231.jpeg9aee601b32a1fab564317ce5ef83ce1d.jpeg

首先,GraphCast将地球最近的两种天气状态(当前时间和6小时前的天气状态)作为输入,并预测6小时前的下一种天气状态。由于预测精度为0.25°,因此文章依据经纬度将地球划分为网格,每个单个天气状态由0.25°经纬度网格(721 × 1440)表示,如上图所示。其中,黄色图层表示5个地表变量,蓝色图层表示每个压强水平下的大气变量,共222个大气变量。和NWP系统一样,GraphCast是自回归的:该模型可以通过将自己的预测结果作为输入,输入至模型中从而得到新的结果,以生成任意长的天气状态轨迹。

GraphCast是一种基于图神经网络(GNN)的神经网络架构,采用“编码-处理解码”配置,共有3670万个参数。GraphCast的框架如下图所示,包含encoder、processor和decoder。其中,Encoder使用单个GNN层将经过归一化后的变量从输入网格(grid)上的节点属性映射为内部“多网格”(multi-mesh)表示上的学习节点属性。其中,multi-mesh是一种空间同质的图形,在全球范围内具有很高的空间分辨率。该网格是通过将一个正二十面体(12个节点,20个面,30个边)经过6次迭代细化而获得的,其中每次细化将每个三角形分成4个更小的三角形并将节点重新投影到球体上。该结果包含40,962个节点,并将过程中创建的所有边进行合并,所构成的集合作为边集,形成不同长度边的平面层次结构。Processor使用16个非共享GNN层在多网格上执行学习的消息传递,以较少的消息传递步骤实现高效的本地和远程信息传播。Decoder将processor中的最后一层从multi-mesh的表示中学习到的特征映射回经纬度网格。decoder使用单个GNN层,并将输出预测为对最近输入状态的残差更新。

d1c1aee651dab9be27d95a4751cc4f51.jpeg

GraphCast原理简介

生成预测值:GraphCast模型被定义为一步学习模拟器,GraphCast即为问题定义中的,该模型根据两个连续的输入状态预测下一步,如下式所示。

f4895f46d85d55d2b1dc0670bd043988.jpeg

GraphCast通过自回归的方式实现中期预测,如下式所示。

53560226926d2696ceb009e3e4688947.jpeg

GraphCast中的图结构:GraphCast采用“encoder-processor-decoder”结果,并仅使用GNN实现模型构建,其中encoder将输入经纬度网格上的地表和大气特征映射到multi-mesh结构中,processor在多网格上执行多轮消息传递,decoder将multi-mesh结构中节点的特征映射回输出经纬度网格。该模型在图6f6efbf1972622d6d26e6b2b43672b42.jpeg上进行运算。每个集合的解释如下。

网格点集合:表示网格点构成的集合每个网格节点代表给定经纬度点的大气垂直切片,每个网格的特征表示为7a96f9d61a110dc8000c56608e160134.jpeg,其中表示天气状态;由时间相关的特征组成,这些特征可以分析计算,不需要通过GraphCast进行预测;为常数,共计474个输入特征。

f9c39ae742363d88f0d6c79a8fd3e96f.jpeg

Mesh点集合:表示multi-mesh结果中每个节点的集合,multi-mesh结构是由一个正20面体经过迭代细化构成的结构,上图展示了迭代的过程,其中迭代过程中的节点数和边数如下表所示。由于这种迭代的构造形式,第r-1次迭代所构造的图对应的节点集为第r次迭代所构造图节点集的子集,因此,只包括最后一次迭代中构成图像对应的所有节点,每个节点包括三个特征,即节点对应纬度的余弦,以及经度的正弦和余弦。

03718c1e3971adf1c5481d723fc5cefd.jpeg

Mesh边集合:表示multi-mesh图中所有边构成的集合,该图是一个双向图。边集合为每次迭代所构造的图形对应的边集合的汇总,因此称之为multi-mesh结构。因此,较低细化水平对应图的节点可以视为远距离连接的hub点。每条边包括4个输入特征:边缘的长度,以及在接收方的局部坐标系中计算的发送方节点和接收方节点的3d位置之间的矢量差。

网格-Mesh边集合(Grid2Mesh):4ea632d6921b001894493f026c1d6801.jpeg是一个无向边集合,连接发送网格节点和接收mesh节点。如果网格节点和mesh节点之间的距离小于或等于中边长度的0.6倍,则两个节点之间存在一条边。与Mesh边集合相图,每每条边包括4个输入特征。

Mesh-网格边集合(Mesh2Grid):0975014c494a8c8445ef008869db208a.jpeg是一个无向边集合连接发送mesh节点和接收网格节点。对于每个网格点,文章找到中的一个三角形面,该三角形面包含这个网格节点,并将该三角形面上的三个节点分别与该网格节点相连,即添加三条边。与Mesh边集合相图,每每条边包括4个输入特征。

Encoder:Encoder的目的是将数据映射为潜在表示用于processor的处理。Encoder包含Grid2Mesh GNN,该模块由一层GNN构成。首先,该模块利用多层感知机(MLP)将上述五个集合的特征嵌入至一个固定大小的潜在空间中,如下式所示。

dd26f76e61af7db007b78d868670856b.jpeg

进一步,为了将大气状态信息从网格节点传递到mesh节点,GraphCast在Grid2Mesh二分子图上执行单个消息传递步骤。具体而言,首先对边集合进行处理,使用相邻节点的信息更新Grid2Mesh的每个边缘,如下式所示。

a74ba84025c622e51803c9215a31db07.jpeg

进一步,对节点信息进行更新,通过汇总到达该mesh节点的所有边的信息来更新每个mesh节点,如下式所示。

9e35f82cc65e03e9eb9c7e8b0d726160.jpeg

同时,每个网格节点也进行更新,但不进行信息聚合。

51f327b5a7ee79af98f7a51019499957.jpeg

最后,通过残差连接对所有元素进行更新。

0fff55af7943bace6060aa780ca3c870.jpeg

Processor:处理器是一个在Mesh子图上操作的深度GNN模型。Multi-Mesh GNN由16个不共享的Mesh GNN构成。具体而言,Mesh GNN首先使用相邻节点的信息更新每个Mesh边,如下式所示。

4a37562c24c53fd16c2f5045d034a969.jpeg

进一步,Mesh GNN更新每个mesh节点,聚合到达该mesh节点的所有边的信息。

fac4a5730fbf0783f593427bbf77cd81.jpeg

最后,通过残差连接对上述元素进行更新,如下式所示。

2b80ca95182878dda9d1af26d38ff38f.jpeg

Decoder:Decoder的作用是将所提取的信息带回网格中,并进行预测。Decoder包含Mesh2Grid GNN,由一层GNN构成。该模块的结构与Grid2Mesh GNN相似,Grid2Mesh GNN在功能上等同于Mesh2Grid GNN,但使用Mesh2Grid边集合向相反方向发送信息。具体而言,该模块首先使用相邻节点的信息更新Grid2Mesh的每个边。

3786a172d3c56d86f09f759c18fc1908.jpeg

进一步,对每个网格节点,聚合到达该网格节点的所有边的信息,如下式所示。

cde20342910561907fca6ba297486f87.jpeg

最终,通过残差连接对每个网格的特征进行更新。

1b1c1f9c55adc2b5cd20dc2f4fa177ee.jpeg

基于上述结果,GraphCast利用MLP对decoder的输出进行处理,得到预测值。

99edbfe3ef3cfca92ace0f98fb9163c4.jpeg

与其他天气预测模型相同,文章在输出部分采用残差连接的方式进行预测,如下式所示。

45e766c62d9dda0e9306331c87dc19a5.jpeg

小结

GraphCast有3670万个参数,按照现代机器学习模型的标准,该模型是一个相对较小的模型,选择它是为了保持内存占用的可处理性。文章的试验结果表明,GraphCast的预测结果要优于目前最好的基线模型(Pangu-weather)。GraphCast的模型结构相对简单,仅使用了GNN,而没有使用Transformer等。该模型的亮点在于multi-mesh结构的构建,通过multi-mesh模型能够高效的提取不同网格节点的空间相关性,以及短时、长时相关性,从而实现特征的充分提取,实现快速、准确地预测。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/183213.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣刷题篇之分治

系列文章目录 目录 系列文章目录 前言 一、分解问题 二、解决子问题 三、合并结果 总结 前言 刷题按照: [力扣刷题攻略] Re:从零开始的力扣刷题生活 - 力扣(LeetCode) 参考: 「五大常用算法」一文搞懂分治算法…

大数据HCIE成神之路之数学(4)——最优化实验

最优化实验 1.1 最小二乘法实现1.1.1 算法介绍1.1.2 代码实现1.2 梯度下降法实现1.2.1 算法介绍1.2.2 代码实现1.3 拉格朗日乘子法1.3.1 实验1.3.2 实验操作步骤1.1 最小二乘法实现 1.1.1 算法介绍 最小二乘法(Least Square Method),做为分类回归算法的基础,有着悠久的历…

第20章:多线程

20.1 线程简介 在Java中,并发机制非常重要,程序员可以在程序中执行多个线程,每个线程完成一个功能,并与其他线程并发执行,这种机制被称为多线程。但是,并不是所有编程语言都支持多线程。 线程的特点&#…

visual studio 2022 更改字体和大小

工具--->选项 文本编辑器 输出窗口

Linux系统之uptime命令的基本使用

Linux系统之uptime命令的基本使用 一、uptime介绍二、uptime命令使用帮助2.1 uptime的help帮助信息2.2 uptime的语法解释 三、uptime的基本使用3.1 直接使用uptime命令3.2 显示uptime版本信息3.3 显示系统运行时间3.4 显示系统最后一次启动时间 四、uptime命令的使用注意事项 一…

基于YOLOv8深度学习的生活垃圾分类目标检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

C++前缀和算法的应用:优化了6版的1324模式

本文涉及的基础知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 本题其它解法 C前缀和算法的应用:统计上升四元组 类似题解法 包括题目及代码C二分查找算法:132 模式解法一枚举3C二分查找算法:…

k8s中Pod控制器简介,ReplicaSet、Deployment、HPA三种处理无状态pod应用的控制器介绍

目录 一.Pod控制器简介 二.ReplicaSet(简写rs) 1.简介 (1)主要功能 (2)rs较完整参数解释 2.创建和删除 (1)创建 (2)删除 3.扩容和缩容 &#xff08…

vuepress-----7、发布在GitHub

# 7、发布在GitHub 在你的项目中,创建一个如下的 deploy.sh 文件(请自行判断去掉高亮行的注释): #!/usr/bin/env sh# 确保脚本抛出遇到的错误 set -e# 生成静态文件 npm run docs:build# 进入生成的文件夹 cd docs/.vuepress/dist# 如果是发…

WebUI自动化学习(Selenium+Python+Pytest框架)004

接下来,WebUI基础知识最后一篇。 1.下拉框操作 关于下拉框的处理有两种方式 (1)按普通元素定位 安装普通元素的定位方式来定位下拉框,使用元素的操作方法element.click()方法来操作下拉框内容的选择 (2&#xff09…

PCB设计注意事项

四个二极管不能省略 pwm波跟电机频率不要是倍频 运放越靠近取样电阻越好 反向输入端跟输出端很敏感,有寄生电容就容易震荡 距离取样电阻近就会距离单片机远,那么线上会有寄生电容,这时候在输出端接一个10k电阻到地

深度学习-模型调试经验总结

1、 这句话的意思是:期望张量的后端处理是在cpu上,但是实际是在cuda上。排查代码发现,数据还在cpu上,但是模型已经转到cuda上,所以可以通过把数据转到cuda上解决。 解决代码: tensor.to("cuda")…

Redis 入门和环境搭建

认识Redis Redis是一种NoSQL数据库,以键值对形式存储数据,支持多种数据结构,包括字符串、哈希、列表、集合、有序集合等,使其适用于多种应用场景。由于所有数据都存储在内存中,Redis的读写性能非常高。同时&#xff0…

安网AC智能路由系统actpt_5g.data敏感信息泄露漏洞复现 [附POC]

文章目录 安网AC智能路由系统actpt_5g.data敏感信息泄露漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 安网AC智能路由系统actpt_5g.data敏感信息泄露漏洞复现 [附POC] 0x01 前言 免责声明:请勿利…

面试:说一下深拷贝,浅拷贝,引用拷贝吧;Object类中的clone是哪种呢?

目录 深拷贝、浅拷贝、引用拷贝Object类的clone()方法 深拷贝、浅拷贝、引用拷贝 ● 浅拷贝: 对基本数据类型进行值传递; 对引用类型,复制了一份引用类型的变量 里面存储的内存地址一样 指向的对象也一样。 ● 深拷贝:对基本数据…

kettle入门教程

一、概述 1.什么是kettle Kettle是一款开源的ETL(Extract-Transform-Load)工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。 2.kettle工程存储方式 (1)以XML形式存储 …

数据结构树与二叉树(5)Huffman树

#include <iostream> #include <stack> #include <queue>using namespace std;struct Node {char name ;int code[200];int num 0;//code的下标int weight 0;//权重&#xff08;次数&#xff09;Node* lchild;//左孩子Node* rchild;//右孩子Node* parent;N…

力扣 --- 三数之和

目录 题目描述&#xff1a; 思路描述&#xff1a; 代码&#xff1a; 提交结果&#xff1a; 官方代码&#xff1a; 官方提交结果&#xff1a; 题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k…

使用STM32 HAL库驱动烟雾传感器的设计和优化

STM32 HAL库是STMicroelectronics提供的针对STM32系列微控制器的一套硬件抽象层库&#xff0c;可以简化开发过程并提供对各种外设的支持。本文将介绍如何使用STM32 HAL库来驱动烟雾传感器&#xff0c;并对传感器数据采集和处理进行优化。将包括HAL库的初始化、模拟信号采集、数…

UE5、CesiumForUnreal实现加载GeoJson绘制多面(MultiPolygon)功能(支持点选高亮)

文章目录 1.实现目标2.实现过程2.1 数据与预处理2.2 GeoJson解析2.3 Mesh构建与属性存储2.4 核心代码2.5 材质2.6 蓝图应用测试3.参考资料1.实现目标 在之前的文章中,基于GeoJson数据加载,实现了绘制单面功能,但只支持单个要素Feature。本文这里实现对Geojson内所有面要素的…