G = ( V , E , X ) G = (V, E, X) G=(V,E,X)
V = v 1 , v 2 , . . . , v m V = {v_1, v_2, ..., v_m} V=v1,v2,...,vm
E = e i , j E = {e_{i, j}} E=ei,j , e i , j = ( v i , v j , f i , j ) e_{i,j} = (v_i, v_j, f_{i,j}) ei,j=(vi,vj,fi,j), f i , j f_{i, j} fi,j 表示 边 e i , j e_{i, j} ei,j 的特征
X X X 是表示节点特征的矩阵,矩阵的每一行是一个节点的嵌入向量
Graph Focus Task:预测未知 Graph 的 label
学习动态图神经网络的动态变化,即学习动态图随时间演化的重复模式。动态图比静态图多了一维:即,时间维度。
动态图表示随着时间演变的图,不同类型的图演变是不一样的,有的变化得非常快而有的非常慢。
动态图可以被建模为两种形式,根据演化时间的表征:
鉴于 DTDG 和 CTDG 的利弊,选择合适的图结构是很重要的,使用不同的图结构,对应的图神经网络算法不一样。
编码器:动态图的观测结果 ->
节点 embedding (图嵌入)
解码器:对图嵌入进行解码,并预测
可以尝试不同的编码器与解码器的组合,直到得到最优与具体任务的模型
图聚焦任务:设计一种聚合方法,将节点嵌入聚合到图嵌入中
给定算法是显式还是隐式地将时间作为输入特征
The success of temporal learning relies on the time based ordering of the input snapshots and the regular observation frequency
显式时间学习模型具有 periodicity recognition
和 vector clock recognition
的能力,而隐式时间学习模型不具有这种能力
对于离散动态图,顺序模型可以学习周期模式,模型可以通过输入快照的顺序和位置来推断底层的时间戳。对于连续动态图,没有明确使用时间,这是不可行的。
Time2Vec 可以编码时间,利用时间编码,CTDG 可以更好地学习周期模式。
起始节点 到 目标节点 的时间距离,是评估信息从起始节点流动到目标节点所需时间的度量。
Vector Clock
:用来表示每个节点时序的一个向量,可以用来推理节点之间的出现前后关系
给定 t 时刻 动态图 G t G_t Gt 的状态 ( E t , X t , t ) (E_t, X_t, t) (Et,Xt,t), E t E_t Et 表示 t 时刻的边连接关系,X_t 表示 t 时刻的节点嵌入矩阵,实现模式可以表示为:
其中,tp() 可分为三个阶段
asu() 捕获外部因素对图演化(节点、边、整图属性变化)的影响,并输出 X t n + 1 ′ X'_{t_{n+1}} Xtn+1′ 表示 t n + 1 t_{n+1} tn+1 时刻 X 的估计
根据任务的不同,属性可能是节点属性、边属性、图属性
描述动态图节点连接的演化过程
ap() 根据 t 时刻 节点特征、边连接、下一时刻的X估计,生成新的连接关系
在图分析中,假设节点是会受其邻居的影响的(Inductive Bias),Message Passing 的设计是为了学习节点如何受其邻居的影响。
Message Passing 是一种局部领域信息聚合的方法, 其通过聚合相邻节点 和边连接来更新节点embedding
输入DTDG的 t 个 snapshot,static graph encoder 生成 t 个 snapshot 的图嵌入矩阵,然后由 sequential decoder 进行预测
不作关注,但是容易过拟合的任务可以尝试这个
这部分大多基于GNN,使用 Message Passing 来聚合邻居节点
DTDG的有督促学习中,时间模式通过 snapshot 的演变过程来捕获