NIPS20: GraphCL Graph Contrastive Learning with Augmentations

talk

这篇文章 开始看的时候 感觉和 GCA好像啊,一方面都是 采用drop获得增强试图。另外一方面 损失函数都是 NT-Xent (normalized temperature-scaled cross entropy loss) 这个损失是 simCLR的,文章四作 就是simCLR的作者 Ting Chen。

1. model

NIPS20: GraphCL Graph Contrastive Learning with Augmentations_第1张图片
文章模型看起来很简单,和GCA,GRACE很像,都是simCLR的版本,两个增强视图 ,通过 encoder+projector, 最终采用 NT-xent进行MI最大化,infonce的变分,infonce 又是 nce变分,又是 MI下界,和JSD,DV-等都是相似的。

关注点 : 作者对于 不同任务和类型的数据集增强方法是不同的。结论:1. 子图和丢弃节点通常对于所有数据都有用。 2. 对于分子图,不能采用 丢弃边,这样会改变语义,但是社交网络却又用,3. 同时 对于 密集的图,进行特征 mask效果更好 。 4. 不同的子图增强方法,使得对比学习更好

2. 视图增强

四种方法: 注意这里 丢弃节点和边很好理解。 attribute masking是把某一节点所有特征置0,以其邻居特征进行恢复。 subgraph是通过 随机游走,或DFS BFS进行搜索,代码里面 对于 cora等的处理是 采用的是 邻居中 随机抽,哪种都不是
NIPS20: GraphCL Graph Contrastive Learning with Augmentations_第2张图片

3. 这篇文章 主要针对是 图级任务,做了很多graph-level的,还做了 迁移学习的,感兴趣可以去看原文。 作者 代码中 无监督cora 所采用的损失函数并不是 nt-xent。

4. 代码

这里应该是简化版,代码大多都是和 DGI是 一样的
损失:损失是 最大化 H 和两个增强视图s 之间的 互信息,采用JSD,交叉熵损失

NIPS20: GraphCL Graph Contrastive Learning with Augmentations_第3张图片
NIPS20: GraphCL Graph Contrastive Learning with Augmentations_第4张图片

核心:四种增强,这里对于两个视图,都是采用相同的方法,原文说 不同的 会有hard 对比,效果更好(损失收敛慢)

NIPS20: GraphCL Graph Contrastive Learning with Augmentations_第5张图片

输入输出都是 DGI的数据格式,注意 这里的 X 是1ndim

1. drop_edge : 删除一部分,随机增加一部分

NIPS20: GraphCL Graph Contrastive Learning with Augmentations_第6张图片

2. drop_node : 删除一部分节点,从X删行,A删除行列

NIPS20: GraphCL Graph Contrastive Learning with Augmentations_第7张图片

3. subgraph : 删除一部分节点,从原图随机选个节点进行 子图扩充,扩充到 固定节点的子图大小。 通过节点邻接矩阵的行,判断邻居,进行保存,选取一个不在子图里面的邻居,加入子图。

NIPS20: GraphCL Graph Contrastive Learning with Augmentations_第8张图片

4. mask : 使得 某些节点 的 特征 =0

NIPS20: GraphCL Graph Contrastive Learning with Augmentations_第9张图片

没有提供最优超参数,在cora,citeseer。 cora内存 7g, citeseer是 8g

你可能感兴趣的:(GNN-SSL,learning,算法,人工智能,图学习)