脚本宝典收集整理的这篇文章主要介绍了对比学习-Towards Robust Graph Contrastive Learning,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
标签:鲁棒性、对比学习、图神经
引入了对抗攻击中的鲁棒性,如何进行引入?
在对比学习中随机对边和特征变换的之后,还融合了属于对抗攻击中对边的操作 (通过反向传播 loss 获得每条边的权值,通过权值进行对边的增加和删减) 最终获得两个视图。
step-a: 从图中选择一个锚点 (anchor
) 的集合
step-b: 我们使用两个随机变换(transformations
) (tau_1') 和 (tau_2') ((tau_1'、tau_2' in T)) 随机 mask 节点特征去获得两个不同的视图。该图简化锚点中感受野的并集,这里的只用一阶邻居
step-c: 我们对这两个图应用对抗性转换 (adversarial transformations
) (tau_1'') 和 (tau_2'') ,基于梯度信号去移除或者插入边
step-d: 通过对比学习,我们将相同锚点的 embedding 的强制嵌入在一起,将不同的锚点的 embedding 强制分开
为每个节点定义对比损失函数 (L(v,tau_1, tau_2) = -log frac{exp(sigma(z_1, z_2)/t)}{exp(sigma(z_1, z_2)/t) + sum_{u in Neg(v) }exp(sigma(z_1, f_{theta}(u))/t)})
最后定义梯度更新 (theta) ,最小化函数:(frac{1}{2n}sum_{u in V}[L(v, tau_1, tau_2) + L(v, tau_2, tau_1)])
(1-2) 行初始化参数 GNN
中参数和层数,对于每一个点,我们首先预处理出它的 (lquad hops) 邻居顶点集和边集
(3) 训练的次数
(4) 随机将顶点集划分成 (n/b) 个大小为 (b) 的 batch
(5) 循环每个小 (batch)
(6) 应用随机变换 (tau_1'、tau_2') 将一个图 (G) 生成两个视图,用概率 (p) mask
一些特征
(7) (S^-) 为 (batch) 中所有点的 (l-hop) 边集,//作为移除边的候选集
(8) 对于每个顶点 (v), (hat{V}_l(v)) 为 (V) 除去 batch
中所有的 l-hop
顶点 (v) 集合中剩余顶点,(S^+) 为 $hat{V_l}(v)与 v $组成的边//作为加边候选集
(9) 临时添加 带有 (1/|S^+|) 权重$ S^+$ 到两个视图,在下一步进行移除
(10) 对于两个视图应用 (f) 并且计算对比损失函数,只考虑 batch
中的顶点
(11) 反向传播获得每个边的梯度信号值 (g(e))
(12) 应用对抗攻击变换 (tau_1''、tau_2''), (tau_1'') 是在 (S^-) 按照从小到大的 (g(e)) 中移除 $ q_{i}^{-} ·| S^-|$ 条边,(tau_2'') 是在 (S^+) 按照从大到小的 (g(e))中添加 $ q_{i}^{+} ·| S^+|$ 条边
(13) 对于两个视图,再次应用 (f) 并且计算对比损失函数,只考虑 batch
中的顶点
(14) 更新他们的参数权重 (theta)
主要通过对比两个自监督方法 GCN 和 GRACE 上进行对比,在对抗扰动后效果明显提升。
以上是脚本宝典为你收集整理的对比学习-Towards Robust Graph Contrastive Learning全部内容,希望文章能够帮你解决对比学习-Towards Robust Graph Contrastive Learning所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。