jasperzhong / read-papers-and-code

My paper/code reading notes in Chinese
43 stars 3 forks source link

JMLR '20 | Representation Learning for Dynamic Graphs: A Survey #288

Closed jasperzhong closed 2 years ago

jasperzhong commented 2 years ago

https://arxiv.org/pdf/1905.11485.pdf

引用量87

jasperzhong commented 2 years ago

Dynamic Graphs

显然相比CTDG,DTDG是lose information,但研究DTDG模型比较简单. 而survey说为CTDG开发的模型也可以用于DTDG,反之不成立. (感觉需要考证下)

Prediction Tasks

任务基本还是常规的任务:node classification, edge prediction, graph classification.

但Dynamic Graph又有不一样的地方,分两种interpolation和extrapolation. 如果给定的图信息是[t_0, t_T],

还有一个场景是streaming. 新的events不断地stream到模型,模型需要real-time更新,这样它能在每个event达到后立刻做出predictions. 对于这种场景,模型是没有办法立刻就retrain的. 这个场景一般适合CTDG,并且适合extrapolation problems.

encoder-decoder framework

graph -> encoder -> node embeddings -> decoder -> prediction

感觉没什么...只不过这里的node embedding除了node representation之外,还可以包括其他的东西.

sequence models

dynamic环境下,数据总是包括变长的sequence of events. 所以一般用RNN或者self-attention方法.

temporal point processes

给定一系列发生过的事件发生在t_1, t_2, ...for t_i <= T,TPP一般表示为用一个条件密度函数\lambda(t),\lambda(t)dt表示下一个事件发生在[t, t+dt]发生的概率.

传统上intensity functions有很多hand-designed model. 后来流行用ML方法来学习. 在dynamic graphs的context下,TPP的intensity function用node representations来parameterized,被用来构建预测什么时候某件事会发生在某个节点或者一对节点上.

jasperzhong commented 2 years ago

models for DTDG

GNN对每个snapshot G_i对每个节点v生成一个表示h,然后对[h_1, h_2, ..., h_T]做一个RNN/self-attention.

GNN用来学习structural information而RNN/self-attention用于学习temporal information. 这两个模块是独立的.

image

jasperzhong commented 2 years ago

Model for CTDG

看了一圈下来 #289 #286 #276 感觉确实如survey所说. 首先每个node会有一个embedding,然后定义了在node u和v出现interaction的时候,如何用RNN更新这个embedding. 他们的主要不同点是如何定义RNN更新embedding. 这里面甚至可能都不会涉及到GNN,如果单纯考虑temporal interactions的话 #289 #286 ,当考虑到了图拓扑结构的时候,才会考虑GNN #276 .

而 #274 和上面几篇不一样的是还会propagate information. 上面几篇工作在u和v有一个interaction的时候,只会更新u和v的node embedding,但 #274 argue说把这个信息propagate到u和v的邻居也很重要.

这些RNN方法都很适合streaming scenario. 训练完成后,RNN的参数就可以freeze,因为RNN已经学到了如何更新node embedding. 当然,当积累了一定的新events后,模型还是需要重新训练.