Federated Graph Semantic and Structural Learning
收录于:2023 IJCAI
级别:CCF-A
开源:否
这篇论文首先认为本地客户端的失真(distortion)是由节点级语义和图级别结构共同带来的
对于节点级语义,对比不同类别的节点有利于提供良好的区分能力,我们把本地节点推向相同类的全局节点,而推离不同类的全局节点
此外,文章假设一个图神经网络是结构良好的话,那么他们的邻接关系应该拥有对邻居的相似性属性
由于潜在的类别不一致,将节点与他们的邻居节点对齐会妨碍分类。作者把邻接关系转换成相似度分布,并利用全局模型来蒸馏关系知识到本地的模型中,这将保护结构信息和本地模型的区分能力。
引言
显存的方法主要为典型的数据异质所设计,没有对图结构的偏差(bias)进行考虑。有工作已经表明了利用结构知识的重要性。
在这篇文章中,作者首先研究了图异质的独特特性,发现在FGL环境下存在节点语义和图结构的偏差。
进一步,给定不同客户端的模型对,作者利用CKA测量节点表征的相似度。对于结构异质性,作者利用AWE生成图的表征,并且利用JS距离测量两个图的差异。
通过以上方法测量节点表征的相似度和图表征的相似度,作者发现严重的差异同时存在于节点级别的语义和图级别的语义。故对于FGL来说一个重要的问题就是:如何校准(calibrate)节点级语义和图级结构偏差。
对于节点级别的语义校准,作者认为具有良好区分能力的图神经网络可以对比不同类别的节点,以提供清晰的决策边界(clear decisional boundary)
受监督对比学习启发,我们自然想在本地模型的不同类之间的进行拉-推(pull-push)操作,研究节点语义知识并在本地训练过程中对齐进行校准。提出了联邦节点语义对比(Federated Node Semantic Contrast, FNSC),使得本地节点表征跟相同类的全局节点表征接近,并远离不同类的全局节点表征。
对于图结构级别的语义校准,本地客户端通常拥有不完整的图并且偏向于描述图结构
文章在局部训练期间通过给定的全局模型将刚性图结构重建转换为结构关系维护。引入联邦图结构蒸馏(Federated Graph Structure Distillation, FGSD),就是基于这个邻接矩阵,利用全局模型计算每个节点与他们邻居的相似度。然后本地模型模仿全局模型,计算邻接节点的相似度,这利用全局模型来提供有用的结构信息。
提出的联邦图语义和结构学习方法(Federated Graph Semantic and Structural Learning method, FGSSL),贡献有三:
- 首次在FGL中把数据异质性解耦成节点语义级和图结构级的偏差,并通过校准局部训练偏离(drift)来改善性能。
- 提出了FGSSL,FNSC和FGSD
- 模型表现优越
Methodology
动机
在异构联邦学习中,客户端模型向不同的方向优化,影响了全局GNN模型的性能。如图这不同体现在节点级语义和图级结构两方面(?)。
客户端间的语义和结构相似度,越深的颜色代表越高的相似度(这热力图画得真辣眼睛)
提出的方法
联邦节点语义对比(Federated Node Semantic Contrast, FNSC)
受监督对比学习启发,自然地想将不同的节点类别进行对比。对于本地模型,将节点特征向量向正样本推进,向负样本推离,对于客户端 m m m的节点 v i v_i vi:
P
i
P_i
Pi是正样本集,
K
i
K_i
Ki是负样本集,
h
i
m
h_i^m
him是节点
v
i
v_i
vi在客户端编
m
m
m的编码器(Encoder)输出,
τ
\tau
τ是超参
总所周知,本地模型跟对理想的全局模型有差异,单纯地利用本地模型来提供正样本集和负样本集的嵌入会让这种差异变得更大。作者认为全局的模型聚合了来自多方的知识,会更接近理想的模型,FNSC利用全局的模型为节点提供正样本和负样本集的表征,即
其中 h p g h_p^g hpg是节点 v p v_p vp在全局编码器模型 G g ( ⋅ ) G^g(\cdot) Gg(⋅)上的输出
联邦图结构蒸馏(Federated Graph Structure Distillation, FGSD)
我们通常假设相邻的节点会有相似的表征,然而在联邦图场景中,很难去表示节点间的关系因为本地的信息是不完整的。最简单的解决方法是将查询局部节点特征与全局模型中的邻居节点对齐。然而,这会破坏模型的区分能力,因为相邻的节点可能是来自不同类别的。受相似知识蒸馏启发,作者提出了FGSD,来解决邻居节点的语义不对齐,我们从全局模型输出中测量查询节点与相邻节点的相似度,然后优化本地网络以模仿全局视图中的相似度分布。即,给定一个分类器 F ( ⋅ ) F(\cdot) F(⋅),对于节点 v i v_i vi和它的逻辑输出 z i z_i zi,用 A i A_i Ai表示它的邻居节点集合,用 S g ( v i , A i ) S^g(v_i,A_i) Sg(vi,Ai)表示它与邻居节点相似度的集合,这个相似度由全局模型通过下面公式计算
ω \omega ω是超参。类似地,再通过局部模型计算相似度集合 S m ( v i , A i ) S^m(v_i,A_i) Sm(vi,Ai)
最终,FGSD损失用这两个相似度集合的JS散度计算:
最后,将交叉熵函数,FNSC损失和FGSD损失加起来就得到本地训练的损失函数