文章信息
文章题为”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个。
符号及问题定义
符号定义:文章定义t表示预测时间步长索引;T表示预测范围,即预测总步数;d表示有效时间,指示特定天气状态的日期时间;表示预测初始时间步;表示预测步骤持续时间,指示在一个预测步骤中经过多少时间;表示预测提前期,表示预测中经过的时间。
问题定义:中期全球天气预测任务旨在利用历史的天气指标,利用一个潜在的离散时间动力学函数,通过自回归的方法,实现未来天气的预测。
然而,通常而言,天气指标难以直接观测获取,因此文章定义为完整天气指标的一个近似。研究问题旨在找到该动力学系统中一个正确高效的模型,该模型能够有效地预测某一预测范围内的天气状况,通过自回归的方式,实现天气预测。
该任务的损失函数即为最小化真实值和预测值之间的误差,如下式所示。
GraphCast结构简介
文章提出了一种名为GraphCast的全球中期天气预报的新MLWP方法,它可以在单个Google Cloud TPU v4设备上在一分钟内生成准确的10天预报,并支持包括预测热带气旋路径,大气河流和极端温度在内的应用程序。
首先,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层,并将输出预测为对最近输入状态的残差更新。
GraphCast原理简介
生成预测值:GraphCast模型被定义为一步学习模拟器,GraphCast即为问题定义中的,该模型根据两个连续的输入状态预测下一步,如下式所示。
GraphCast通过自回归的方式实现中期预测,如下式所示。
GraphCast中的图结构:GraphCast采用“encoder-processor-decoder”结果,并仅使用GNN实现模型构建,其中encoder将输入经纬度网格上的地表和大气特征映射到multi-mesh结构中,processor在多网格上执行多轮消息传递,decoder将multi-mesh结构中节点的特征映射回输出经纬度网格。该模型在图上进行运算。每个集合的解释如下。
网格点集合:表示网格点构成的集合每个网格节点代表给定经纬度点的大气垂直切片,每个网格的特征表示为,其中表示天气状态;由时间相关的特征组成,这些特征可以分析计算,不需要通过GraphCast进行预测;为常数,共计474个输入特征。
Mesh点集合:表示multi-mesh结果中每个节点的集合,multi-mesh结构是由一个正20面体经过迭代细化构成的结构,上图展示了迭代的过程,其中迭代过程中的节点数和边数如下表所示。由于这种迭代的构造形式,第r-1次迭代所构造的图对应的节点集为第r次迭代所构造图节点集的子集,因此,只包括最后一次迭代中构成图像对应的所有节点,每个节点包括三个特征,即节点对应纬度的余弦,以及经度的正弦和余弦。
Mesh边集合:表示multi-mesh图中所有边构成的集合,该图是一个双向图。边集合为每次迭代所构造的图形对应的边集合的汇总,因此称之为multi-mesh结构。因此,较低细化水平对应图的节点可以视为远距离连接的hub点。每条边包括4个输入特征:边缘的长度,以及在接收方的局部坐标系中计算的发送方节点和接收方节点的3d位置之间的矢量差。
网格-Mesh边集合(Grid2Mesh):是一个无向边集合,连接发送网格节点和接收mesh节点。如果网格节点和mesh节点之间的距离小于或等于中边长度的0.6倍,则两个节点之间存在一条边。与Mesh边集合相图,每每条边包括4个输入特征。
Mesh-网格边集合(Mesh2Grid):是一个无向边集合连接发送mesh节点和接收网格节点。对于每个网格点,文章找到中的一个三角形面,该三角形面包含这个网格节点,并将该三角形面上的三个节点分别与该网格节点相连,即添加三条边。与Mesh边集合相图,每每条边包括4个输入特征。
Encoder:Encoder的目的是将数据映射为潜在表示用于processor的处理。Encoder包含Grid2Mesh GNN,该模块由一层GNN构成。首先,该模块利用多层感知机(MLP)将上述五个集合的特征嵌入至一个固定大小的潜在空间中,如下式所示。
进一步,为了将大气状态信息从网格节点传递到mesh节点,GraphCast在Grid2Mesh二分子图上执行单个消息传递步骤。具体而言,首先对边集合进行处理,使用相邻节点的信息更新Grid2Mesh的每个边缘,如下式所示。
进一步,对节点信息进行更新,通过汇总到达该mesh节点的所有边的信息来更新每个mesh节点,如下式所示。
同时,每个网格节点也进行更新,但不进行信息聚合。
最后,通过残差连接对所有元素进行更新。
Processor:处理器是一个在Mesh子图上操作的深度GNN模型。Multi-Mesh GNN由16个不共享的Mesh GNN构成。具体而言,Mesh GNN首先使用相邻节点的信息更新每个Mesh边,如下式所示。
进一步,Mesh GNN更新每个mesh节点,聚合到达该mesh节点的所有边的信息。
最后,通过残差连接对上述元素进行更新,如下式所示。
Decoder:Decoder的作用是将所提取的信息带回网格中,并进行预测。Decoder包含Mesh2Grid GNN,由一层GNN构成。该模块的结构与Grid2Mesh GNN相似,Grid2Mesh GNN在功能上等同于Mesh2Grid GNN,但使用Mesh2Grid边集合向相反方向发送信息。具体而言,该模块首先使用相邻节点的信息更新Grid2Mesh的每个边。
进一步,对每个网格节点,聚合到达该网格节点的所有边的信息,如下式所示。
最终,通过残差连接对每个网格的特征进行更新。
基于上述结果,GraphCast利用MLP对decoder的输出进行处理,得到预测值。
与其他天气预测模型相同,文章在输出部分采用残差连接的方式进行预测,如下式所示。
小结
GraphCast有3670万个参数,按照现代机器学习模型的标准,该模型是一个相对较小的模型,选择它是为了保持内存占用的可处理性。文章的试验结果表明,GraphCast的预测结果要优于目前最好的基线模型(Pangu-weather)。GraphCast的模型结构相对简单,仅使用了GNN,而没有使用Transformer等。该模型的亮点在于multi-mesh结构的构建,通过multi-mesh模型能够高效的提取不同网格节点的空间相关性,以及短时、长时相关性,从而实现特征的充分提取,实现快速、准确地预测。