Dynamic Graph Embedding调研

2,023 阅读4分钟

1、分类

1.1 综述

自己整理了一些经典的论文和开源代码: github.com/ytchx1999/D…

github上一个大佬整理的仓库:github.com/Cantoria/dy…zhuanlan.zhihu.com/p/368771456

论文链接年份单位
Foundations and Modeling of Dynamic Networks Using Dynamic Graph Neural Networks: A Surveyieeexplore.ieee.org/stamp/stamp…2021悉尼科技大学
A Survey on Embedding Dynamic Graphs (更广泛,DGNN方法总结的少一些)arxiv.org/pdf/2101.01…2021UFJF
Representation Learning for Dynamic Graphs: A Surveywww.jmlr.org/papers/volu…2020--

1.2 分类

DGNN.png

2、典型方法介绍

image.png

2.1 动态网络的表示和类型

动态网络的表示:

  • 离散型 -- snapshot sequence

    • DG={G1,G2,...,GT}DG = \{G^1, G^2, ..., G^T\},(可以使用时刻或滑动窗口进行切分),1...T一般称为time step。
  • 连续型 -- timestamped-graph

    • 基于事件的表示:EB={(ui,vi,ti,Δti),i=1,2,...}EB = \{(u_i, v_i, t_i, \Delta t_i), i=1,2,...\}
    • 接触序列表示/带有时间戳的边集表示:CS={(ui,vi,ti),i=1,2,...}CS = \{(u_i, v_i, t_i), i=1,2,...\},这种比较多
    • 流图:ei=(ui,vi,ti,δi),δi{1,+1}e_i = (u_i, v_i, t_i, \delta_i), \delta_i \in \{-1, +1\}
  • 连续型可以通过切分转化为离散型,但是反过来不行(缺少具体的timestamp)。

按照网络中边存在时间长短划分:

image.png

  • interaction/temporal:边存在时间短,很可能是瞬间的。例如,邮件,用户和商品的交互。
  • envolving:边存在时间长,可能长期存在。例如,引文网络。

目前很少考虑节点也是动态的情况,大部分都是边是动态的,节点是静态的。

2.2 Discrete DGNN

2.2.1 stacked DGNN

DySAT

DySAT阅读笔记

image.png

2.2.2 integrated DGNN

EvolveGCN

EvolveGCN阅读笔记

image.png

2.2.3 动态图自编码器/DGAE

DynGEM

DynGEM阅读笔记

image.png

2.3 Continuous DGNN

选择连续DGNN的一些原因:

  • 编码节点之间的时间差,相对时间间隔的长短产生主要的影响,比较符合直觉
  • 可以很自然的加入到计算注意力系数的过程中
  • 不会因为切图而发生动态图演化信息的损失
  • WSDM Cup 2022前排的解决方案几乎都是动态DGNN(效果上确实能达到SOTA),TGN用的比较多

2.3.1 RNN-based

JODIE

JODIE阅读笔记

image.png

2.3.2 TPP-based

DyREP

DyREP阅读笔记

image.png

2.3.3 Time embedding-based

TGAT

TGAT阅读笔记

image.png

TGN

TGN阅读笔记

image.png

3、常见数据集、baseline以及评价指标

3.1 数据集

开源动态图数据集(连续格式而非离散snapshot)。

数据集简介链接
RedditWikipediaLastFMMOOCJODIE/TGAT/TGN等均有使用,斯坦福jure数据集格式,见github.com/srijankr/jo…snap.stanford.edu/jodie/
Temporal Network系列数据集斯坦福juresnap.stanford.edu/data/index.…
BC-OTC,BC-Alpha比特币,EvolveGCN中用到,斯坦福jure格式为没有切图前的原始格式snap.stanford.edu/data/soc-si…snap.stanford.edu/data/soc-si…
UCI,AS社交网络,EvolveGCN中用到konect.uni-koblenz.de/networks/op…
TwitterDyHATR中用到,斯坦福juresnap.stanford.edu/data/higgs-…
Math-OverflowDyHATR中用到,斯坦福juresnap.stanford.edu/data/sx-mat…
ECommDyHATR中用到,阿里天池tianchi.aliyun.com/competition…
其他交互数据集konectkonect.cc/categories/…

3.2 baseline和SOTA

只列举一些最常见的连续方法的baseline和SOTA。

baseline链接是否基于图方法是否是动态方法是否用于处理连续数据是否是无监督方法
GAE,VGAE等静态图自编码器----
Deepwalk,node2vec等静态随机游走方法----
GraphSAGE,GAT等静态GNN方法----
CTDNEdl.acm.org/doi/pdf/10.…
JODIEcs.stanford.edu/~srijan/pub…
TGAT(SOTA-)arxiv.org/pdf/2002.07…
DyREPpar.nsf.gov/servlets/pu…
TGN(SOTA)arxiv.org/pdf/2006.10…
DyGEMarxiv.org/pdf/1805.11…
dygraph2vecarxiv.org/pdf/1809.02…
RNN,Time-LSTM等时序模型的方法Time-LSTM:www.ijcai.org/proceedings…
GCN-GRUarxiv.org/pdf/1612.07…

3.4 常见任务及loss

loss function解决任务公式
基于负采样的交叉熵损失动态连接预测任务(节点u和节点v在时刻t是否存在边)Loss=uvNu(t)log(σ(dist(yu(tuv),yv(tuv))))wnukPn(t)log(σ(dist(yu(tuk),yk(tuk))))Loss = \sum_{u} \sum_{v \in N_u(t)} \log(\sigma(dist(y_{u}(t_{uv}), y_{v}(t_{uv})))) - w_n \sum_{u} \sum_{k \in P_n(t)} \log(\sigma(dist(y_{u}(t_{uk}), y_{k}(t_{uk})))) ,一般来说每次都正采样和负采样子图。

3.4 评价指标

动态链接预测的评价指标(其他任务暂不考虑):

metrics评价角度评估数值方法
MAP(mean average precision)accuracy越大越好在离散的图中,先算出每个time step(snapshot)的AP后,再计算平均值
AP(average precision)accuracy越大越好链接预测转换为二分类后的平均精度,sklearn.metrics.average_precision_score
MAR(mean average rank)rank越好在离散的图中,先算出每个time step(snapshot)预测正确节点的平均排名后,再计算平均值
MRR (mean reciprocal rank)rank越大越好平均倒数排名(同推荐)
hits@kaccuracy越大越好命中率(同推荐)
recall@kaccuracy越大越好召回率(同推荐)
micro AUCaccuracy越大越好在离散的图中,将所有time step(snapshot)的边实例结果进行汇总,统一计算AUC
macro AUCaccuracy越大越好在离散的图中,先算出每个time step(snapshot)的AUC,再计算平均值

3.5 动态图常用框架

PyTorch Geometric Temporal: arxiv.org/pdf/2104.07… 这篇总结的比较详细。

框架github地址文档paper后端单位
PyTorch Geometric Temporalgithub.com/benedekroze…pytorch-geometric-temporal.readthedocs.io/en/latest/i…arxiv.org/pdf/2104.07…pytorch(基于PyG)剑桥、牛津等
DynamicGEMgithub.com/palash1992/…--arxiv.org/pdf/1811.10…tensorflow南加州大学等

此外,DGL也有一个动态图的example(TGN和TGAT):github.com/dmlc/dgl/tr…

其他链接预测任务技巧: