动态图通过节点表示实体,通过带时间戳的链接表示实体之间的交互,被广泛用于建模现实世界中的各种场景,如社交网络、用户-项目交互系统、交通网络和物理系统。尽管动态图学习方法发展迅速,但现有方法仍面临两个主要限制:
-
缺乏节点关联和长期依赖建模:大多数现有方法独立计算节点的时间表示,未利用节点之间的关联,这些关联通常预示着未来的交互。此外,由于计算限制和梯度问题,这些方法难以建模长期时间依赖。
-
缺乏统一的动态图模型库:不同方法的训练流程和实现不一致,导致可重复性差,研究人员的学习成本高。
DyGFormer 是一种基于 Transformer 的动态图学习架构,主要由以下两个关键模块组成:
邻居共现编码方案(Neighbor Co-occurrence Encoding Scheme)
原理
邻居共现编码方案旨在显式地探索节点之间的关联。在动态图中,节点之间的交互通常具有很强的关联性,这些关联性可以提供重要的信息来预测未来的交互。该方案通过分析节点的历史交互序列,记录每个邻居节点在源节点和目标节点序列中的出现频率,从而捕捉节点之间的相关性。
具体实现
-
邻居共现矩阵的构建:
-
对于每次交互,模型会记录源节点和目标节点的邻居节点在历史序列中的出现次数。
-
这些出现频率被编码为向量,作为节点之间关联的表示。
-
通过这种方式,模型可以捕捉到节点之间的潜在关系,从而更好地理解动态图的结构。
-
-
编码过程:
-
假设节点 u 和节点 v 在时间 t 发生交互,模型会记录节点 u 的邻居节点在节点 v 的历史交互序列中的出现次数,以及节点 v 的邻居节点在节点 u 的历史交互序列中的出现次数。
-
这些出现次数被编码为向量,作为节点 u 和节点 v 之间的共现特征。
-
例子
假设我们有一个简单的动态图,其中节点 A 和节点 B 在时间 t1 和 t2 发生交互,节点 B 和节点 C 在时间 t3 发生交互。我们可以构建邻居共现矩阵来记录这些交互:
-
在时间 t1,节点 A 和节点 B 交互,节点 A 的邻居节点是 B,节点 B 的邻居节点是 A。
-
在时间 t2,节点 A 和节点 B 再次交互,节点 A 的邻居节点仍然是 B,节点 B 的邻居节点仍然是 A。
-
在时间 t3,节点 B 和节点 C 交互,节点 B 的邻居节点是 C,节点 C 的邻居节点是 B。
通过记录这些交互,我们可以构建邻居共现矩阵,如下所示:
A | B | C | |
---|---|---|---|
A | 0 | 2 | 0 |
B | 2 | 0 | 1 |
C | 0 | 1 | 0 |
在这个矩阵中,值表示节点之间的共现次数。例如,节点 A 和节点 B 的共现次数为 2,表示它们在历史交互中共同出现的次数为 2 次。
补丁技术(Patching Technique)
原理
Patching Technique旨在解决动态图中长期时间依赖的问题。在动态图中,节点的交互历史可能非常长,直接处理整个序列会导致计算复杂度高和梯度消失等问题。补丁技术通过将每个节点的序列划分为多个补丁,使模型能够从更长的历史中受益,同时保留局部时间邻近性,并降低计算复杂度。
具体实现
-
序列划分:
-
将每个节点的交互序列划分为固定大小的Patching 。
-
每个Patching 包含一定数量的历史交互。
-
-
补丁输入:
-
这些Patching 被输入到 Transformer 模型中,模型可以并行处理这些Patching ,从而提高计算效率。
-
例子
假设我们有一个节点 A 的交互序列,长度为 10,我们将其划分为大小为 3 的Patching :
-
序列:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
-
补丁:[[1, 4, 7], [2, 5, 8], [3, 6, 9], [10]]
通过这种方式,模型可以并行处理这些Patching ,从而提高计算效率。