本文是对《SAIL: Self Augmented Graph Contrastive Learning》一文的总结,如有侵权即刻删除。
朋友们,我们在github创建了一个图学习笔记库,总结了相关文章的论文、代码和我个人的中文笔记,能够帮助大家更加便捷地找到对应论文,欢迎star~
Chinese-Reading-Notes-of-Graph-Learning
更多相关文章,请移步:文献阅读总结:网络表示学习/图学习
Title
《SAIL: Self Augmented Graph Contrastive Learning》
——AAAI2022
Author: Lu Yu
总结
文章通过理论分析证明了GNN的性能取决于节点特征的平滑程度和图结构的局部性,为平滑图拓扑结构生成的节点表征和节点特征间的差异,提出了SAIL算法。通过构造两个互补的自蒸馏正则化模块,来实现无监督背景下的自增强。模型结构如下图所示:
1 问题定义
给出图G=(V,E,X),其中V是节点集,E是边集,X是节点特征集。GNN目的在于聚合节点的多阶邻域信息来生成节点表征,即:
其中A为邻接矩阵,D为对角矩阵,即对节点的多阶邻域做抽取和加权。
在此,文章通过理论证明,指出GNN的性能取决于节点特征的平滑程度和图结构的局部性。
在上式中,h_i和h_j的相似度上界主要取决于三个部分,即局部特征的平滑性、非邻居节点的信息、结构相似性。非邻居节点信息是无法优化的,因此GNN的性能上界与另外两个部分相关。在下文中,文章分别针对这两部分构造自蒸馏的正则化项,来优化该问题。
2 内部蒸馏(Intra-distilling module)
文章指出,GNN的多层堆叠会由于结合的高阶邻域信息过多而过平滑,因此文章试图用浅层GNN来捕捉特征信息,并通过内部蒸馏保证节点表征与特征间的平滑性。
首先文章给出了基于GNN的经典损失函数,即最大化节点与其邻居节点的交互概率,并通过内部蒸馏和外部蒸馏作为正则化项加以约束:
具体而言,即取某一节点为中心点,根据其邻居结构进行采样得到子图。在该子图上,文章要求GNN通过浅层堆叠生成的节点表征分布与原始的节点特征分布尽可能相似,即:
由于蒸馏操作中往往有学生和教师的概念,是大模型教师将知识传递给小模型学生。在此,文章定义学习到的节点表征为教师,即t,原始的节点特征为学生,即s。那么内部蒸馏的损失函数为:
其中Si即两者的CrossEntropy结果。
3 外部蒸馏(Inter-distilling Module)
对于教师和学生模型,本质上都是GNN模型,在生成学生模型时,首先复制教师模型的参数,并引入噪声,在几轮迭代后会出现性能退化的现象,即形成了学生模型。该部分的损失函数定义为:
前一部分是约束了学生模型的节点特征与教师模型一致,后一部分约束的是节点表征。在此,文章通过对KL散度等经典相似度衡量公式进行推导(在此不再赘述),得到了KD的最终公式为:
综上,整个模型的最终损失函数为: