本系列是整理关于用图神经网络(特别是图卷积)来建模时序图数据的论文。

2016-2017

  • 基本概念
  • 论文1 Structural Sequence Modeling with Graph Convolutional Recurrent Networks
    • Motivation
    • Method
      • Model 1
      • Model 2
    • Result
  • 论文2 Know-Evolve: Deep Temporal Reasoning for Dynamic Knowledge Graphs
    • Motivation
    • Model
  • 论文3 Spatio-Temporal Graph Convolutional Networks: A Deep Learning Framework for Traffic Forecasting
  • Motivation
  • Method
    • 空间特征提取——GCN
    • 时间特征提取——Gated CNNs
    • Spatio-temporal Convolutional Block

基本概念

  • 关于数据类型:图的划分方式有很多,同构图和异构图,有属性的图和无属性的图,有向图和无向图,动态图和静态图……比如在交通预测问题中,交通网络结构固定不变,节点均表示传感器,边均表示道路(或者说传感器之间的连接)(有属性的静态同构图);比如社交网络或推荐系统等现实世界中的关系网络,随着时间而动态变换(有属性的动态异构图);而关于是有向还是无向,就视具体情况来看了。
  • 图神经网络简述:从图神经网络到图卷积神经网络讲的很详细,另外,如果只想了解图卷积的知识,也可以参考这篇。关于图卷积,总体分为谱域和空域:谱域卷积是基于图信号领域的卷积定理发展来的,它要求数据是无向静态同构图(因为需要拉普拉斯算子是对称矩阵);而空域卷积则对数据的要求有放松,目前主流的方法GAT、GraphSAGE等基本上只要求是静态同构图即可。这些经典图神经网络模型并不适用于异构图,因而异构图需要更复杂的处理,常见的方法是大概是将异构图划分成多个同构图或者基于meta-path的方法。
  • 关于时序建模:这方面论文确实比较多,本人才疏学浅没看得很深,但从大部分时序图神经网络模型中可以看出,RNN以及RNN的变体(LSTM和GRU)、TCN、CNN、Transformer常被用于处理时序数据。

论文1 Structural Sequence Modeling with Graph Convolutional Recurrent Networks

这篇文章发表于ICLR 2017,是比较早的一篇对结构数据进行序列学习的文章。

Motivation

目前很多研究将CNN和RNN融合来用于时空序列建模,但这些方法仅能用于欧式数据。

Method

本文提出了GCRN(Graph Convolutional Recurrent Network),将经典的RNN(Recurrent Neural Network)泛化到到结构化的数据处理。这篇文章的目的是多步预测,作者称为序列建模:
x^t+1,…,x^t+K=arg⁡max⁡xt+1,…,xt+KP(xt+1,…,xt+K∣xt−J+1,…,xt)\hat{x}_{t+1}, \ldots, \hat{x}_{t+K}=\arg \max _{x_{t+1}, \ldots, x_{t+K}} P\left(x_{t+1}, \ldots, x_{t+K} \mid x_{t-J+1}, \ldots, x_{t}\right)x^t+1​,…,x^t+K​=argxt+1​,…,xt+K​max​P(xt+1​,…,xt+K​∣xt−J+1​,…,xt​)针对的数据是图结构不发生改变的无向带权同构图序列
作者提出了两种GCRN结构,一是对每个序列先进行图卷积处理再将卷积之后的结果输入LSTM;二是将FC-LSTM中的2D卷积替换成图卷积。

Model 1

xtCNN=CNNG(xt)i=σ(WxixtCNN+Whiht−1+wci⊙ct−1+bi)f=σ(WxfxtCNN+Whfht−1+wcf⊙ct−1+bf)ct=ft⊙ct−1+it⊙tanh⁡(WxcxtCNN+Whcht−1+bc)o=σ(WxoxtCNN+Whoht−1+wco⊙ct+bo)ht=o⊙tanh⁡(ct)\begin{aligned} x_{t}^{\mathrm{CNN}} &=\mathrm{CNN}_{\mathcal{G}}\left(x_{t}\right) \\ i &=\sigma\left(W_{x i} x_{t}^{\mathrm{CNN}}+W_{h i} h_{t-1}+w_{c i} \odot c_{t-1}+b_{i}\right) \\ f &=\sigma\left(W_{x f} x_{t}^{\mathrm{CNN}}+W_{h f} h_{t-1}+w_{c f} \odot c_{t-1}+b_{f}\right) \\ c_{t} &=f_{t} \odot c_{t-1}+i_{t} \odot \tanh \left(W_{x c} x_{t}^{\mathrm{CNN}}+W_{h c} h_{t-1}+b_{c}\right) \\ o &=\sigma\left(W_{x o} x_{t}^{\mathrm{CNN}}+W_{h o} h_{t-1}+w_{c o} \odot c_{t}+b_{o}\right) \\ h_{t} &=o \odot \tanh \left(c_{t}\right) \end{aligned}xtCNN​ifct​oht​​=CNNG​(xt​)=σ(Wxi​xtCNN​+Whi​ht−1​+wci​⊙ct−1​+bi​)=σ(Wxf​xtCNN​+Whf​ht−1​+wcf​⊙ct−1​+bf​)=ft​⊙ct−1​+it​⊙tanh(Wxc​xtCNN​+Whc​ht−1​+bc​)=σ(Wxo​xtCNN​+Who​ht−1​+wco​⊙ct​+bo​)=o⊙tanh(ct​)​

Model 2

i=σ(Wxi∗Gxt+Whi∗Ght−1+wci⊙ct−1+bi)f=σ(Wxf∗Gxt+Whf∗Ght−1+wcf⊙ct−1+bf)ct=ft⊙ct−1+it⊙tanh⁡(Wxc∗Gxt+Whc∗Ght−1+bc)o=σ(Wxo∗Gxt+Who∗Ght−1+wco⊙ct+bo)ht=o⊙tanh⁡(ct)\begin{aligned} i &=\sigma\left(W_{x i} *_{\mathcal{G}} x_{t}+W_{h i} *_{\mathcal{G}} h_{t-1}+w_{c i} \odot c_{t-1}+b_{i}\right) \\ f &=\sigma\left(W_{x f} *_{\mathcal{G}} x_{t}+W_{h f} *_{\mathcal{G}} h_{t-1}+w_{c f} \odot c_{t-1}+b_{f}\right) \\ c_{t} &=f_{t} \odot c_{t-1}+i_{t} \odot \tanh \left(W_{x c} *_{\mathcal{G}} x_{t}+W_{h c} *_{\mathcal{G}} h_{t-1}+b_{c}\right) \\ o &=\sigma\left(W_{x o} *_{\mathcal{G}} x_{t}+W_{h o} *_{\mathcal{G}} h_{t-1}+w_{c o} \odot c_{t}+b_{o}\right) \\ h_{t} &=o \odot \tanh \left(c_{t}\right) \end{aligned}ifct​oht​​=σ(Wxi​∗G​xt​+Whi​∗G​ht−1​+wci​⊙ct−1​+bi​)=σ(Wxf​∗G​xt​+Whf​∗G​ht−1​+wcf​⊙ct−1​+bf​)=ft​⊙ct−1​+it​⊙tanh(Wxc​∗G​xt​+Whc​∗G​ht−1​+bc​)=σ(Wxo​∗G​xt​+Who​∗G​ht−1​+wco​⊙ct​+bo​)=o⊙tanh(ct​)​
这两个模型框架不一定局限于LSTM,同样可以应用到任何循环神经网络如GRU。

Result

作者将这两个模型分别应用于预测任务(moving-MNIST dataset)和自然语言建模,并且得出结果Model1的效果比Model2的效果好,原因作者认为可能是Model2中快速增长的维度,隐藏层的维度从200增加到10000。

作者进行的实验都是将欧式数据(如图像、文本)转换为图结构的数据,这样的转换本身就存在信息丢失吧(本人观点)。

论文2 Know-Evolve: Deep Temporal Reasoning for Dynamic Knowledge Graphs

这篇文章发表于ICML 2017,它主要是为了解决动态变化的知识图谱的表示学习。提出了点过程(point process)的概念,虽然好像和图卷积没有什么关系,但该作者后续在ICLR 2019又发表了一篇基于点过程的动态图学习模型。

Motivation

传统的知识图谱都被认为是静态图,但现在的数据呈现出复杂的时间动态,因而传统的知识图谱应该被增强为时序知识图谱(TKG)。

Model

本模型针对的数据是图结构发生改变的有向带权异构图序列
作者认为,时间点过程可以看成是一个计数过程N(t)N(t)N(t),表示在ttt时刻前事件发生的次数。描述时间点过程可以用密度函数λ(t)\lambda(t)λ(t),表示在之前的事件发生的条件下,当前时刻发生事件的可能性。作者将事件的发生就用密度函数来进行建模。
TKG的一次事件被记为(es,r,eo,t)(e^s,r,e^o,t)(es,r,eo,t),该四元组表示在ttt时刻主体节点ese^ses和客体节点eoe^oeo之间创建了一个类型为rrr的边连接。事件按时间排序构成一个观察事件集DDD。
对于一次事件,其密度函数计算为:
λres,eo(t∣t‾)=f(gres,eo(t‾))∗(t−t‾)\lambda^{e^s,e^o}_r(t|\overline t)=f(g_r^{e^s,e^o}(\overline t))*(t-\overline t)λres,eo​(t∣t)=f(gres,eo​(t))∗(t−t)其中,
gres,eo(t)=ves(t−)T⋅Rr⋅veo(t−)g_r^{e^s,e^o}(t)=v^{e^s}(t-)^T·R_r·v^{e^o}(t-)gres,eo​(t)=ves(t−)T⋅Rr​⋅veo(t−)
ggg函数是用于计算主体节点和客体节点之间的相对兼容性,作为评分函数,vesv^{e^s}ves表示节点的嵌入。λres,eo(t∣t‾)\lambda^{e^s,e^o}_r(t|\overline t)λres,eo​(t∣t)表示在主体或客体在t‾\overline tt时刻发生事件的条件下,本次事件(es,r,eo,t)(e^s,r,e^o,t)(es,r,eo,t)发生的强度。
主体嵌入更新:
ves(tp)=σ(Wts(tp−tp−1)+Whh⋅hes(tp−))hes(tp−)=σ(Wh⋅[ves(tp−1)⊕veo(tp−)⊕rp−1es])v^{e^s}(t_p)=\sigma(W^s_t(t_p-t_{p-1})+W^{hh}·h^{e^s}(t_p-))\\ h^{e^s}(t_p-)=\sigma(W^h·[v^{e^s}(t_{p-1})\oplus v^{e^o}(t_p-)\oplus r^{e^s}_{p-1}]) ves(tp​)=σ(Wts​(tp​−tp−1​)+Whh⋅hes(tp​−))hes(tp​−)=σ(Wh⋅[ves(tp−1​)⊕veo(tp​−)⊕rp−1es​])客体嵌入更新:
veo(tq)=σ(Wts(tq−tq−1)+Whh⋅heo(tq−))heo(tq−)=σ(Wh⋅[veo(tq−1)⊕veo(tq−)⊕rq−1eo])v^{e^o}(t_q)=\sigma(W^s_t(t_q-t_{q-1})+W^{hh}·h^{e^o}(t_q-))\\ h^{e^o}(t_q-)=\sigma(W^h·[v^{e^o}(t_{q-1})\oplus v^{e^o}(t_q-)\oplus r^{e^o}_{q-1}]) veo(tq​)=σ(Wts​(tq​−tq−1​)+Whh⋅heo(tq​−))heo(tq​−)=σ(Wh⋅[veo(tq−1​)⊕veo(tq​−)⊕rq−1eo​])
注:这里面有多个时间表示需要区分,t−t-t−、t−1t-1t−1、t‾\overline{t}t分别表示什么?
假设tpt_ptp​是节点ese^ses参与的本次事件的时间(当前事件是e^s的第p个事件)
tp−1t_{p-1}tp−1​:表示ese^ses参与的上一个事件的时间;
tp−t_p-tp​−:表示在tpt_ptp​时刻前,最近一个时刻;
tp‾\overline{t_p}tp​​:=max(tes−,teo−)=max(t^{e^s}-,t^{e^o}-)=max(tes−,teo−),表示ese^ses或eoe^oeo最近一次参与事件的时间。

乍一看好像强度函数并没有用来更新节点嵌入,但在损失函数中,作者通过最小化强度函数的联合负对数似然来学习模型,具体分析可以看论文。

论文3 Spatio-Temporal Graph Convolutional Networks: A Deep Learning Framework for Traffic Forecasting

这篇文章发表于IJCAI 2018,它将交通网络构建成无向图,然后运用谱域图卷积和卷积序列模型(convolutional sequence model)来建模。

Motivation

  • 很多深度学习方法可以被用于各种交通问题,如DBN、SAE等,但这些网络都不能从输入中同时提取空间和时间特征;
  • CNN被用来提取空间特征,但它只能用于欧式数据;
  • 基于RNN的网络很难训练并且计算量大(RNN运行时是将序列的信息逐个处理,不能实现并行操作,导致运行速度慢)

Method

v^t+1,…,v^t+H=arg⁡max⁡vt+1,…,vt+BlogP(vt+1,…,vt+H∣vt−M+1,…,vt)\hat v_{t+1},\ldots,\hat v_{t+H}=\underset{v_{t+1}, \ldots, v_{t+B}}{\arg \max } log P(v_{t+1},\ldots,v_{t+H}|v_{t-M+1},\ldots,v_t)v^t+1​,…,v^t+H​=vt+1​,…,vt+B​argmax​logP(vt+1​,…,vt+H​∣vt−M+1​,…,vt​)
图G=(Vt,E,W)\mathcal{G}=(V_t,\mathcal{E},W)G=(Vt​,E,W),节点表示nnn个监控位置,边表示这些监控位置之间的连接。针对的数据是图结构不发生改变的无向带权同构图序列

空间特征提取——GCN

yj=∑i=1CiΘi,j(L)xi∈Rn,1≤j≤Coy_j=\sum_{i=1}^{C_i}\Theta_{i,j}(L)x_i∈R^n,1≤j≤C_oyj​=i=1∑Ci​​Θi,j​(L)xi​∈Rn,1≤j≤Co​输入的特征是X∈Rn×CiX∈R^{n×C_i}X∈Rn×Ci​,输出的卷积结果是Y∈Rn×CoY∈R^{n×C_o}Y∈Rn×Co​。输入的第iii个元素xi∈Rnx_i∈R^nxi​∈Rn,也就是所有节点的第iii个维度特征。对于每个时间步的VtV_tVt​的特征向量XtX_tXt​,可以并行地进行空间信息的提取。

时间特征提取——Gated CNNs

时间卷积层包含一个宽度为KtK_tKt​的1D卷积和gated linear units(GLU),对于图G\mathcal{G}G中的每个节点,时间卷积会处理其KtK_tKt​邻居,并且无padding,因而每次卷积都会缩短Kt−1K_t-1Kt​−1的序列长度。
1D卷积:卷积核Γ∈RKt×Ci×2Co\Gamma∈R^{K_t×C_i×2C_o}Γ∈RKt​×Ci​×2Co​,将输入Y∈RM×CiY∈R^{M×C_i}Y∈RM×Ci​(单个节点的时间序列)映射到两个向量,P、Q:[PQ]∈R(M−Kt+1)×(2Co)[P{\,}Q]∈R^{(M-K_t+1)×(2C_o)}[PQ]∈R(M−Kt​+1)×(2Co​);
GLU:1D卷积得到的P、Q∈R(M−Kt+1)×CoP、Q∈R^{(M-K_t+1)×C_o}P、Q∈R(M−Kt​+1)×Co​,作为GLU的输入,进行哈达玛乘积运算:
Γ∗TY=P⊙σ(Q)∈R(M−Kt+1)×Co\Gamma *_\Tau Y=P\odot\sigma(Q)∈R^{(M-K_t+1)×C_o}Γ∗T​Y=P⊙σ(Q)∈R(M−Kt​+1)×Co​
可以将这个过程映射到所有节点上,也就是输入不再是Y∈RM×CiY∈R^{M×C_i}Y∈RM×Ci​而是Y∈RM×n×Ci\mathcal{Y}∈R^{M×n×C_i}Y∈RM×n×Ci​。

Spatio-temporal Convolutional Block

一个block就是前面图片中的三明治结构,两个时间层中间一个空间层。vl∈RM×n×Clv^l∈R^{M×n×C_l}vl∈RM×n×Cl​表示lll层的输入,vl+1∈R(M−2(Kt−1))×n×Cl+1v^{l+1}∈R^{(M-2(K_t-1))×n×C_{l+1}}vl+1∈R(M−2(Kt​−1))×n×Cl+1​既是lll层的输出又是l+1l+1l+1层的输入:
vl+1=Γ1l∗τReLU(Θl∗G(Γ0l∗τvl))v^{l+1}=\Gamma^l_1*_\tau ReLU(\Theta^l*_\mathcal{G}(\Gamma^l_0*_\tau v^l))vl+1=Γ1l​∗τ​ReLU(Θl∗G​(Γ0l​∗τ​vl))
其中Γ0l\Gamma^l_0Γ0l​表示block中第一个temporal层,Γ1l\Gamma^l_1Γ1l​表示block中的第二个temporal层。

疑惑:论文中引用了一个同期的论文Diffusion convolutional recurrent neural network: Data-driven traffic forecasting,称该模型为GCGRU,并作为baseline,而这篇论文提出的方法明明是DCRNN啊……(貌似是作者投稿的版本问题,GCGRU是第一版中命名的模型)

时序图神经网络总结(1)相关推荐

  1. 【Twitter】时序图神经网络

    图神经网络(GNNs)最近变得越来越受欢迎,因为它们能够学习复杂的关系系统或相互作用,这些关系或作用来源于生物学和粒子物理学到社会网络和推荐系统等广泛问题.尽管在图上进行深度学习的不同模型太多了,但迄 ...

  2. 用于时序动作提名生成任务,爱奇艺提出BC-GNN图神经网络 | ECCV 2020

    时序动作提名生成任务可以从未处理的长视频中定位出包含动作内容的片段,对视频理解以及时序行为检测任务等有着重要的作用.随着视频数量的激增以及视频内容的丰富,对时序动作提名算法的关注和需求也得到巨大提升. ...

  3. ​KDD 2020 开源论文 | 图神经网络多变量时序预测

    ©PaperWeekly 原创 · 作者|马敏博 学校|西南交通大学硕士生 研究方向|命名实体识别 本次分享的论文是 KDD 2020 的一篇工作,出发点是为了更好地建模多变量时间序列数据中成对变量之 ...

  4. 为什么要进行图学习?谈一谈逆势而上的图神经网络

    点击上方 蓝字关注我们 问一问近几年来逆势而上的技术有什么?相信你一定会说出来一个:图神经网络. 图神经网络将会在人工智能的各个领域起着非常重要的作用,虽然目前还没有完全成为各大顶会的焦点,但不可否认 ...

  5. 图神经网络:方法与应用 | 一文展望,四大待解问题

    在 AI Open 杂志 2020 年第一卷中,清华大学周杰等人发表了综述性论文<Graph neural networks: A review of methods and applicati ...

  6. AAAI2021 | 图神经网络最新进展解读

    作者:纪厚业,北京邮电大学,智源 AAAI预讲会讲者 近年来,图神经网络(GNN,Graph Neural Network)逐渐成为人工智能领域的一大热门领域.GNN的一大优势是能够使各个领域(不仅仅 ...

  7. 干货!图神经网络及其自监督学习

    本文约3400字,建议阅读5分钟 本文提出了用于建模工业级规模异构图的异构图转换架构(HGT),针对三方面问题进行解决. 图神经网络是2017年兴起的研究方向,主要作用是利用节点aggregate的方 ...

  8. Make GNN Great Again:图神经网络上的预训练和自监督学习

    来源:RUC AI Box本文约6500字,建议阅读13分钟本文梳理近年来 GNN预训练和自监督学习/对比学习的相关工作. 1 引言 近些年来,对图神经网络(GNN)的研究如火如荼.通过设计基于 GN ...

  9. 收藏|图神经网络综述

    来源:人工智能AI技术 本文约12000字,建议阅读10+分钟 本文为你简述图计算.图数据库.知识图谱.图神经网络等图技术领域的相关历史及不同类型的图结构. 在科学研究中,从方法论上来讲,都应&quo ...

最新文章

  1. 如何查找僵尸进程并Kill之,杀不掉的要查看父进程并杀之
  2. react-native安装Ant Design
  3. java异常对象引用变量_Java面向对象编程-异常处理
  4. Java8新特性:接口的默认方法与接口的静态方法
  5. Android/linux(earlysuspend、lateresume)睡眠唤醒机制简
  6. @AutoWired具体解释
  7. Kubernetes 1.20 版本开始将弃用 Docker,是时候拥抱 Containerd 和 Podman 了!
  8. 计算机有必要报英语四级吗,我已工作了,现在有必要去考英语四级吗?还是 – 手机爱问...
  9. Vue 路由模块化配置
  10. 软件需求模式阅读笔记三
  11. 微信小程序教学第三章(含视频):小程序中级实战教程:列表-静态页面制作...
  12. 国内八家域名注册商优缺点比较(转)
  13. 电视剧《都挺好》弹幕数据分析
  14. AE脚本:AE导入SubRip/SRT/TXT/VTT字幕
  15. Drupal9自定义module添加多个定时任务
  16. 位运算---加、减、乘、除
  17. 2021年G1工业锅炉司炉证考试及G1工业锅炉司炉模拟考试题
  18. 【GD32F427开发板试用】5. SPI驱动TFTLCD屏幕
  19. 乐视网tv版服务器无响应,揭秘网络电视机顶盒看电视直播卡的原因
  20. c4d学习笔记-弯曲

热门文章

  1. Python挑战游戏( PythonChallenge)闯关之路Level 0
  2. 这几个动图告诉你科学的神奇,看完瞬间觉得智商都提高了
  3. 呼叫中心座席人员如何把控时间
  4. mysql dbms是什么_什么是DBMS
  5. leetcode简单之613.直线上的最近距离
  6. 严寒冰 国家计算机网络,北京航空航天大学计算机学院——严寒冰
  7. php开发h5游戏,H5的canvas实现贪吃蛇小游戏
  8. 是否可以同时学习两门编程语言?——我的语言学习经验告诉我不行
  9. 客户标签不能只是个“标签”
  10. 酷炫!可视化神器Plotly玩转饼图