时序图神经网络:动态演化的图上学习

FreeGuideOnline 最新 2026-06-14

时序图神经网络:动态演化的图上学习

在社交网络追踪谣言传播、金融交易检测欺诈、交通路网预测拥堵等现实场景中,数据并非静止的快照,而是随时间持续演化的图结构。时序图神经网络(Temporal Graph Neural Networks, TGNNs) 正是为这种动态图量身定制的深度学习工具。本教程将从核心概念出发,逐步拆解主流模型与学习范式,帮助你建立从理论到实践的系统认知。


1. 什么是动态图,为什么需要时序图神经网络?

1.1 从静态图到动态图

传统的图神经网络(GNN)假设图结构是固定不变的,所有节点和边在处理时一次性给出。这种 静态图 在描述“你的好友关系”时勉强可用,但无法刻画“你何时添加了某位好友”、“转账行为发生的时间顺序”等时间维度信息。

动态图 分为两种类型:

  • 离散时间动态图(DTDG):图以一系列时间快照的形式出现,例如每小时截取一次社交网络状态。
  • 连续时间动态图(CTDG):边和节点的出现、消失以事件流的形式刻画,每个事件带有时间戳,例如每次转账都记录为一条带有时间的交易事件。

1.2 时序图神经网络的核心挑战

在动态的图结构上做表示学习,需要同时处理三类关键问题:

  • 结构演化:邻居集合随时间变化,节点的嵌入需要随结构更新。
  • 时序依赖:短期突发与长期趋势交织,模型需要记忆并遗忘过期信息。
  • 计算效率:许多场景要求实时或近实时更新,批量训练的方法难以直接照搬。

TGNN 的目标是学习节点、边甚至整个图随时间的嵌入表示,使其能够捕获拓扑结构与时间模式的双重变化,支撑链路预测、节点分类、异常检测等下游任务。


2. 两大主流建模范式

2.1 基于时间快照的模型:时空图神经网络

对于离散时间动态图,最自然的想法是将每个快照用单层 GNN 编码,再结合序列模型处理时序演变。这类方法常被称作 时空图神经网络(Spatio-Temporal GNN)

典型流水线:

  1. 对每一个时间步的快照图 $G_t$,使用 GCN、GAT 等获得节点表示 $H_t$。
  2. 将所有时间步的表示序列 ${H_1, H_2, \dots, H_T}$ 输入 RNN、1D-CNN 或 Transformer,捕捉长期依赖。
  3. 输出下一时刻的预测或节点分类结果。

代表性模型:STGCN(将图卷积与门控 CNN 结合用于交通预测)、DCRNN(融合扩散卷积与 GRU)等。这类架构在交通、气象等有规律采样的栅格化动态图上表现优异,但对事件粒度极细、时间间隔高度不均匀的场景适应性有限。

2.2 基于时间的记忆与消息传递:时间图神经网络

面向连续时间动态图,模型需要在每一次事件到来时动态更新相关节点的嵌入。这一范式不再将时间离散化,而是将记忆单元与消息传递机制紧密结合。

核心组件:

  • 记忆模块:为每个节点维护一个状态向量 $s_v(t)$,存储其历史行为的压缩表示。常见实现为 RNN(如 GRU)或可学习的记忆单元。
  • 消息函数:当一条边 $(u,v)$ 在时刻 $t$ 产生时,根据源节点、目标节点的当前状态和边特征,生成两条消息,分别发送给 $u$ 和 $v$。
  • 消息聚合器:对节点过去收到的一批消息,通过注意力机制或时间感知池化融合。注意力通常会考虑消息的时序顺序或时间间隔。
  • 更新函数:将聚合后的消息与节点当前记忆一起,送入 GRU 等得到新的记忆 $s_v(t')$。

代表性模型:

  • TGN(Temporal Graph Network):定义了上述完整框架,并系统地比较了多种消息聚合器(如保留最近消息的池化器、基于时间编码的注意力聚合器)。
  • DyRep:将动态图建模为两个耦合的点过程:关联过程驱动拓扑演化,传播过程更新邻居表示。
  • TGAT:不依赖显式的记忆模块,直接利用时间编码函数,将节点的邻居特征与时间间隔编码后通过自注意力层聚合,适合小批量训练。

3. 关键技术:时间编码

单纯的 RNN 时间步或绝对时间戳无法告诉模型“事件发生在多久以前”这一相对信息。时间编码成为时序图神经网络区分“刚刚发生”与“很久以前”的关键输入。

3.1 简单启发式编码

  • 相对时间差编码:计算当前事件与目标事件的时间差 $\Delta t$,并映射为一个向量。
  • 时间槽分箱:将 $\Delta t$ 等宽或等频分桶,再用 one-hot 或可学习嵌入。

3.2 基于函数式的时间编码

受 Transformer 位置编码的启发,TGAT 提出使用正弦函数将连续时间映射到高维空间: [ \Phi(t) = \left[\cos(\omega_1 t), \sin(\omega_1 t), \dots, \cos(\omega_d t), \sin(\omega_d t)\right] ] 其中频率 $\omega_i$ 按对数尺度变化。这种编码使模型自然携带时间差信息,且可与节点特征拼接后送入注意力层,实现时间敏感的邻居选择。

在学习型编码方面,一些方法直接让模型学习时间间隔的嵌入,或使用 Bochner 定理构建可学习的核函数表示时间差,进一步提升表达能力。


4. 训练策略与采样技巧

4.1 时间感知的邻居采样

全图邻居爆炸式增长是 GNN 训练的瓶颈,在动态图中问题更甚,因为每次事件都可能触发大量历史邻居参与更新。改进方法包括:

  • 时序邻居采样:只采样最近的 K 个交互邻居,既保持计算量恒定,又天然强调近期信息。
  • 分层抽样:在不同时间层上采样,捕获长期依赖但不引入过多邻居。

4.2 在线训练与批量处理

连续时间设置下,模型通常以在线方式逐事件更新,但实际训练为利用 GPU 并行性,会将事件流切割为固定大小的时序批次。注意要维护批次内的因果顺序,避免未来信息泄露。一种做法是按时间顺序处理事件,并仅在需要预测时回看历史邻居,严格分离训练与验证的时间边界。


5. 应用场景与实验建议

5.1 典型应用

  • 金融反欺诈:将用户、商户、交易建模为动态二部图,时序 GNN 捕获“短时间内频繁小额试探后大额转账”等行为模式。
  • 推荐系统:用户与物品的交互随时间漂移,时序图可以建模即时兴趣与长期偏好,提升召回率。
  • 社交网络分析:谣言溯源、影响力传播预测,极度依赖消息发出和转发的时间顺序。
  • 生物与物理领域的动态图:蛋白质折叠过程中的氨基酸交互事件、电力网络的瞬时状态监测。

5.2 实现资源

  • PyG (PyTorch Geometric) 临时模块:提供了 TGN、TGAT 等模型的实现,内置时序采样和转换工具。
  • DGL:其 dgl.nn.pytorch 中包含 TGN 等组件,且原生支持时序图的数据加载。
  • DeGNN、Euler 等框架也在不断完善对时间动态图的支持。

数据方面,Wikipedia、Reddit、MOOC(学生交互)、LastFM 等标准数据集常被用作基准,其中时间戳天然存在。

5.3 调参观察点

  • 记忆更新频率:过高的更新频率引入噪声,过低又缓慢僵硬,可设计自适应更新门控。
  • 时间编码维度:一般取与节点特征相同维度,过大可能导致过拟合时间模式。
  • 消息存储窗口:保留过长时间窗口的消息会大幅增加内存和计算,可在聚合后仅保留节点记忆,形成摘要。

6. 前沿趋势与总结

当前时序图神经网络正从“可处理的动态”向“大规模、多模态、可解释”演进。一些前沿方向包括:

  • 与流式学习的深度结合:将 TGNN 置于严格的一次通过、有限内存约束下运行。
  • 异质动态图与知识图谱:将实体、关系类型的时间演化全部纳入建模。
  • 自监督预训练:基于时间对比、未来预测等任务,在大规模无标注动态图上学习通用表征。
  • 可解释性:回溯模型决策路径,标定哪些历史时刻和邻居对当前预测最关键。

总结:时序图神经网络通过融合图结构编码与时间编码,赋予模型在动态世界中持续学习和推理的能力。掌握基于快照的时空模型与基于事件的记忆网络两大范式,以及时间编码与采样这类基础设施,你将能解决大量之前静态图模型无能为力的实际时序问题。建议从 PyG 或 DGL 的官方 TGN 示例入手,逐步替换聚合器和编码器,在自己的数据上迭代出最优方案。