Dynamic Graph Convolutional Networks. Pattern recognition 2019

摘要

我们的目标是通过使用神经网络模型来联合开发结构化数据和时间信息。基于这个原因,我们提出了两种新的方法,将长-短期记忆网络和图卷积网络结合起来,结合图结构来学习长-短期依赖关系。

介绍

balabalbala....,许多真实世界的结构化数据是动态的,并且图中的节点/边可能会随着时间而变化。在这种动态场景中,时间信息也可以发挥重要作用。

LSTM和GCN简介。

本文的组织结构如下:第2节总结了最相关的方法。在第3节中,我们描述了我们的方法。第4节介绍了与基准方法的比较。第5节通过讨论我们的发现和未来可能的扩展来结束本文。

相关工作

有少量的方法被设计用于对动态网络中的节点进行分类[14,22]。Li等人[14]提出了一种能够学习潜在特征表示并捕获动态模式的方法。Yao等人[22]提出了一种基于支持向量机的方法,该方法将先前时间瞬间的支持向量与当前训练数据相结合,以利用时间关系。Pei等人[17]为动态社交网络中的节点分类定义了一种称为动态因子图模型的方法。更准确地说,这种方法将动态图形数据组织成一系列图形。设计了三种类型的因子,即节点因子、相关因子和动态因子,分别捕获节点特征、节点相关性和时间相关性。节点因子和相关因子被设计用来捕获图结构的全局和局部特性,而动态因子则利用了时间信息。

总结:以上提及的神经网络结构不能正确处理时间信息(无法捕捉动态--个人理解)。

我们的方法(跩~)

由于我们感兴趣的任务的动态性质,本文提出的新网络结构将适用于图的有序序列和顶点特征的有序序列。

我们的贡献基于将图卷积的扩展(GC,GCNs的基本层)和LSTM的改进版本相结合的思想,从而通过利用图结构数据和顶点特征来学习下游递归单元。我们提出了两个类GC层,它们以一个图序列和相应的顶点特征的有序序列作为输入,并输出一个新的顶点表示的有序序列。

1、瀑布动态GC层,在序列的每一步对顶点输入序列执行图卷积。该层的一个重要特征是,每个图卷积的可训练参数在序列的各个步骤中共享;

2、连接动态GC层,在序列的每一步对顶点

Spatio - Temporal Graph Convolutional Networks(STGCN)是用于交通预测的深度学习框架,其原理涉及对交通网络的图结构建模以及对时间轴的卷积建模。 在交通研究中,该模型首次应用纯卷积结构从图结构时间序列中同时提取时空特征。在建模时,用图网络来对交通网络进行建模,能够捕捉交通网络中各个节点(如路口)之间的空间关系;用卷积网络对时间轴进行建模,以处理交通数据随时间的变化情况 [^2]。 该模型具有两个特点,一是在图上公式化难题,二是使用完整的卷积网建立模型。通过时空卷积块集成图卷积和门控时间卷积,以此来实现对交通数据时空特征的有效提取和分析,从而达到较好的交通预测效果 [^4]。 ```python # 这里只是一个简单示意代码框架,并非完整可运行的STGCN代码 import torch import torch.nn as nn # 简单定义一个图卷积层 class GraphConvolution(nn.Module): def __init__(self, in_features, out_features): super(GraphConvolution, self).__init__() self.weight = nn.Parameter(torch.FloatTensor(in_features, out_features)) def forward(self, input, adj): support = torch.mm(input, self.weight) output = torch.spmm(adj, support) return output # 简单定义一个时间卷积层 class TemporalConvolution(nn.Module): def __init__(self, in_channels, out_channels, kernel_size): super(TemporalConvolution, self).__init__() self.conv = nn.Conv1d(in_channels, out_channels, kernel_size) def forward(self, x): return self.conv(x) # 简单定义一个STGCN块(示意) class STGCNBlock(nn.Module): def __init__(self, in_channels, spatial_channels, temporal_channels, num_nodes): super(STGCNBlock, self).__init__() self.temporal_conv1 = TemporalConvolution(in_channels, temporal_channels, kernel_size=3) self.graph_conv = GraphConvolution(temporal_channels, spatial_channels) self.temporal_conv2 = TemporalConvolution(spatial_channels, temporal_channels, kernel_size=3) def forward(self, x, adj): x = self.temporal_conv1(x) x = self.graph_conv(x, adj) x = self.temporal_conv2(x) return x ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值