【论文下饭】Temporal Graph Network for Deep Learning on Dynamic Graphs

本文详细介绍了TemporalGraphNetworks (TGN)在连续时间动态图上的应用,包括核心模块如记忆、消息传递、更新和嵌入,以及训练策略。实验结果显示TGN在edge prediction任务中表现出SOTA性能,尤其TGN-atten模型速度快且准确率高。消融实验揭示了记忆和时序信息的重要性。


综述
Representation Learning for Dynamic Graphs: A Survey

知识点
Transductive\inductive

transductive、inductive理解
Transductive和Inductive


Paper: Temporal graph network for deep learning on dynamic graphs
Cite: Rossi E, Chamberlain B, Frasca F, et al. Temporal graph networks for deep learning on dynamic graphs[J]. arXiv preprint arXiv:2006.10637, 2020.

中文参考:
内容比较好:TGN:Temporal Graph Networks for Deep Learning on Dynamic Graphs
格式比较好:TGN: TEMPORAL GRAPH NETWORKS FOR DEEP LEARNING ON DYNAMIC GRAPHS论文笔记


1 介绍

图表示学习 取得了一系列的成功。
图 普遍地用于 关系 和 交互 系统的建模,比如说 社交网络、生物网络。
在这些网络上,普遍使用GNN。GNN通过 信息传递机制 聚合邻居的信息,得到该节点的嵌入向量。之后,便可用于节点分类、图分类、边集预测任务上。

大部分在 图上的深度学习算法 都有一个前提假定——图是静态的。
但是,大多数现实生活的交互系统,比如说 社交网络、生物网络,图都是动态的。
通过忽略动态图的时序特征,使用 静态图深度学习方法,也是可以的。但是,这一般是次优解。因为,在某些情况下,模型会忽略掉一些动态图的关键特征

在动态图上的研究也是今年才兴起的,大多数研究都局限于 离散时间图(discrete-time dynamic graph)。当动态图是连续的(边可以在任何时间出现)、进化的(点可以连续地加入到图钟)时,上面提到的方法都不适合。

直到最近,有很多方法提出 说 支持 连续时间图(continuous-time dynamic graph)。

本文的贡献

  • 提出了适用于 连续时间图 的 generic inductive framework Temproal Graph Networks(TGNs)。在本文之前的很多方法,都可以看作是TGNs的一个特例。
  • 提出了一个高效的训练策略,使得模型能够从时序数据中实现高效的并行处理。
  • 做了很多详细的 消融实验,分析了 本文模型各个组件的性能。
  • 本文的模型在许多(both transductive and inductive)任务上取得了SOTA表现,并且 速度比之前的方法快。

2 背景

在静态图上的深度学习
主要讲的就是GNN(这里跳过)

动态图
动态图有两种分类。

  • Discrete-time dynamic graphs 离散时间动态图DTDG
    它是一系列的 一段时间内的 动态图的快照(snapshots)。

  • Continuos-time dynamic graphs 连续时间动态图CTDG
    它是动态图更加一般性的表示。由一系列的时间组成(timed lists of events)。这些事件包括 边的增加/删除、节点的添加/删除、节点/边的特征变化

本文在正文部分 使用节点/边的添加 作为例子。(节点/边删除 在附录讨论)

3 Temporal Graph Network

TGN的介绍。encoder-decoder模型。

3.1 核心模块

在这里插入图片描述

Memory

对于每个节点 i i i,在时刻 t t t,都有一个向量 s i ( t ) s_i(t) si(t)表示为该节点的记忆单元。它记录了节点 i i i [ 0 , t ] [0,t] [0,t]时间内记忆。它代表了节点的“历史”。

有了记忆模块,TGNs就可以记录 每个节点在图中 长期的依赖关系。

  • 当新的节点被加入时,它的记忆单元初始化一个零向量。
  • 每个事件过后,相关节点的记忆单元就会被更新。

也可以使用全局的记忆单元,来记录整个图的变化,但是为了简单起见,这留作未来的工作。

Message Function(msg)

对于一个 交互事件 e i j ( t ) e_{ij}(t) eij(t),有两个方向的信息。
m i ( t ) = m s g s ( s i ( t − ) , s j ( t − ) , Δ t , e i j ( t ) ) m j ( t ) = m s g d ( s j ( t − ) , s i ( t − ) , Δ t , e i j ( t ) ) \begin{aligned} &m_i(t) = \mathrm{msg_s} (s_i(t^-),s_j(t^-),\Delta t,e_{ij}(t) ) \\ &m_j(t) = \mathrm{msg_d} (s_j(t^-),s_i(t^-),\Delta t,e_{ij}(t)) \end{aligned} mi(t)=msgs(si(t),sj(t),Δt,eij(t))mj(t)=msgd(sj(t),si(t),Δt,eij(t))
其中, s i ( t − ) s_i(t^-) si(t)为节点 i i i t t t时刻前的记忆单元。 m s g msg msg为可以学习的信息传递函数,比如说MLP。

在本文中,使用 i d e n t i t y ( i d ) identity(id) identity(id)作为信息传递函数 m s g msg msg。(即,简单地对 m s g msg msg的输入进行concate)

Message Aggregator(agg)

在使用批次(batch)处理时,有一些节点的 m s g msg msg会被多次使用。
出于性能考虑,本文提出了 信息聚合机制
m ˉ i ( t ) = a g g ( m i ( t 1 ) , . . . , m i ( t b ) ) \bar m_i(t) = \mathrm{agg}(m_i(t_1),...,m_i(t_b)) mˉi(t)=agg(mi(t1

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值