时序图神经网络总结(1)

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

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 ⁡ x t + 1 , … , x t + K P ( x t + 1 , … , x t + K ∣ x t − J + 1 , … , x t ) \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+KmaxP(xt+1,,xt+KxtJ+1,,xt)针对的数据是图结构不发生改变的无向带权同构图序列
作者提出了两种GCRN结构,一是对每个序列先进行图卷积处理再将卷积之后的结果输入LSTM;二是将FC-LSTM中的2D卷积替换成图卷积。

Model 1

x t C N N = C N N G ( x t ) i = σ ( W x i x t C N N + W h i h t − 1 + w c i ⊙ c t − 1 + b i ) f = σ ( W x f x t C N N + W h f h t − 1 + w c f ⊙ c t − 1 + b f ) c t = f t ⊙ c t − 1 + i t ⊙ tanh ⁡ ( W x c x t C N N + W h c h t − 1 + b c ) o = σ ( W x o x t C N N + W h o h t − 1 + w c o ⊙ c t + b o ) h t = o ⊙ tanh ⁡ ( c t ) \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} xtCNNifctoht=CNNG(xt)=σ(WxixtCNN+Whiht1+wcict1+bi)=σ(WxfxtCNN+Whfht1+wcfct1+bf)=ftct1+ittanh(WxcxtCNN+Whcht1+bc)=σ(WxoxtCNN+Whoht1+wcoct+bo)=otanh(ct)

Model 2

i = σ ( W x i ∗ G x t + W h i ∗ G h t − 1 + w c i ⊙ c t − 1 + b i ) f = σ ( W x f ∗ G x t + W h f ∗ G h t − 1 + w c f ⊙ c t − 1 + b f ) c t = f t ⊙ c t − 1 + i t ⊙ tanh ⁡ ( W x c ∗ G x t + W h c ∗ G h t − 1 + b c ) o = σ ( W x o ∗ G x t + W h o ∗ G h t − 1 + w c o ⊙ c t + b o ) h t = o ⊙ tanh ⁡ ( c t ) \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} ifctoht=σ(WxiGxt+WhiGht1+wcict1+bi)=σ(WxfGxt+WhfGht1+wcfct1+bf)=ftct1+ittanh(WxcGxt+WhcGht1+bc)=σ(WxoGxt+WhoGht1+wcoct+bo)=otanh(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),表示在 t t t时刻前事件发生的次数。描述时间点过程可以用密度函数 λ ( t ) \lambda(t) λ(t),表示在之前的事件发生的条件下,当前时刻发生事件的可能性。作者将事件的发生就用密度函数来进行建模。
TKG的一次事件被记为 ( e s , r , e o , t ) (e^s,r,e^o,t) (es,r,eo,t),该四元组表示在 t t t时刻主体节点 e s e^s es和客体节点 e o e^o eo之间创建了一个类型为 r r r的边连接。事件按时间排序构成一个观察事件集 D D D
对于一次事件,其密度函数计算为:
λ r e s , e o ( t ∣ t ‾ ) = f ( g r e s , e o ( 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(tt)=f(gres,eo(t))(tt)其中,
g r e s , e o ( t ) = v e s ( t − ) T ⋅ R r ⋅ v e o ( t − ) g_r^{e^s,e^o}(t)=v^{e^s}(t-)^T·R_r·v^{e^o}(t-) gres,eo(t)=ves(t)TRrveo(t)
g g g函数是用于计算主体节点和客体节点之间的相对兼容性,作为评分函数, v e s v^{e^s} ves表示节点的嵌入。 λ r e s , e o ( t ∣ t ‾ ) \lambda^{e^s,e^o}_r(t|\overline t) λres,eo(tt)表示在主体或客体在 t ‾ \overline t t时刻发生事件的条件下,本次事件 ( e s , r , e o , t ) (e^s,r,e^o,t) (es,r,eo,t)发生的强度。
主体嵌入更新:
v e s ( t p ) = σ ( W t s ( t p − t p − 1 ) + W h h ⋅ h e s ( t p − ) ) h e s ( t p − ) = σ ( W h ⋅ [ v e s ( t p − 1 ) ⊕ v e o ( t p − ) ⊕ r p − 1 e s ] ) 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(tptp1)+Whhhes(tp))hes(tp)=σ(Wh[ves(tp1)veo(tp)rp1es])客体嵌入更新:
v e o ( t q ) = σ ( W t s ( t q − t q − 1 ) + W h h ⋅ h e o ( t q − ) ) h e o ( t q − ) = σ ( W h ⋅ [ v e o ( t q − 1 ) ⊕ v e o ( t q − ) ⊕ r q − 1 e o ] ) 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(tqtq1)+Whhheo(tq))heo(tq)=σ(Wh[veo(tq1)veo(tq)rq1eo])
注:这里面有多个时间表示需要区分, t − t- t t − 1 t-1 t1 t ‾ \overline{t} t分别表示什么?
假设 t p t_p tp是节点 e s e^s es参与的本次事件的时间(当前事件是e^s的第p个事件)
t p − 1 t_{p-1} tp1:表示 e s e^s es参与的上一个事件的时间;
t p − t_p- tp:表示在 t p t_p tp时刻前,最近一个时刻;
t p ‾ \overline{t_p} tp = m a x ( t e s − , t e o − ) =max(t^{e^s}-,t^{e^o}-) =max(tes,teo),表示 e s e^s es e o e^o eo最近一次参与事件的时间。

乍一看好像强度函数并没有用来更新节点嵌入,但在损失函数中,作者通过最小化强度函数的联合负对数似然来学习模型,具体分析可以看论文。
时序图神经网络总结(1)_第1张图片

论文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 ⁡ v t + 1 , … , v t + B l o g P ( v t + 1 , … , v t + H ∣ v t − M + 1 , … , v t ) \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+BargmaxlogP(vt+1,,vt+HvtM+1,,vt)
G = ( V t , E , W ) \mathcal{G}=(V_t,\mathcal{E},W) G=(Vt,E,W),节点表示 n n n个监控位置,边表示这些监控位置之间的连接。针对的数据是图结构不发生改变的无向带权同构图序列
时序图神经网络总结(1)_第2张图片

空间特征提取——GCN

y j = ∑ i = 1 C i Θ i , j ( L ) x i ∈ R n , 1 ≤ j ≤ C o y_j=\sum_{i=1}^{C_i}\Theta_{i,j}(L)x_i∈R^n,1≤j≤C_o yj=i=1CiΘi,j(L)xiRn,1jCo输入的特征是 X ∈ R n × C i X∈R^{n×C_i} XRn×Ci,输出的卷积结果是 Y ∈ R n × C o Y∈R^{n×C_o} YRn×Co。输入的第 i i i个元素 x i ∈ R n x_i∈R^n xiRn,也就是所有节点的第 i i i个维度特征。对于每个时间步的 V t V_t Vt的特征向量 X t X_t Xt,可以并行地进行空间信息的提取。

时间特征提取——Gated CNNs

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

Spatio-temporal Convolutional Block

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

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

你可能感兴趣的:(图神经网络,神经网络,人工智能)