机器学习周记(第二十九周:文献阅读[MAST-GNN])2024.3.4~2024.3.10

目录

摘要

ABSTRACT

1 论文信息

1.1 论文标题

1.2 论文摘要 

1.3 论文背景

1.4 现有研究

2 论文模型

2.1 问题描述

2.2 模型信息

2.2.1 Multimodal Graph Fusion(多模态图融合)

2.2.2 Adaptive Graph Convolution(自适应图卷积)

2.2.3 Temporal Convolution Module(时间卷积模块)

3 相关代码


摘要

  本周阅读了一篇关于时空图神经网络用于空域复杂度时间序列预测的论文。论文的模型是多模态自适应时空图神经网络(MAST-GNN),主要包含多模态自适应图卷积模块(MAGCN)基于自注意机制的膨胀因果卷积层(TCN-Att)。前者主要用于融合时间序列的空域交通流和地理位置等空间信息。后者主要用于从短期和长期两个角度融合时间序列的时间信息。

ABSTRACT

This week, We read a paper on the prediction of airspace complexity time series using spatio-temporal graph neural networks. The model proposed in the paper is called Multimodal Adaptive Spatio-Temporal Graph Neural Network (MAST-GNN), which mainly consists of a Multimodal Adaptive Graph Convolution module (MAGCN) and a Dilated Causal Convolution layer based on self-attention mechanism (TCN-Att). The former is primarily used to integrate spatial information such as airspace traffic flow and geographical locations into the time series. The latter is mainly utilized to fuse temporal information from short-term and long-term perspectives in the time series.

1 论文信息

1.1 论文标题

MAST-GNN: A multimodal adaptive spatio-temporal graph neural network for airspace complexity prediction

1.2 论文摘要 

  空域复杂度是用来全面评估空中交通运行安全性的一个重要指标。准确预测空域复杂度可以为制定空中交通管理策略和资源分配提供实用指导。尽管人们已经做了很多工作来计算空域复杂度,但以往的研究很少能够充分考虑空域复杂度数据中的多种时空特征。论文提出了一种多模态自适应时空图神经网络(MAST-GNN),旨在同时探索空域部门网络中的时空依赖关系。具体来说,论文设计了一个多模态自适应图卷积模块(MAGCN),以有效学习不同空间模式之间的复杂关系,并以数据驱动的方式调整不同空间模式对空域复杂度的影响。为了模拟动态的长短期时间模式,论文开发了一个带有多时间步自注意机制的膨胀因果卷积层(TCN-Att),用于准确预测更长时间范围内的空域复杂度。大量实验结果表明,论文提出的方法可以在不同时间模式下实现更高的泛化性能,并且在所有预测时间范围内的表现优于现有方法。

1.3 论文背景

  空中交通运输行业一直在不断增长,这导致空中交通管理系统(ATM)的负荷越来越重,出现了空域拥塞、航班延误、交通密度过高、航班效率低下和能源消耗增加等问题。在现有的ATM系统中,空域被划分为多个部门,每个部门的飞行安全由一组空中交通管制员(ATCos)来管理,他们在空中交通管制服务中发挥着至关重要的作用。

  空域复杂度是一个全面反映空中交通运行情况安全性的指标。在空域部门内过度复杂的情况下,ATCos需要进行高度集中的监视,承受更大的控制压力,这可能对他们的决策能力产生负面影响,并增加空中运营中潜在冲突的风险。相反,低复杂度的空域情况会浪费宝贵的ATCos资源,并妨碍将这些资源最优地部署以提高整个ATM系统的效率。因此,客观测量空域复杂度已成为ATM领域的迫切问题。

  可靠地预测空域复杂度对于ATCos制定更有效的空中交通管制策略、确保运营安全、减轻拥塞、减少尾气排放以及提高空中交通管制运营效率至关重要。具体来说,长期空域复杂度的预测使ATCos能够提前识别高度拥挤的区域,并重新规划飞机航线,避免不必要的战术机动。此外,基于中期空域复杂度的预测,ATCos可以尽早检测到多飞机冲突的风险,从而降低冲突解决的难度。

1.4 现有研究

  空域复杂度受到多种因素的影响,比如各个部门的大小、航空器数量、航道汇聚角度、地面速度、平均地面速度及其标准差等。这些因素是否能够被有效利用,将直接影响到预测结果的准确性。为了更好地理解空域复杂度与相关因素之间的关系,研究人员进行了大量努力,提出了更为客观的计算方法。目前,计算空域复杂度的方法主要可以分为两类:一些研究者采用单一指标来衡量空域复杂度,比如操作工作量、潜在冲突和李雅普诺夫指数。另一些方法则综合多个因素来全面评估空域复杂度。此外,机器学习技术也被广泛应用于建模复杂因素与空域复杂度之间的关系。

  然而,现有方法中仍存在一些未解决的关键问题,这些问题对于准确预测未来空域复杂度至关重要。首先,现有方法往往忽视了不同空域之间的空间关系。实际上,空域复杂度不仅与空域本身的情况相关,还与周围空域的状态有关。但是,如何准确地建立这些空间关系并不容易。其次,空域复杂度受到多种空间依赖关系的影响,包括地理位置和运营相关性。不同的依赖模式会随着时间的推移而发生变化,因此确定哪种模式对于预测空域复杂度更为关键也是一个挑战。最后,空域复杂度具有混合的时序依赖性,因为空域的运行状态会随着时间的不同而变化。但是,现有的评估模型往往无法准确捕捉这种时序模式,这也是一个需要解决的问题。

Fig.1 空域关系示意图

2 论文模型

2.1 问题描述

  未来每个航空部门的复杂度水平不仅取决于其过去的数据,还受到周围航空部门的影响。为了更好地展现各个部门之间的相互关系,论文将整个航空部门系统以网络的形式进行了描述。

定义1(航空部门网络):将航空部门网络构建成图G(V,E,A_{d}),其中航空部门被表示为节点V,即|V|=N。边的集合E则表示两个节点(航空部门)之间是否相邻。邻接矩阵A_{d}则用于标识部门之间的关系,如果两个部门v_{i}v_{j}相邻,则矩阵中(i,j)位置的元素为1,否则为0。

定义2(特征和复杂度矩阵):定义特征矩阵X_{t}= \left \{ X^{t}_{1},X^{t}_{2},...,X^{t}_{N} \right \}\in \mathbb{R}^{N \times C}和复杂度矩阵O来描述航空部门网络G在时间t上的情况。特征矩阵中,X^{i}_{t} \in \mathbb{R}^{C}代表了在时间t上观测到的各个因素的数值。观测维度C包括了28个因素和1个复杂度级别。复杂度矩阵Y_{t}=\left \{ Y^{t}_{1},Y^{t}_{2},...,Y^{t}_{N} \right \} \in \mathbb{R}^{N}则用来表示每个航空部门在时间t上的复杂度级别,其中元素Y^{t}_{i}是指第i个航空部门的复杂度级别。

定义3(地理矩阵):定义地理矩阵A_{g},其中矩阵A_{g}(i,j)位置上的元素表示了两个部门v_{i}v_{j}之间的地理距离。矩阵A_{g}反映了各个部门的自然属性。

定义4(空中交通流矩阵):定义空中交通流矩阵A_{f},其中矩阵A_{f}(i,j)位置上的元素表示了部门v_{i}v_{j}之间流通的航班总数。矩阵A_{f}反映了各个部门的运营属性。

  给定部门网络G,以及过去M个时间步的特征矩阵的历史观测x=\left \{ X_{t-M+1},...,X_{t} \right \}。目标是预测未来H个时间步的复杂度矩阵y=\left \{ Y_{t+1},...,Y_{t+H} \right \}M被称为时间窗口的长度,表示将考虑多长时间的历史观测进行预测。H被称为预测范围,表示将预测未来复杂度水平的时间长度。

  形式上,空域复杂度预测问题可以被形式化为\widehat{y}=f(G,A_{g},A_{f};x;\Theta ),其中\widehat{y}=\left \{ \widehat{Y}_{t+1},...,\widehat{Y}_{t+H} \right \}是预测的复杂度矩阵。f(\bullet ;\Theta )代表具有可训练参数\Theta的深度学习模型,实现了历史观测和未来复杂度水平之间的映射。我们的目标是找到最优参数\Theta ^{*},以最小化观察到的复杂度矩阵y和预测的复杂度矩阵\widehat{y}之间的误差:

\Theta ^{*}=\underset{\Theta }{argmin}L(y,\widehat{y};\Theta )                                                                                                      (1)

其中L代表评估预测质量的损失函数。

2.2 模型信息

  MAST-GNN的整体框架如Fig.2所示。该模型的输入包括一系列时空图信号,这些信号是由部门网络和每个时间步的复杂度特征构建而成的。所提出模型的主体是几个堆叠的时空块,在这些块中,MAGCN模块用于建模跨维度的空间依赖关系,而TCN-Att模块则用于建模时间相关性。通过堆叠多个时空块,使得模型能够发现更复杂和非线性的依赖关系。为了提高学习稳定性并避免梯度消失,在两个块之间进行了批量归一化。此外,利用残差连接将时空块的输入和输出连接起来。残差连接允许梯度直接在两个相邻块之间传递。

Fig.2 MAST-GNN总体架构

  MAGCN模块有两个主要阶段,如Fig.3所示。论文不是随机创建图,而是生成一系列自适应图,考虑了交通运行和部门结构的影响。然后,在自适应图上对图信号进行聚合,以融入空间相关性。最后,通过评分两个卷积窗口之间的注意权重来捕捉长短期时间特征。

Fig.3 MAGCN总体架构

2.2.1 Multimodal Graph Fusion(多模态图融合)

  由于部门之间的交通运输,一个部门的空域复杂度水平可能会受到其邻近部门的影响。直观地,两个相邻部门之间的空间依赖性预期会更强,而两个孤立部门之间的空间依赖性会较弱。除了邻接性之外,空间依赖性还受到部门的地理分布(即结构维度)和部门内的空中航线连接(即运营维度)的影响。因此,仅考虑邻接矩阵来建模空间依赖性可能存在局限性。基于这一情况,论文开发了一种多模态图融合机制来模拟跨多个维度的空间依赖性。该过程在Fig.3Stage1中显示。

2.2.2 Adaptive Graph Convolution(自适应图卷积)

  为了考虑多模态空间依赖关系,论文基于融合嵌入和邻接矩阵开发了自适应图卷积层。首先,使用融合嵌入生成一系列自适应图。然后,这些自适应图将在下一阶段(Fig.3中的Stage2)中被利用来修改邻接矩阵。最后,采用图卷积在修改后的邻接矩阵上进行计算。自适应图卷积的生成过程如下所述。

  请注意,交通流量和部门位置可能会随着时间的推移而发生变化。尽管如此,历史研究和历史数据表明,虽然空中交通具有固有的动态特性,但交通量和部门之间的地理距离存在长周期性模式。这些模式往往在较长的时间段内保持一致,因此成为建模宏观级别空域复杂度的可靠指标。需要注意的是,论文的模型不仅仅限于从这些静态的交通流量和地理结构中学习。自适应多模态图卷积被设计用于在动态演变的图中识别部门之间的空间相关性。这种演变是由交通和地理图的综合影响以及每一刻的复杂度数据特征所驱动的。这种动态和自适应的图学习方法有可能能够适应交通图随时间的轻微波动。

2.2.3 Temporal Convolution Module(时间卷积模块)

  一般来说,基于空中交通情况,空中交通管制员(ATCos)从长期和短期的视角做出战略和战术决策。因此,空域复杂度数据中涉及的长期和短期时序模式对于预测未来空域复杂度水平至关重要。论文通过局部和全局建模视角来表征空域复杂度的时序依赖关系。 

1)Local Temporal Dependency Modelling(局部时间依赖建模):

  在这个部分中采用了膨胀因果卷积(Dilated Causal Convolution,DCC)作为时序卷积层,以捕捉每个节点的局部时序趋势,具体的过程如Fig.4(a)所示。采用DCC的好处在于通过增加层深度,允许指数级的感受野。因此,DCC在处理长距离序列时表现出一致的鲁棒性,这在建模空域复杂度数据的长期依赖性方面是有益的。

2)Global Temporal Dependency Modelling(全局时间依赖建模):

  DCC仅考虑卷积窗口内的局部关系,可能无法捕获更长时间内的关系特征。受自然语言处理领域的工作启发,在这部分中建立了一个外部上下文向量,注入了完整的全局信息,使模型能够获取输入序列的整体视角。具体过程如Fg.4(b)所示。

3 相关代码

self-attention代码实现:

import numpy as np
import torch
import torch.nn as nn


class self_attention(nn.Module):
    def __init__(self, dc, dk, dv):
        # dc是输入特征,
        # dk是中间特征,
        # dv是输出特征。
        super(self_attention, self).__init__()
        self.dk = dk
        self.softmax = nn.Softmax(dim=-1)  # 最后一个纬度做softmax
        self.WQ = nn.Linear(dc, dk, bias=False)
        self.WK = nn.Linear(dc, dk, bias=False)
        self.WV = nn.Linear(dc, dv, bias=False)
        nn.init.normal_(self.WQ.weight)
        nn.init.normal_(self.WK.weight)
        nn.init.normal_(self.WV.weight)
    def forward(self, H):
        """
        :param inputs: input features, [Batch,T,N,DC].
        :return:
            output features, [B,T,N,DV]
        """
        query = self.WQ(H)  # [B,T,N,DK]
        key = self.WK(H)  # [B,T,N,DK]
        value = self.WV(H)  # [B,T,N,DV]
        s = self.softmax(torch.einsum('onmk,kmio->oni', query, key.permute(*torch.arange(key.ndim - 1, -1, -1))) / np.sqrt(self.dk))  # [B,T,T]
        context = torch.einsum('onm,omki->onki', s, value)  # [B,T,N,DV]
        # print("query",query.size())
        # print("key",key.size())
        # print("value",value.size())
        # print("s",s.size())
        # print("context",context.size())
        return context


if __name__ == '__main__':
    tensor1 = torch.randn(5, 120, 126, 25)
    tensor2 = torch.randn(5, 120, 126, 25)
    # c = torch.einsum('onmk,kmio->oni', tensor1, tensor2.T)
    # print(c.shape)
    # d = torch.einsum('onm,omki->onki', c, tensor2)
    # print(d.shape)
    # tensor1 = torch.randn(120, 126, 25)
    # tensor2 = torch.randn(121, 126, 25)
    # c = torch.einsum('nmk,kmo->no', tensor1, tensor2.T)
    # print(c.shape)
    newtensor=torch.cat((tensor1,tensor2),dim=3)
    print(newtensor.size())
    tensor = torch.randn(5, 120, 126, 25)
    self_attentionmodel = self_attention(dc=25, dk=30, dv=40)
    tmp = self_attentionmodel(tensor)
    print(tmp.size())
  • 17
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值