《DySAT: Deep Neural Representation Learning on Dynamic Graphs via Self-Attention Networks》
目录
1、整体思路
离散型表示(snapshot sequence),动态链接预测任务。
GAT + Transformer:(multi-head)
- GAT得到结构信息(保持局部特征)
- 含有position encoding的Transformer来建模时序信息(学习时间演化信息)
2、DySAT
2.1 structural attention -- GAT
第一层input 是节点id的onehot,后面层是embedding。
每个snapshot t的节点v都进行以下的操作:几乎和多头注意力的GAT一模一样
| 问题 | 解释 |
|---|---|
| 为什么要进行structural neighbor? | 为了让节点的embedding学习到图的局部结构;后面的时序建模没有显示利用图结构信息 |
| 为什么要用GAT来建模?为什么用多头? | 本身图是带边权重的,不同邻居在聚合的时候也应该有不同的权重;多头的每一头都可以学习到一定的内容,多头可以削弱噪声的影响 |
2.2 temporal attention -- Transformer
2.1完成之后得到的结果加上position encoding后,按照time step进行concat后作为2.2的输入:
之后开始Transformer的操作:
| 问题 | 解释 |
|---|---|
| 为什么要加上position encoding? | 为了保留时间的先后顺序,因为后面建模的时候时间先后顺序会变得比较弱 |
| 为什么bias要加上M_{ij}? | 时刻i的查询只能影响到时间在他后面的时刻j;当j在i前面,负无穷softmax后的beta就变成了0,不会产生影响 |
| 为什么要用Transformer结构建模? | t=1,2...T是典型的时序数据,通过Transformer来学习图的演变过程 |
2.3 loss function与下游任务
动态连接预测任务:
- single-step link prediction:给定t时刻的信息,预测t+1时刻的边存在的概率
- multi-step link prediction:给定t时刻的信息,预测t+1, ..., t+n时刻的边存在的概率
转化为二分类任务:
- t时刻实际存在的边 -- 1
- t时刻负采样的边 -- 0
loss function:
| 问题 | 解释 |
|---|---|
| 为什么loss function不用直接邻居而是用随机游走? | 随机游走能使得同一个随机游走序列中的节点embedding变得相似,感觉是考虑到了多跳的相似性;直接邻居的话就是考虑一阶相似性多一些 |
3、实验
3.1 数据集
2个通信图数据集:
- Enron:边表示员工之间的电子邮件交互
- UCI:边表示在线社交网络平台上的用户之间发送的消息
2个评分图数据集:
- Yelp:由用户和企业组成,边表示随时间变化的观察评级
- ML-10M:由用户和标签的交互组成,边表示将用户与他们在某些电影上的标签连接起来
| 问题 | 解释 |
|---|---|
| Yelp和ML-10M都是异构图,为什么不用异构图方法RGAT这种? | 不知道,可能同构图就已经能到达比较好的效果了吧? |
3.2 baseline
静态方法:
- node2vec
- GraphSAGE
- GAT
- GCN-AE:自编码器
- GAT-AE:自编码器
动态方法:
- DynamicTriad
- DynGEM:动态图自编码器
- DynAERNN
3.3 评价指标
因为每次都是根据t来预测t+1,所以每个time step都会有一个二分类的统计结果:
- micro AUC:所有time step边实例的总AUC
- macro AUC:每个time step的AUC的平均值
3.4 实验结果
25%train,75%test。
single-step:
single-step:只评估未出现过的边
消融实验:
- structural attention
- temporal attention