从七月中旬就一直在赶论文,一直到前几天才终于是能好好歇一下。于是趁着闲暇的时候将自己读的论文整理了下,也权当更新了。
论文原文:Robustness Inspired Graph Backdoor Defense - ICLR 2025
这篇文章主要的贡献是对于图神经网络在节点分类任务中受到的多种后门攻击进行了有效的防御。其提出了RIGBD,整体框架是通过删除边来筛选目标节点,然后通过修改训练损失函数来消除其对模型的影响。
背景 #
图神经网络 #
首先简单介绍一下GNN,即图神经网络。这里只说明节点分类方面的任务,就是输入一个图 \(G = (V, E)\),其中 \(V = {v_1, v_2, \dots, v_n}\) 代表节点集合,\(E \subseteq V \times V\) 代表边集合。输出则是对于每个节点给出预测标签。此外,我们用\(\mathbf{X} \in \mathbb{R}^{n \times d}\) 表示节点特征,\(\mathbf{A} \in {0,1}^{n \times n}\) 表示边的连接关系。
具体到模型,每一层 GNN 都遵循如下通用框架:
$$ \mathbf{h}_v^{(k)} = \text{UPDATE}^{(k)}\left(\mathbf{h}_v^{(k-1)}, \text{AGGREGATE}^{(k)}\left(\left\{\mathbf{h}_u^{(k-1)} : u \in \mathcal{N}(v)\right\}\right)\right) $$- \(\mathbf{h}_v^{(k)}\):第 \(k\) 层中节点 \(v\) 的向量表示
- \(\mathcal{N}(v)\):节点 \(v\) 的邻居集合
- AGGREGATE:聚合邻居的特征信息
- UPDATE:结合自身与邻居信息更新状态
例如对于GCN(Graph Convolutional Network),其一层的计算公式如下:
$$ \mathbf{H}^{(k)} = \sigma\left( \hat{\mathbf{D}}^{-1/2} \hat{\mathbf{A}} \hat{\mathbf{D}}^{-1/2} \mathbf{H}^{(k-1)} \mathbf{W}^{(k)} \right) $$- \(\hat{\mathbf{A}} = \mathbf{A} + \mathbf{I}\):加上自连接的邻接矩阵
- \(\hat{\mathbf{D}}\):对应的度矩阵
- \(\mathbf{W}^{(k)}\):第 \(k\) 层的可训练权重
- \(\sigma\):激活函数,如 ReLU
- \(\mathbf{H}^{(0)} = \mathbf{X}\):初始为节点特征
其含义可以理解为一个带有归一化的图卷积。
威胁模型 #
而对于GNNs中的攻击,本篇文章采用以下威胁模型:
- 攻击者:首先设计一个触发器 \(g_i\),其中 \(g_i\) 可以是单独一个节点或者子图。然后通过添加边 \(\varepsilon_t\) 将触发器连接到目标节点 \(v_t\),并将目标节点的标签改为目标标签 \(y_t\)。
- 防御者:有中毒训练集,目标是训练一个无后门的GNN,并且推理时受到中毒测试集攻击能保持高CA和低ASR,其实本质上还是做数据清洗。但是亮点是考虑到有些攻击能够在推理时模仿目标标签,从而对无后门模型进行攻击,因此在训练时进一步防御。
方法 #
首先该文章的方法的动机基于以下假设:相比于删除干净边,删除触发边时目标节点的logits变化将会更加显著。并且做了实验验证该假设。
因此最简单的想法是对于每个点逐个边进行删除,然后查看是否有较大的logits变化。但是这个方法有两个问题:
- 计算资源太大,对于稠密图不切实际
- 如果触发器通过多条边连接到目标节点,逐个边删除变化可能不大
随机删除 #
为了解决这两个问题,该文章提出了通过随机边删除识别目标节点。具体来说,先给定每条边被删除的概率,然后每次根据这个概率每次随机删除边,并保存每个节点的输出概率分布。进行数次后,根据KL散度计算节点的方差,即:
$$ s(i) = \sum^K_{k = 1}KL(p_i, p^k_i) $$其中 \(p_i\) 是未删除边时节点的输出概率分布,\(p^k_i\) 是 第 \(k\) 次随机删除时节点的输出概率分布。
为了避免节点本身对方差产生影响,每次计算 \(p_i\) 时采用修改的GCN:
$$ \mathbf{H}^{(k)} = \sigma\left( \hat{\mathbf{D}}^{-1/2} \mathbf{A} \hat{\mathbf{D}}^{-1/2} \mathbf{H}^{(k-1)} \mathbf{W}^{(k)} \right) $$即邻接矩阵不再增加自连接
证明 #
随后,作者通过以下三个定理对该方法的有效性给出了证明,其完整内容可以查看原论文的附录部分。
- 即便随机对边进行删除,但其输出的期望保持不变。可以直观理解为由于GCN本身通过节点度数进行归一,删去边后度数也会减少,因此其期望不变。
- 删除后的输出与原始期望的距离大于 \(t\) 的概率有上限,且度数越高其上限越低。其证明使用了Hoeffding’s Inequality。这个定理保证干净样本的扰动后的偏离程度能够维持在较小的水平。
- 将随机边删除过程建模为一系列独立的伯努利试验,可得中毒节点表现出大预测方差期望次数为 \( K · \beta\),即迭代次数乘以删除率。因此当删除率较大时其期望能够迅速增长。
在计算出每个节点的方差 \(s_i\) 后,先按降序排序,然后认为方差最大的节点标签为攻击的目标标签。随后找到首次连续两个节点都不为目标标签的位置,取其方差作为阈值,并认为大于该阈值的节点为目标节点。
防御性训练 #
仅仅将可疑样本去掉并不可行,因为总会有残存的未被筛选出的后门样本,而且有些攻击能模仿目标类别样本,从而实现推理时在无后门模型上进行攻击。
由于单独训练一个模型在推理时筛选后门样本代价比较高,因此在训练时修改损失函数:
$$ \min_f \mathcal{L}_f = \sum_{v_i \in \mathcal{V}_s} \log f(v_i)_{y_t} + \sum_{v_j \in \mathcal{V}_L \setminus \mathcal{V}_s} \mathcal{L}(f(v_j), y_j) $$即对正常节点保持不变,而对目标节点最小化其对于目标标签的置信度,从而在训练时实现对后门的防御。
实验 #
设置 #
- 数据集:Cora、Citeseer、PubMed、Physics、Flickr、OGB-arxiv
- 攻击:GTA、UGBA、DPGBA
- 防御:GNNGuard、RobustGCN、Prune、OD、RS、ABL、RIGBD
- 模型:两层GCN
结果 #
-
在防御性能上,RIGBD面对所有攻击时最高ASR不超过0.34%,同时CA基本不变。值得注意的是在效果最好的攻击DPGBA中,RS和图像领域的ABL有一定效果,但也只能降低一半左右的ASR,而其他防御方法基本无效。
-
然后作者单独测试了对目标节点的筛选效果。在OGB-arxiv上测试三中共冀,召回率最低大约为85%,精确率最低为90%左右。
-
此外,还针对不同超参数 \(K\) 和 \(\beta\) 测试了其ASR,召回率和精确率。这里使用OGB-arxiv + DPGBA,其中ASR最高为1.86%,精确率最低为95%,而值得注意的是召回率在 \(K = 2\) 且 \(\beta = 0.1\) 时仅有17.4%。准确率保证了该筛选策略不会对CA产生较大影响,而召回率仅有17.4%时ASR仍仅有1.86%,说明第二部分防御性训练的有效性。
-
最后,作者进行消融实验。首先使用逐个删除边并不鲁棒训练时ASR约为90%。然后仍然是逐个删除边,但是使用防御性训练,这时ASR约为70%。当使用随机删除边,但不使用防御性训练时,ASR约为50%。最后随机删除和防御性训练均使用时ASR接近0%。
总结 #
这篇文章的动机来源于一个比较显然的观察:边删除对中毒节点的预测有显著影响。但是其亮点主要有两方面:一是通过详尽的理论推导证明了随机删除的有效性,二是提出了一个新的可能,即仅仅移除后门触发器并不一定能使模型免受后门攻击,并且通过提出训练时的进一步防御解决了这个问题。