读论文:ENSO- GTC:具有全局时空遥相关耦合器的ENSO深度学习预测模型

标题: ENSO-GTC: ENSO Deep Learning Forecast Model With a Global Spatial-Temporal Teleconnection Coupler
作者: Bin Mu, Bo Qin , and Shijin Yuan
原文地址:https://agupubs.onlinelibrary.wiley.com/doi/10.1029/2022MS003132


Abstract

本文延续了之前的热带太平洋多元海气耦合模型,通过设计全球时空遥相关耦合器(GTC),建立起ENSO深度学习预测模型(ENSO-GTC),来对全球海表温度(SST)之间的潜在远程相关进行建模。并且提出了一种具有图总变分惩罚项的损失函数。通过实验探讨了ENSO-GTC在有效预报提前时间、持久性障碍改进和预报误差分析方面的预报技巧。

简要总结

ENSO是热带太平洋地区最主要的年际气候周期。而笨的所提出的ENSO-GTC模型在考虑了热带太平洋多元相互作用之后得到了十分可观的效果。即使ENSO主要发生在热带太平洋,但其他海洋对于其也有着重要的作用。本文构建了GTC,从全球三大洋海温相互作用的角度捕捉到与ENSO的关键遥相关。基于该耦合器,本文构建了ENSO-GTC并设计了概率图卷积层来学习时空遥相关(即动态图中的非相邻关系),同时还对模型所学的内容进行物理解释。


Introduction


贡献


综述

2 GTC

2.1 动态图

ENSO的变化收到许多重要时空遥相关的调节。而这些关系通常很遥远,在季节中经常出现在特定的敏感地区。于是就采用了图结构建模来描述详细的区域遥相关。先将全球SST模式sstg切割成相同大小五重叠的P个小块,如下公式所示:
s s t g → ( s s t 0 , s s t 1 , . . . , s s t p , p = 1 , 2 , . . . , P sst_{g}\to(sst^{0}, sst^{1},... , sst^{p},p= 1,2,...,P sstg(sst0,sst1,...,sstp,p=1,2,...,P

这些小块覆盖了不同的海洋区域,是时空动态图和潜在远程连接研究的基本单元。

通过定义一个超参数/阈值 r r r来过滤陆地网格过多的块,如下图所示:

土地网格只包含SST数据中的默认值(如0),这是SST品种学习的噪声

这样以来就得到了动态图 A d y n A_{dyn} Adyn。为了确定不同节点(块)之间的连接(边)。将 A d y n A_{dyn} Adyn分为 A p h y A_{phy} Aphy A t o p o A_{topo} Atopo两个部分。(前者是由先验物理信息人为决定的,后者是潜在的远程联系,需要由DL模型来学习)

一个 A p h y A_{phy} Aphy的例子如下图所示:

这是一个前几个月所有斑块的0-1矩阵(如预测模型的输入序列)。纵(横)轴代表不同月份的斑块,黑点(数值为1)意味着纵轴上的斑块与横轴上的另一个斑块 “相连”

  • 物理解释
    (1): 在同一个月里,每个斑块都可以影响或被其地理相邻斑块在空间上的扰动。就如图(a)中的块7那样,其有着邻居2,6,8,16。如下图所示:

    (2)对于不同的月份,具有相同编号的块会被连接,如下图所示:

也就是每个点都与自己有链接。注意,在这种情况下未来月份的补丁也可以连接到前几个月的补丁

因此图d所示的整个相邻关系可以由b和c两个成分确定,用 A p h y A_{phy} Aphy来表示它。

A t o p o A_{topo} Atopo由于是潜在的遥相关(包含了许多复杂的非线性遥相关,甚至是小海洋斑块之间的隐含动力机制),因此只能通过DL来慢慢学习,而最近提出的权重又正好能够帮助实现这一目的。

(具体来说,Atopo的顶点也是由所有斑块组成的,而两个不相邻斑块之间的边缘也被标识为0-1矩阵,由设计良好的DL模块判断。)


2.2 基于动态图的GTC形式化

根据动力学图来构造GTC,将传统预测系统类比为式子: x ^ M + 1 = F ( x 1 , x 2 , . . . , x M ) \hat{x}_{M+1}=F(x_{1},x_{2},..., x_{M}) x^M+1=F(x1,x2,...,xM)

用M个月的历史数据来预测下个月M+1的数据

将每个月的输入和输出转换成块来执行GTC,如下式所示:
s s t ^ M + 1 1 , . . . , s s t ^ M + 1 P = C ( s s t 1 1 , . . . s s t 1 P , s s t 2 1 , . . . , s s t 2 P , . . . , s s t M 1 , . . . , s s t M P , A d y n ) \hat{sst}^{1}_{M+1},...,\hat{sst}^{P}_{M+1}=C(sst^{1}_{1},...sst^{P}_{1},sst^{1}_{2},...,sst^{P}_{2},...,sst^{1}_{M},...,sst^{P}_{M},A_{dyn}) sst^M+11,...,sst^M+1P=C(sst11,...sst1P,sst21,...,sst2P,...,sstM1,...,sstMP,Adyn)

其中{ s s t m p sst^{p}_{m} sstmp}代表输入月份m的第p个小块,而{ s s t ^ M + 1 p \hat{sst}^{p}_{M+1} sst^M+1p}是M + 1月的预测小斑块。此外,GTC还在动态图𝐴dyn的帮助下,通过相邻/非相邻斑块吸收重要的远程连接。

非相邻关系则要通过下面的M(·)来学习:
A t o p o   A ( μ t o p o , σ t o p o 2 ) = M ( s s t 1 1 , . . . s s t 1 P , s s t 2 1 , . . . , s s t 2 P , . . . , s s t M 1 , . . . , s s t M P ) A_{topo}~A(\mu_{topo},\sigma^{2}_{topo})=M(sst^{1}_{1},...sst^{P}_{1},sst^{1}_{2},...,sst^{P}_{2},...,sst^{1}_{M},...,sst^{P}_{M}) Atopo A(μtopo,σtopo2)=M(sst11,...sst1P,sst21,...,sst2P,...,sstM1,...,sstMP)
结合这两种关系就可以把GTC的公式写成:
s s t ^ M + 1 1 , . . . , s s t ^ M + 1 P = C ( s s t 1 1 , . . . s s t 1 P , s s t 2 1 , . . . , s s t 2 P , . . . , s s t M 1 , . . . , s s t M P ) \hat{sst}^{1}_{M+1},...,\hat{sst}^{P}_{M+1}=C(sst^{1}_{1},...sst^{P}_{1},sst^{1}_{2},...,sst^{P}_{2},...,sst^{1}_{M},...,sst^{P}_{M}) sst^M+11,...,sst^M+1P=C(sst11,...sst1P,sst21,...,sst2P,...,sstM1,...,sstMP)

其中,M(·)可以被当作自我监督学习(因为斑块之间的非相邻关系将始终朝着有利于预测的方向发展)

需要提一嘴的是:上边输入的{ s s t m p sst^{p}_{m} sstmp}是由DL模块所得的,而这会使得GTC更加关注底层相关性以及元特征(最基本的特征粒度)。而这也为ENSO中全局/局部特征的增强和融合带来了好处和便利。


三、 ENSO-GTC

3.1 结构

其结构如下图所示:

由四个模块组成:块编码器全局时空记忆提取器GTC块解码器。其中编/解码器是所有块共享的模块

  • 块编码器单独解决每个小海洋斑块,用于捕捉潜在的局部特征
  • 全局时空记忆提取器用于提取所有斑块间的全局时空信息
  • GTC用于学习非相邻关系并模拟动态图指导下的相互作用
  • 块解码器用于将GTC中的块特征从端到端分别恢复到相应的块

上图中的黑色箭头显示了模型的数据流:

  • 首先将将整个海洋数据切割成块,并将得到的块传播到块编码器和全局时空记忆提取器中;
  • 然后,GTC在我们提出的概率图卷积层的帮助下将局部和全局特征耦合起来(该层学习隐藏在数据中的潜在遥相关);
  • 最后,将从补丁解码器中恢复的补丁重新排列到海洋数据中。

有两种常见的预测策略:

  1. 对下一个连续月进行预测,长期结果需要多次迭代(标记为迭代策略);
  2. 用时间间隔来预测未来的状态,比如用1 - 6月的海温来预测12月的海温状态(标记为直接策略);

3.2 提取块局部时空特征的块编码器

小块代表了每个月的区域空海状态,并使用一个共享的块编码器来提取它们各自的局部时空信息以保持物理上的一致性

ENSO有着明显的多尺度演化特征,且小尺度变化趋同变大并促进ENSO的发展——为此,设计了一个可以通过卷积层和池化层的叠加来调节多个尺度的块编码器:

编码器块由下图所示的重复密集层和池化层组合而成:

  • 卷积层不改变特征图的形状,但改变通道的大小,具有扩张-收缩行为(由左边框里的那两个参数来进行控制)——密集链接,可以将底层特征直接传播到高层,并尽可能保留原始特征;
  • 池化层如图b所示,它是通过一个超参数theta(<1)来缩小通道大小,通过max-pooling缩小特征图的形状,有助于去除冗余信息,扩展接受域,提高多尺度特征提取的效率。输出就是c*theta;

小块按顺序传播到到编码器中从而保证了局部空间特征提取的一致性。而这也是GTC中相邻和不相邻关系的一个关键要求


3.3 全局时空记忆提取器

全球时空特征,反映了ENSO振幅的趋势和周期性。为此,本文设计了一个与编码器并行的全局时空记忆提取器,如下图所示:

在空间轨道上,利用二维卷积层沿m×p提取全局空间依赖项,注意了全局海表温度的普遍性。在时间轨道上,一维卷积层也沿着m×p捕获时间记忆,保持顺序。卷积核大小和信道变化均标记在图5中.

然后将他们俩变成1维后再级联再一起作为全局时空记忆 m g l o b a l m_{global} mglobal,如下式所示:
m g l o b a l = [ C o n v 2 d ) P s p a t i a l ) ∣ ∣ C o n v 1 d ( P t e m p o r a l ] m_{global}=[Conv_{2d})P^{spatial})||Conv_{1d}(P^{temporal}] mglobal=[Conv2d)Pspatial)∣∣Conv1d(Ptemporal]


3.4 具有概率图卷积层的GTC

GTC以动态图的方式进行特征聚合,动态图由相邻和非相邻关系组成。前者是精心设计的,后者是由我们提出的概率图卷积层学习的。

3.4.1 具有相邻关系的特征聚合

使用改进的邻接聚合函数来模拟邻居之间的交互:

其中,fssti phy 表示根据Aphy聚合的特征。fssti是补丁编码器对补丁i提取的局部特征,是对应的邻居补丁。deg(i)表示补丁“i”的度(邻居数)

下图就显示了以上过程:

它为中心节点(红圈)聚合邻居特征(蓝圈)。由上式可知,物理相互作用可由aggr(.)函数学习,该函数模拟了相邻斑块之间传播到中心的不稳定能量


3.4.2 非相邻关系学习与对应特征聚合

提出了概率图卷积层来学习非相邻关系(拓扑图),该层采用单个概率分布来表示非相邻连接,量化不同的不确定性,类似于集合预测。

  • 最关键的问题:如何确认高度不可知的非相邻连接——滤波,即首先假设所有的patch都是相互连接的(全连接),然后经过相似度计算和排序,选择排名靠前的K连接作为拓扑连接;

  • 概率图卷积层的整个过程总结:首先,计算全连接假设下的补丁对之间的相似度。其次,根据滤波解下的相似度生成拓扑连接;第三,通过学习到的非相邻连接聚合每个补丁的特征;

我们设计了一个拓扑图生成器来实现该层的前两步,并设计了一个概率聚合计算来实现第三步


3.5 解码器结果端到端

在获得GTC的输出特征后,用解码器来对编码进行解码。
transform-convolution


3.6 损失函数

非相邻关系(拓扑图)——能量差;
先验分布与实际的差异——KL散度;


总结


未来展望

将海洋划分为组成动态图的小海洋斑块(其中相邻关系由先验知识人工构建,非相邻关系由深度学习方法从数据中学习)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算ENSO指数可以使用海温异常指数(SST Anomaly Index)来表示。 首先,需要安装以下Python库: - netCDF4:用于取海表温度数据 - numpy:用于进行数值计算 - matplotlib:用于绘制图表 安装方法: ``` pip install netCDF4 numpy matplotlib ``` 然后,可以使用以下代码计算并绘制ENSO指数: ```python import numpy as np import matplotlib.pyplot as plt from netCDF4 import Dataset # 打开数据文件 data = Dataset('sst.mnmean.nc') # 取变量 sst = data.variables['sst'][:] # 选择区域 sst_region = sst[:, 5:25, 480:600] # 计算区域平均值 sst_mean = np.mean(sst_region, axis=(1, 2)) # 计算基准期(1981-2010)的平均值 sst_mean_baseline = np.mean(sst_mean[360:1080]) # 计算海温异常指数 enso_index = (sst_mean - sst_mean_baseline) / np.std(sst_mean) # 绘制图表 fig, ax = plt.subplots(figsize=(10, 5)) ax.plot(enso_index, color='blue') ax.axhline(y=0, color='gray', linestyle='--') ax.axhline(y=1, color='red', linestyle='--') ax.axhline(y=-1, color='red', linestyle='--') ax.set_xlabel('Year') ax.set_ylabel('ENSO Index') ax.set_title('ENSO Index (5S-5N, 170E-120W)') plt.show() ``` 在上述代码中,我们首先打开了一个海表温度数据文件,然后选择了5S-5N,170E-120W的区域,并计算了该区域每个月的平均海表温度。然后,我们计算了基准期(1981-2010)的平均值,并将其作为海温异常指数的基准值。最后,我们绘制了ENSO指数的时间序列图,并将其与0、1和-1三个水平线进行了比较。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值