dyngraph2vec, Capturing Network Dynamics using Dynamic Graph Representation Learning
方法
问题陈述
- 图:G(V,E)
- 动态图:G=G1,...,GT
- 目标:将一个节点,通过学习一个映射方法:ft={V1,...,Vt,E1,...,Et}→Rd转换为一组低维向量:yv1,...,yvt,其中yvi=fi(V1,...,Vi,E1,...,Ei),是一个 d 维的向量,捕获了1−i时刻的图动态变换。
dyngraph2vec
dyngraph2vec 是一个深度学习模型,输入前面几个时间片段的图,即可输出下一个时刻的图。
模型通过优化下面这个损失函数,来学习时刻t的图嵌入(network embedding,即其向量表达)。
Lt+1 =∥(At+l+1^−At+l+1)⊙B∥F2=∥(f(At,...,At+l)−At+l+1)⊙B∥F2
其中,A 表示图的邻接矩阵,f函数用来计算A^,也就是对t+l+1时刻的图的邻接矩阵的估计。
B是惩罚项,Bij=β,for(i,j)∈Et+l+1,else1。
⊙表示一种矩阵的布尔运算,具体定义可以在这个pdf里面找一下(https://www.math.fsu.edu/~pkirby/mad2104/SlideShow/s5_4.pdf),不再详述。
文章使用的深度学习模型有如下三种:dyngraph2vecAE,dyngraph2vecRNN,dyngraph2vecAERNN。

我们可以看到,这三种方法都分成两个步骤,Deep encoders 的目的,是输入动态的邻接矩阵,为每个节点生成低维向量;Deep decoders 则可以根据低维向量,来生成下一时刻的预测图。