- 论文地址:https://arxiv.org/pdf/1902.10191
- 来源:AAAI, 2020
- 源码地址:EvolveGCN
- 关键词:Dynamic Graphs, GCN
1 前言
该论文解决的是不断进化(evolve)的graph的表征问题。以往的方法主要将结点的表征通过RNN来学习不断进化的graph,这种方法在学习表征时需要知道结点在所有时间区间上的变化(相当于是transductive的),并且在变化比较频繁的graph上不太友好。论文提出EvolveGCN,将GCN和RNN结合,使用RNN来学习GCN的参数,以此来捕捉动态图的动态性。
2 问题定义
对于一个动态图 G G G,在每一个时间点 t t t上,可以将 G G G表示为 ( A t , X t ) (A_t,X_t) (At,Xt),分别表示时间 t t t时的邻接矩阵和特征矩阵。最终要学习的是 G G G中每个结点在各个时间点上的结点表征。
3 EvolveGCN思路
如上图所示,在时间点
t
t
t时,将
(
A
t
,
X
t
)
(A_t,X_t)
(At,Xt)输入到模型中,可以学习到
t
t
t时的结点表征。注意,GCN的参数并不是训练得来的,而是通过RNN计算得到的。GCN在EvolveGCN中起的作用:通过
(
A
t
,
X
t
)
(A_t,X_t)
(At,Xt)得到结点表征,但是并不会在计算表征的过程中更新GCN各层的参数。RNN在EvolveGCN中起的作用:在
t
−
1
t-1
t−1时的结点表征和GCN参数的基础上更新GCN的参数,更新公式如下:
W
t
(
l
)
⏟
hidden state
⏞
GCN weights
=
GRU
(
H
t
(
l
)
⏞
node embeddings
⏟
input
,
W
t
−
1
(
l
)
⏟
hidden state
⏞
GCN weights
)
\overbrace{\underbrace{W_{t}^{(l)}}_{\text {hidden state }}}^{\text {GCN weights }}=\operatorname{GRU}(\underbrace{\overbrace{H_{t}^{(l)}}^{\text {node embeddings }}}_{\text {input }}, \overbrace{\underbrace{W_{t-1}^{(l)}}_{\text {hidden state }}}^{\text {GCN weights }})
hidden state
Wt(l)
GCN weights =GRU(input
Ht(l)
node embeddings ,hidden state
Wt−1(l)
GCN weights )
或
W
t
(
l
)
⏟
GCN weights
⏞
output
=
LSTM
(
W
t
−
1
(
l
)
⏟
input
⏞
GCN weights
)
\overbrace{\underbrace{W_{t}^{(l)}}^{\text {GCN weights }}}_{\text {output }}=\operatorname{LSTM}(\overbrace{\underbrace{W_{t-1}^{(l)}}_{\text {input }}}^{\text {GCN weights }})
Wt(l)GCN weights
output =LSTM(input
Wt−1(l)
GCN weights )
从上可以得到,动态图的变化都保存在了GCN的参数中。在实现时,需要对RNN进行如下更改:
- 将RNN单元的输入与隐状态扩展为矩阵形式,因为GCN的参数和结点表征都是矩阵的形式
- 将输入的列与隐状态的列相匹配
论文中针对参数的更新了进行了较详细的阐述,具体可以参考论文。
4 方法的优势与局限性
4.1 优势
- 对动态图的表征学习提出了可行的解决方法
- 将RNN和GCN相结合,利用RNN来进化GCN的参数,能够应对变化频繁的graph,而且不需要提前预知结点的所有变化
4.2 局限性
- 虽然不需要提前预知结点的所有变化,但是需要预知graph中的所有结点,不能应对结点的变化
- 使用RNN来进化GCN的参数,将graph的动态性保存在参数中,一个训练好的模型也许只能捕捉一种动态性
欢迎访问我的个人博客~~~