Adversarially Robust Neural Architecture Search for Graph Neural Networks

Adversarially Robust Neural Architecture Search for Graph Neural Networks----《面向图神经网络的对抗鲁棒神经架构搜索》

摘要

  图神经网络(GNN)在关系数据建模方面取得了巨大成功。尽管如此,它们仍然容易受到对抗性攻击,这对于将 GNN 应用到风险敏感领域来说是巨大的威胁。现有的防御方法既不能保证面对新数据/任务或对抗性攻击的性能,也不能提供从架构角度理解 GNN 鲁棒性的见解。神经架构搜索(NAS)有望通过自动化GNN架构设计来解决这个问题。然而,当前的图 NAS 方法缺乏稳健的设计,并且容易受到对抗性攻击。为了应对这些挑战,我们提出了一种新颖的 GNN 鲁棒神经架构搜索框架(G-RNA)。具体而言,我们通过在搜索空间中添加图结构掩码操作来设计消息传递机制的强化搜索空间,其中包含各种防御操作候选,使我们能够搜索防御性的GNN。此外,我们定义了一个鲁棒性度量来指导搜索过程,有助于筛选出具有鲁棒性的架构。通过这种方式,G-RNA 有助于从架构角度理解 GNN 的鲁棒性,并有效地搜索最佳的对抗性鲁棒 GNN。在基准数据集上进行的大量实验结果显示,G-RNA在对抗攻击下显著优于手动设计的鲁棒性GNN和基准图NAS,分布提高了12.1%到23.4%。

引言

  图神经网络以建模关系数据而闻名,并应用于各种下游实际应用,如推荐系统[37]、知识图谱补全[25]、交通预测[6]、药物生产[45]等。与此同时,与许多其他深度神经网络一样,GNN 因其在对抗性攻击下的脆弱性而臭名昭著[33],特别是在金融和医疗保健等风险敏感领域。由于 GNN 通过聚合邻域信息来对节点表示进行建模,因此攻击者可以通过扰乱节点特征和操纵节点之间的关系来执行攻击[55]。例如,在用户-用户交互图中,欺诈者可能故意与其他重要/虚假用户交互,以误导推荐系统或愚弄信用评分模型[36]。
  人们开发了一系列针对图数据的防御方法来减少对抗性攻击的危害。基于预处理的方法(如 GCN-SVD [8] 和 GCN-Jaccard [38])在训练 GNN 之前进行结构清理,而基于注意力的模型(如 RGCN [51] 和 GNN-Guard [46])学会减少对潜在扰动边的关注。然而,这些方法依赖于攻击者的先验知识。例如,GCN-SVD利用了在Nettack[53]之后图结构的高秩倾向,而GCN-Jaccard则依赖于对图结构的同质性假设。因此,当前的方法可能无法适应遇到新数据和任务或提出新攻击方法时的场景。此外,以前的方法很大程度上忽视了 GNN 架构在防御对抗性攻击中的作用,缺乏理解 GNN 鲁棒性的架构视角
  为了减少人类在神经架构设计方面的工作量,神经架构搜索(NAS)在研究领域和工业界变得越来越流行。尽管 NAS 具有自动化鲁棒 GNN 设计的潜力,但现有的图 NAS 方法 [1,10,24,49,50] 不可避免地容易受到对抗性攻击,因为它们不考虑对抗性设置并且缺乏鲁棒性设计 [48]。因此,如何采用图 NAS 来搜索各种环境下的最佳鲁棒 GNN,同时从架构角度填补理解 GNN 鲁棒性的空白,仍然是一个巨大的挑战。
  为了解决上述问题并从架构的角度理解GNN的鲁棒性,我们提出了一种新颖的图神经网络(GNN)鲁棒性神经架构搜索框架,称为G-RNA。据我们所知,这是第一次尝试在鲁棒GNN中利用强大的图神经网络架构搜索。具体来说,我们首先设计一个具有图结构掩码操作的新颖、富有表现力且鲁棒的搜索空间。图1中的绿色部分显示了细粒度的搜索空间。图结构掩码操作涵盖了图结构的重要鲁棒性要素,并且可以恢复各种现有的防御方法。我们以我们设计的搜索空间为基础训练超级网络[14],采用单路径一次性的方式。其次,我们提出了一个鲁棒性指标,可以正确衡量架构的稳健性。基于干净的图,攻击代理会生成多个对抗样本。我们使用我们的鲁棒性指标以及干净的和生成的对抗性样本来搜索鲁棒的 GNN。图 1 中的黄色部分显示了鲁棒性度量的简单说明。在使用进化算法搜索最佳鲁棒 GNN 架构后,我们从头开始重新训练首选的鲁棒架构并进行评估。我们的贡献总结如下:

  • 我们为 GNN 开发了一个鲁棒的神经架构搜索框架,据我们所知,该框架首次考虑了图神经架构搜索中的鲁棒设计。基于这个框架,我们可以从架构的角度理解 GNN 的对抗鲁棒性。
  • 我们通过设计防御操作候选者,在面对扰动图时自动选择最合适的防御策略,提出了一种新颖的鲁棒搜索空间。此外,我们设计了鲁棒性度量,并采用进化算法和单路径一次性图 NAS 框架来搜索最佳鲁棒架构。
  • 大量的实验结果证明了我们提出的方法的有效性。在严重中毒攻击下的基准数据集上,G-RNA 的性能比最先进的稳健 GNN 提高了 12.1% 至 23.4%。

相关工作

图数据的对抗鲁棒性

  尽管 GNN 在各种应用中取得了广泛的成功 [43,44,47],但 GNN 很容易受到对抗性攻击 [2-4,33,39,53],即对图的轻微扰动可能会导致性能急剧下降。根据文献,对抗性攻击根据攻击者的知识(白盒攻击和黑盒攻击)、扰动类型(结构攻击和特征攻击)、攻击阶段(逃避攻击和中毒攻击)和目标节点(目标攻击和非目标攻击)有不同的分类。
  为了应对对抗性攻击,人们提出了几种防御模型来增强 GNN 的鲁棒性。图预处理方法在 GNN 模型训练之前识别并纠正潜在的结构扰动。例如,在特征平滑度的假设下,GCN-Jaccard [38] 删除了 Jaccard 相似度较低的边缘。观察 Nettack 下邻接矩阵的高秩趋势,GCN-SVD [8]通过其低秩近似来重建邻接矩阵。图注意力方法的目的是在易受影响的边/特征上学习更少的注意力权重。例如,RGCN [51]使用高斯分布进行隐藏层节点表示,并根据其方差计算注意力。 Pro-GNN [20]通过保持低秩和稀疏邻接矩阵以及特征平滑度来联合学习图结构和模型参数。GNN-Guard [46] 学会更多地关注相似节点之间的边并修剪不相关节点之间的边。VPN [19] 通过考虑 r-hop 邻居的图供电重新加权边来进行防御。此外,图证明鲁棒性方法[18, 35]为图在扰动预算下的鲁棒性认证提供了理论保证。然而,这个分支超出了本工作的范围,我们将留作比较未来的工作。
  之前的所有研究都严重依赖手动设计,因此无法适应新的数据、任务或对抗性攻击。此外,现有方法忽略了 GNN 架构固有的鲁棒性。相反,我们提出的方法在图结构上专门设计了搜索空间,可以针对不同的数据和任务自动搜索最佳的鲁棒 GNN。

图神经架构搜索

  神经架构搜索(NAS)是一个蓬勃发展的研究方向,它自动搜索高性能神经架构并减少人工设计架构的人力。由于非欧几里得图属性和特殊的神经架构,图数据上的 NAS 具有挑战性 [42, 48]。GraphNAS[10]使用循环网络作为控制器来生成GNN架构,并采用强化学习来搜索最优架构。为了进行有效的搜索,可微 NAS 方法 [14, 26] 联合优化模型权重和架构参数。 DSS [24]提出了一种可微的一次性图 NAS 并动态更新搜索空间。SANE [49] 还利用可微搜索算法,并使用跳跃知识网络(JKNet)主干构建 GNN 架构 [41]。GNAS [1] 使用设计的 GNN 范式重建 GNN,并学习最佳消息传递深度。GASSO [30]使用图结构学习作为可微架构搜索过程中的去噪过程。图NAS还用于复杂的图数据,例如异构图[7]和时间图[29]。然而,现有的图 NAS 方法没有考虑对抗性攻击的鲁棒性

鲁棒的神经架构搜索

  鲁棒神经架构搜索利用 NAS 来搜索对抗性鲁棒神经架构。由于在图数据上没有鲁棒 NAS 的相关工作,我们回顾了两篇关于计算机视觉的相关论文。RobNets [13] 是第一个探索架构鲁棒性的工作。通过一次性 NAS,RobNets 通过对抗性训练对候选架构进行微调,然后采样更稳健的架构。DSRNA [16]提出了两种可微的度量,有助于通过可微的搜索算法搜索鲁棒的架构。我们的工作既不是基于对抗性训练,也不是采用持续松弛的架构参数。总而言之,我们的工作的不同之处在于,我们考虑为图数据量身定制的不同搜索空间并利用不同的搜索算法

准备工作

图神经网络

  令 G = ( A , X ) G = (A,X) G=(A,X) 表示具有 N N N 个节点的图,其中 A ∈ R N × N A \in {R^{N \times N}} ARN×N 是邻接矩阵, X ∈ R N × D 0 X \in {R^{N \times {D_0}}} XRN×D0 是相应的特征矩阵。对于节点 i i i,其邻域表示为 N ( i ) {\rm N}(i) N(i)
  图神经网络将图数据作为输入和输出节点/图表示来执行节点分类和图分类等下游任务。通常,对于具有 C C C 个标签的节点分类任务,我们计算:

z i = ( f α ( A , X ) ) i {z_i} = {({f_\alpha }(A,X))_i} zi=(fα(A,X))i (1)

其中, z i ∈ R C {z_i} \in {R^C} ziRC 是节点 i i i 的预测向量, f α {f_\alpha } fα 表示基于架构 α \alpha α 的图神经网络。GNN 的设计可以分为层内设计、层间设计和学习配置[42]。层内设计通常遵循消息传递机制[11]:通过聚合邻域信息来更新节点表示。GNN 中更新节点表示的一般公式记为:

h i ( l ) = σ ( W ( l ) C o m b ( h i ( l − 1 ) , A g g r ( e i j ( l ) h j ( l − 1 ) , j ∈ N ~ ( i ) ) ) ) h_i^{(l)} = \sigma ({W^{(l)}}Comb(h_i^{(l - 1)},Aggr(e_{ij}^{(l)}h_j^{(l - 1)},j \in \tilde {\rm N}(i)))) hi(l)=σ(W(l)Comb(hi(l1),Aggr(eij(l)hj(l1),jN~(i)))) (2)

其中, h i ( l ) h_i^{(l)} hi(l) 表示第 l l l 个隐藏层中节点 i i i 的节点表示, e i j ( l ) e_{ij}^{(l)} eij(l) 是节点 i i i j j j 之间的相关系数, N ~ ( i ) = { i } ∪ N ( i ) \tilde {\rm N}(i) = \{ i\} \cup {\rm N}(i) N~(i)={i}N(i) 表示具有自环的节点 i i i 的邻域, A g g r ( ⋅ ) Aggr( \cdot ) Aggr() 是聚合邻域信息的函数, C o m b ( ⋅ ) Comb( \cdot ) Comb() 旨在结合自身信息和邻居信息, σ ( ⋅ ) \sigma ( \cdot ) σ() 是激活函数。
  除了GNN层的设计之外,如何连接不同的隐藏层也很关键。一些 GNN 直接使用最后一个隐藏层输出作为预测,同时也可以添加预处理层、后处理层和跳过连接 [22]。至于学习配置,它们是用于训练 GNN 的超参数,例如学习率、优化器等。

图神经架构搜索

一般来说,图 NAS 可以表述为以下双层优化问题:

α ∗ = a r g max ⁡ α ∈ O A c c v a l ( W ∗ ( α ) , α ) {\alpha ^*} = \mathop {arg\max }\limits_{\alpha \in {\rm O}} Ac{c_{val}}({W^*}(\alpha ),\alpha ) α=αOargmaxAccval(W(α),α) (3)

W ∗ ( α ) = arg ⁡ min ⁡ W L t r a i n ( W , α ) {W^*}(\alpha ) = \mathop {\arg \min }\limits_W {L_{train}}(W,\alpha ) W(α)=WargminLtrain(W,α) (4)

其中方程 (3) 是在搜索空间 O {\rm O} O 中寻找最佳架构 α ∗ {\alpha ^*} α 的上层优化问题,等式 (4) 是计算某一特定架构 α \alpha α 的最佳模型权重 W W W 的下层优化问题。 A c c v a l Ac{c_{val}} Accval 表示验证集上的预测精度, L t r a i n {L_{train}} Ltrain 是训练集上的分类交叉熵损失。
  现有的图 NAS 方法 [1,10,12,48,50] 按照等式(2)中的消息传递方案设计其搜索空间。NAS 方法可以搜索式(2)中的所有组件, 例如聚合函数、相关系数和激活函数以及隐藏层大小和学习配置等超参数。在本文中,我们主要考虑寻找架构设计。

鲁棒图神经架构搜索

  在本节中,我们首先阐述图鲁棒 NAS 的问题。然后,我们介绍了新颖且富有表现力的搜索空间以及防御性操作候选者,即图结构掩码。基于设计的搜索空间,我们构建了一个包含所有可能架构的超网,并以单路径一次性方式对其进行训练。最后,我们介绍了我们提出的鲁棒性度量并描述了利用进化算法的搜索过程。

问题表述

  给定搜索空间 O {\rm O} O,我们的目标是找到具有 高预测精度高对抗鲁棒性 的最佳架构 α ∗ ∈ O {{\alpha ^*} \in {\rm O}} αO。我们将 GNN 的鲁棒神经架构搜索问题表述为:

α ∗ = a r g max ⁡ α ∈ O A c c v a l ( α ) + λ R ( α ) {\alpha ^*} = \mathop {arg\max }\limits_{\alpha \in {\rm O}} Ac{c_{val}}(\alpha ) + \lambda R(\alpha ) α=αOargmaxAccval(α)+λR(α)

其中, R ( ⋅ ) R( \cdot ) R() 是鲁棒性度量, λ \lambda λ 是平衡模型精度和鲁棒性的超参数。

鲁棒 GNN 的搜索空间

  我们遵循消息传递机制设计了一个细粒度的搜索空间。总的来说,我们的 GNN 架构中有六个可调整的组件:图结构掩码,节点相关系数,邻居聚合器,组合函数,跳跃连接和层聚合器。前四个组件属于层内操作,其余两个组件属于层间操作。

层内操作

  在第 l l l 层消息传递中,首先采用防御操作 D ∈ O D D \in {{\rm O}_D} DOD 来构建图结构掩码并重建图结构:

M ( l ) = D ( A ( l − 1 ) ) , A ( l ) = A ⊙ M ( l ) {{\rm M}^{(l)}} = D({{\rm A}^{(l - 1)}}),{{\rm A}^{(l)}} = {\rm A} \odot {{\rm M}^{(l)}} M(l)=D(A(l1)),A(l)=AM(l)

其中, M ( l ) = { m i j } {{\rm M}^{(l)}} = \{ {m_{ij}}\} M(l)={mij} 是图结构掩码矩阵, A ( l ) {{\rm A}^{(l)}} A(l) 表示第 l l l 层中的图结构。 ⊙ \odot 是 Hadamard 积, A ( 0 ) = A {{\rm A}^{(0)}} = {\rm A} A(0)=A。每个元素 m i j ∈ [ 0 , 1 ] {m_{ij}} \in [0,1] mij[0,1] 是节点 i i i 和节点 j j j 之间的掩码分数,其中 m i j = 0 {m_{ij}} = 0 mij=0 表示删除这条边, m i j = 1 {m_{ij}} = 1 mij=1 表示对原始边没有修改。防御操作的目的是为潜在的扰动边分配更少的权重。
  受到当前防御方法[33]成功的启发,我们总结了图结构操作的鲁棒性属性,并相应地在我们的搜索空间中设计了代表性的防御操作。这样,我们就可以在面对扰动图时选择最合适的防御策略。据我们所知,这是第一次为了增强 GNN 的鲁棒性而专门设计搜索空间。具体来说,我们在搜索空间中包含五个图结构掩码操作。(1)Identity保持与前一层相同的图结构。(2)低秩近似 (LRA) 根据前一层邻接矩阵的奇异值分解的前 r r r 个分量重建第 l l l 层中的邻接矩阵。(3)节点特征相似度(NFS)删除节点特征之间具有较小 Jaccard 相似度的边。(4)邻居重要性估计 (NIE) 通过基于量化节点之间相关性的剪枝策略来更新掩码值。(5)Variable Power Operator (VPO)使用影响力强度的参数对原始邻接矩阵加权,形成一个变幂图。
  此外,更多像图结构学习[52]这样的操作可以集成到图结构掩码操作中。掩码操作的公式如表1所示。我们将LRA和NFS限制在第一层(仅用于预处理),并在所有层中利用其他三个操作。值得一提的是,图结构掩模候选可以很容易地扩展到处理图结构的其他方法,例如去噪方法。掩码操作不会阻塞后面的消息传递过程。它们可以被视为与相关系数等其他运算的正交运算。
在这里插入图片描述
  对于层内的其他三个组成部分,我们对相关系数的选择遵循附录表 4 中总结的文献。基于掩码图结构 A ( l ) {{\rm A}^{(l)}} A(l) 和相关系数 { e i j ( l ) } \{ e_{ij}^{(l)}\} {eij(l)},邻居聚合器 A g g r ∈ O a g g r Aggr \in {{\rm O}_{aggr}} AggrOaggr 用于聚合邻居表示。然后,组合函数 C o m b ∈ O c o m b {Comb} \in {{\rm O}_{comb}} CombOcomb 合并自身信息和邻居信息。在这里,我们探索了两种结合自身信息和邻居信息的典型方法,即 GraphSAGE [15] 和 GIN [40]。GraphSAGE 对节点表示和邻居信息进行不同的特征转换。GIN 首先对自身信息和邻居信息进行加权求和,然后使用多层感知器来提高 GNN 的表达能力。组合消息后,应用激活函数 σ ( ⋅ ) \sigma ( \cdot ) σ()。总的来说,第 l l l 层中节点 i i i 的隐藏表示计算为:

h i ( l ) = σ ( W ( l ) C o m b ( h i ( l − 1 ) , A g g r ( m i j ( l ) e i j ( l ) h j ( l − 1 ) , j ∈ N ~ ( i ) ) ) ) h_i^{(l)} = \sigma ({W^{(l)}}Comb(h_i^{(l - 1)},Aggr(m_{ij}^{(l)}e_{ij}^{(l)}h_j^{(l - 1)},j \in \tilde {\rm N}(i)))) hi(l)=σ(W(l)Comb(hi(l1),Aggr(mij(l)eij(l)hj(l1),jN~(i))))

节点表示被初始化为节点特征,即 h ( 0 ) = X {h^{(0)}} = X h(0)=X

层间操作

  遵循 JK-Net [41] 和 SANE [49] 的思想,我们通过层聚合器 L a y e r _ A g g r ∈ O l a y e r Layer\_Aggr \in {{\rm O}_{layer}} Layer_AggrOlayer 聚合中间层中的节点表示。跳跃操作 S k i p ∈ O s k i p Skip \in {{\rm O}_{skip}} SkipOskip 决定了连接到最终层聚合器的跳跃连接。

z i = L a y e r _ A g g r ( S k i p ( h i ( 1 ) ) , . . . , S k i p ( h i ( L ) ) ) {z_i} = Layer\_Aggr(Skip(h_i^{(1)}),...,Skip(h_i^{(L)})) zi=Layer_Aggr(Skip(hi(1)),...,Skip(hi(L)))

其中 L L L 是消息传递层的最大数量。使用 JK-Net 主干,我们通过设置最大深度来选择最佳模型深度。例如,如果我们设置 L = 4 L = 4 L=4 并且跳过操作为[Idenity,Zero,Idenity,Zero],则选择的最佳消息传递层数为3。获得最终的节点表示后,我们添加几个全连接层来进行分类。
  我们在表 2 中总结了所有组件及其候选操作。我们的搜索空间富有表现力,更重要的是,提高了防御能力。如附录表 5 所示,我们的搜索空间可以恢复一些经典的手动设计的 GNN 和最先进的鲁棒 GNN,例如 GCN-SVD、GCN-Jaccard、GNN-Guard 和 VPN。
在这里插入图片描述

超网络训练

  利用所提出的搜索空间,我们构建了一个超级网络并以单路径一次性方式对其进行训练[14]。我们构建的超网络包含基于我们的搜索空间的所有可能的架构,也称为一次性模型。在超网络中,每个架构都表现为单一路径。与 GNAS [1] 或 DSS [24] 等对架构参数使用连续松弛的图 NAS 方法不同,我们通过统一单路径采样 [14] 来训练超网。在训练过程中,我们每次都会统一采样一条路径来更新权重。之后,我们通过进化算法搜索最佳架构,而无需进一步的训练步骤。

计算鲁棒性

  这一部分将介绍如何使用进化算法和鲁棒性度量来衡量架构的鲁棒性以及具体的搜索过程。直观地说,在面对各种扰动的图数据时,鲁棒的 GNN 的性能不应该下降太多。令 T Δ {{\rm T}_\Delta } TΔ 表示具有扰动预算 Δ \Delta Δ 的图数据的攻击者。我们将鲁棒性指标定义为:

R ( A , f ) = − E A ′ [ 1 N ∑ i = 1 N D K L ( f ( A ) i ∣ ∣ f ( A ′ ) i ) ] , A ′ = T Δ ( A ) R(A,f) = - {{\rm E}_{A'}}\left[ {\frac{1}{N}\sum\limits_{i = 1}^N {{D_{KL}}(f{{(A)}_i}||f{{(A')}_i})} } \right],A' = {{\rm T}_\Delta }(A) R(A,f)=EA[N1i=1NDKL(f(A)i∣∣f(A)i)],A=TΔ(A) (9)

其中, f f f 表示 GNN, f ( A ) i {f{{(A)}_i}} f(A)i 是节点 i i i 的概率预测向量, D K L ( p ∣ ∣ q ) = ∑ i p i log ⁡ p i q i {D_{KL}}(p||q) = \sum\nolimits_i {{p_i}\log \frac{{{p_i}}}{{{q_i}}}} DKL(p∣∣q)=ipilogqipi 表示两个分布 p p p q q q 之间的 Kullback-Leibler (KL) 散度。在这里,我们使用 KL 距离来测量给定干净数据和扰动数据的预测差异。我们的攻击代理 T {\rm T} T 的选择从简单的随机攻击 [5] 或 DICE [54] 到高级攻击方法如 Mettack [54] 或 Nettack [53]。在相同的扰动预算 Δ \Delta Δ 内,我们的攻击代理生成 T T T 个扰动图结构 { A t ′ } t = 1 T \{ {A'_t}\} _{t = 1}^T {At}t=1T。等式 (9) 可近似为:

R ( A , f ) ≈ − 1 T N ∑ t = 1 T ∑ i = 1 N ( D K L ( f ( A ) i ∣ ∣ f ( A ′ ) i ) ) R(A,f) \approx - \frac{1}{{TN}}\sum\limits_{t = 1}^T {\sum\limits_{i = 1}^N {({D_{KL}}(f{{(A)}_i}||f{{(A')}_i}))} } R(A,f)TN1t=1Ti=1N(DKL(f(A)i∣∣f(A)i))

R ( A , f ) R(A,f) R(A,f) 越大,表明干净数据的预测与扰动数据之间的距离越小,因此 GNN 架构就越鲁棒。
  为了说明所提出的鲁棒性度量的有效性,我们随机选择 300 个架构并计算它们的鲁棒性度量值,并评估 Cora 数据集中 5% 结构扰动后它们的性能下降(实验细节在第 5.2 节中描述)。图 2a 显示了 R R R 在对数尺度上的分布,而图 2b 显示了不同 R R R 间隔的平均精度下降。精度下降可以被视为实际鲁棒性的真实测量。从图 2b 中,我们可以看到平均准确率下降与鲁棒性指标呈负相关。当鲁棒性度量相对较小时,准确度可能会降低多达10%。然而,当鲁棒性指标较大时,准确率下降幅度约为 3.5%。这一现象表明我们的鲁棒性度量成功地筛选出了具有鲁棒性的架构。
在这里插入图片描述

进化搜索算法

  在我们的工作中,我们采用进化算法来搜索具有所提出的鲁棒性度量的最佳鲁棒图架构。我们没有从头开始训练每个候选架构,而是仅利用进化算法进行推理和搜索。所有架构的权重都是固定的,与超网训练阶段学习到的权重相同。在一个搜索时期中,我们通过适应度函数 A C C v a l ( α ) + λ R ( α ) AC{C_{val}}(\alpha ) + \lambda R(\alpha ) ACCval(α)+λR(α) 选择前 K K K 个鲁棒候选者。随后进行交叉和变异,从候选群体中生成子架构。我们在附录 B.4 中展示了搜索算法。

实验

  在本节中,我们通过评估扰动图上选定的架构进行实验来验证我们提出的方法。此外,我们还可视化了不同操作的性能,以更好地理解 GNN 架构的鲁棒性。其他实验结果,包括目标攻击下的防御性能、异质图评估以及我们提出的鲁棒性指标中超参数 λ \lambda λ 的敏感性分析,请参见附录 C。实验设置的详细信息请参阅附录 D。

半监督节点分类任务

  在半监督节点分类任务中,我们采用 Mettack [54] 进行非目标中毒结构攻击,并基于扰动图评估 GNN 的鲁棒性。我们将变化的边的比例从 0% 改变到 25%,并计算扰动图的重新训练精度。对于每个设置,我们实验 10 次并报告平均结果和标准偏差。最终的防御结果总结在表3中。附录 C.3 提供了有关受到攻击的 G-RNA 搜索架构的更多信息。
在这里插入图片描述
  总体而言,我们的 G-RNA 在对抗性攻击下成功优于所有基线。当面对严重中毒攻击时(例如,当改变的边的比例为 15% 或更多时),我们可以看到扰动性能明显提高。例如,G-RNA 在 25% 结构扰动下的防御性能分别超过普通 GCN 23.4%、20.9% 和 12.1%。对于基于NAS的方法,对在干净数据上搜索得到的最优架构进行评估,包括在干净和扰动图上测试它们的鲁棒性,以进行公平比较。我们可以看到,架构准确性和鲁棒性之间确实存在权衡。尽管 GraphNAS 在干净的图上显示了令人印象深刻的结果,但它在对抗性攻击下的漏洞也很明显,例如GraphNAS 在对抗性攻击下的性能有时甚至比经典 GNN 还要差。因此,有必要让 Graph NAS 变得更加健壮。在CiteSeer中,G-RNA在20%和25%结构扰动下的性能几乎是GraphNAS的两倍,这表明我们的方法具有很强的防御能力。

鲁棒性度量的消融研究

  我们进行了消融研究,通过移除鲁棒性度量(标记为G-RNA w/o rob)。我们完整的G-RNA在所有数据集上都表现出比G-RNA w/o rob更好的性能,显示出我们提出的鲁棒性度量的有效性。

与不使用结构的比较

  当图结构严重中毒时,通过消息传递范式聚合邻居消息可能不可靠。因此,我们将我们的方法与不使用边的 GCN 进行比较,称为 GCN-NoGraph [20],即节点特征上的两层 MLP。请注意,超过 GCN-NoGraph 的性能表示有效的图结构,而低于 GCN-NoGraph 的性能则意味着 GNN 的图结构无信息或混乱。图3显示了与GCN-NoGraph的比较。对于所有比较方法,只有 G-RNA 的性能始终优于 GCN-NoGraph。 GCN-Jaccard 对于小扰动表现良好,但无法抵御大扰动。此外,当两个数据集的扰动率超过 15% 时,我们可以看到 GCN 和 GraphNAS 的明显下降。
在这里插入图片描述

理解操作鲁棒性

  为了理解各种GNN组件的鲁棒性,我们随机抽样了300个架构,并评估它们在干净和攻击图上的性能。为了进行公平的比较,我们对所有选择的架构保持相同的训练配置。具体来说,我们将每个架构训练 200 个时期,学习率为 0.005,权重衰减为 5e-4。我们使用分类准确率的下降作为衡量标准,并在 Mettack(5% 扰动率)下的 Cora 数据集上报告结果,而其他数据集也显示出类似的趋势。一种架构的性能下降越少,该架构就越稳健。图 4a 和图 4b 显示了各种架构设计下的鲁棒性箱线图。对于每个子图,顶部的图显示了干净图表上的操作选择和模型测试精度之间的关系,而底部的图则通过精度降低显示了操作的鲁棒性。我们提出以下观察。
在这里插入图片描述
内部消息传递层设计 图 4a 显示了该架构对于不同层内架构设计的鲁棒性。为了简单起见,我们只考虑第一层的层内操作。我们可以看到,架构设计在架构准确性和稳健性方面都发挥着重要作用。使用预处理图结构掩码操作提高了 GNN 模型的鲁棒性,但牺牲了一些准确性。对于 Cora 数据集,NFS 是预处理扰动图数据最有效的操作。GCN是Mettack下相关系数最脆弱的。一个可能的原因是Mettack采用了两层GCN模型作为代理模型来生成对抗性样本。对于邻居聚合操作,Sum 显示出高精度和相对稳健的性能。更重要的是,Max 还能够生成一些鲁棒的架构。此外,组合函数对于增强 GNN 的鲁棒性至关重要,因为我们可以看到使用 GIN 或 SAGE 操作时精度下降较小。因此,在消息传递中必须区分自身消息和邻居消息。

消息传递层间设计 我们的层间设计包括跳过连接和层聚合操作。我们还研究了消息传递层的数量如何影响 GNN 的鲁棒性。结果总结在图 4b 中。跳过连接有助于提高模型的准确性和鲁棒性。对于层聚合,没有明显的差异,并且 LSTM 的表现比其他两种操作稍微鲁棒一些。更有趣的是,增加模型深度使得 GNN 在对抗性攻击下更加脆弱。2 层 GNN 在 Cora 数据集上显示出相当好的性能。

结论和局限性

  在本文中,我们提出了第一个针对 GNN 的对抗性鲁棒 NAS 框架。我们将图结构掩码操作合并到搜索空间中,以增强 GNN 的防御能力。我们还定义了一个鲁棒性指标,可以有效地衡量架构的鲁棒性。实验结果证明了我们提出的方法在对抗性攻击下的有效性。我们根据经验分析了不同操作的架构鲁棒性,这为深入了解 GNN 架构背后的鲁棒性机制提供了见解。
  同时,效率低下是许多 NAS 方法的共同问题。由于这个弱点不是我们的主要关注点,因此我们希望将这个限制留作未来的工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/148085.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣周赛372 模拟 思维 位运算 java

100131. 使三个字符串相等 ⭐ AC code class Solution {public int findMinimumOperations(String s1, String s2, String s3) {int len1 s1.length();int len2 s2.length();int len3 s3.length();int n Math.min(len1,len2);n Math.min(n,len3);int i 0;while(i < n…

在Java代码中指定用JAXB的XmlElement注解的元素的顺序

例如&#xff0c;下面的类RegisterResponse 使用了XmlRootElement注解&#xff0c;同时也使用XmlType注解&#xff0c;并用XmlType注解的propOrder属性&#xff0c;指定了两个用XmlElement注解的元素出现的顺序&#xff0c;先出现flag&#xff0c;后出现enterpriseId&#xff0…

基环树(pseudotree)入门

目录 无向基环树找环&#xff0c;[题目](https://www.luogu.com.cn/problem/P8655)拓扑排序找环并查集找环dfs找环 内向基环树[2876. 有向图访问计数](https://leetcode.cn/problems/count-visited-nodes-in-a-directed-graph/description/)[2127. 参加会议的最多员工数](https…

python表白弹框

# codinggbk import tkinter as tk import random# 创建主窗口并隐藏 root tk.Tk() root.attributes(-alpha, 0) # 设置主窗口为不可见# 表白内容 message "cnmsb"# 创建弹框函数 def create_popup():x random.randint(0, root.winfo_screenwidth()) # 随机生成…

取数游戏2(动态规划java)

取数游戏2 题目描述 给定两个长度为n的整数列A和B&#xff0c;每次你可以从A数列的左端或右端取走一个数。假设第i次取走的数为ax&#xff0c;则第i次取走的数的价值vibi⋅ax&#xff0c;现在希望你求出∑vi的最大值。 输入格式 第一行一个数T &#xff0c;表示有T 组数据。…

【C++】:模板的使用

目录 1、泛型编程 2、函数模板 2.1、函数模板概念 2.2、函数模板格式 2.3、函数模板的原理 2.4、函数模板的实例化 2.6、模板参数的匹配原则 3、类模板 3.1、 类模板的定义格式 3.2、 类模板的实例化 4、非类型模板参数 5、模板的特化 5.1、函数模板特化 5.2、类模…

公网访问全能知识库工具AFFINE,Notion的免费开源替代

文章目录 公网访问全能知识库工具AFFINE&#xff0c;Notion的免费开源替代品前言1. 使用Docker安装AFFINE2. 安装cpolar内网穿透工具3. 配置AFFINE公网访问地址4. 实现公网远程访问AFFINE 公网访问全能知识库工具AFFINE&#xff0c;Notion的免费开源替代品 前言 AFFiNE 是一个…

ChatGPT + Flutter快速开发多端聊天机器人App

在这个充满创新和机遇的时代&#xff0c;软件开发领域正在经历一场前所未有的变革。为了满足日益增长的用户需求和提升用户体验&#xff0c;我们引入了ChatGPT和Flutter两大技术&#xff0c;旨在打造一款功能强大、易于扩展的多端聊天机器人App。 ChatGPT&#xff1a;对话式人工…

04 后端增删改查【小白入门SpringBoot + Vue3】

项目笔记&#xff0c;教学视频来源于B站青戈 https://www.bilibili.com/video/BV1H14y1S7YV 保证前面的都功能都实现后&#xff0c;接着往下走。 查 分页 接下来&#xff0c;实现前端页面分页功能。 前端分页组件 打开elementplus官网&#xff0c;找到合适的分页组件&…

如何解决swagger-editor在线接口调试时的跨域问题

文章目录 一&#xff0c;序言二&#xff0c;问题重现1. 运行swagger-editor2. 运行接口服务3. 问题重现步骤 三&#xff0c;解决问题思路1. 去除浏览器安全限制2. 服务器接口统一处理3. 委托nginx转发 四&#xff0c;完整接口代码传送 一&#xff0c;序言 在 Docker 运行swagg…

光敏传感器模块(YH-LDR)

目录 1. YH-LDR模块说明 1.1 简介 1.2 YH-LDR 模块的引脚说明 1.3 LDR 传感器工作原理与输出特性 2. 使用单片机系统控制 YH-LDR 模块 2.1 通用控制说明 1. YH-LDR模块说明 1.1 简介 YH-LDR 是野火设计的光强传感器&#xff0c;使用一个光敏电阻作为采集源&#x…

【C++】多线程的学习笔记(3)——白话文版(bushi

目录 前一篇内容&#xff08;mutex锁&#xff09; 前言 Condition Variable的简介 Condition Variable的使用方法 wait方法 wait for函数与wait until函数 notify函数 notify_one notify_all 注意 前一篇内容&#xff08;mutex锁&#xff09; 【C】多线程的学习笔记&…

pythongui实时闹钟

# codinggbk import tkinter as tk from time import strftime# 创建一个主窗口 root tk.Tk() root.title("实时闹钟")# 设置窗口的大小不可变 root.resizable(False, False)# 设置窗口始终保持在最上层 root.attributes(-topmost, True)# 更新时间的函数 def time(…

java游戏制作-拼图游戏

一.制作主界面 首先创建一个Java项目命名为puzzlegame。 再在src中创建一个包&#xff0c;用来制作主界面 代码&#xff1a; 结果&#xff1a; 二.设置界面 代码&#xff1a; 三.初始化界面 代码&#xff1a; 优 化代码&#xff1a; 结果&#xff1a; 四.添加图片 先在Java项…

mysql查询json字符串内容

参考文章&#xff1a;mysql json 基础查询_mysql json查询-CSDN博客 mysql查询json字符串内容 &#xff08;多层数组嵌套&#xff09; select id,nameJSON_EXTRACT(JSON_UNQUOTE(JSON_EXTRACT(JSON_UNQUOTE(config_json), $.baseInfo)), $.template_list[*].sms_content) s…

03 前后端数据交互【小白入门SpringBoot + Vue3】

项目笔记&#xff0c;教学视频来源于B站青戈 https://www.bilibili.com/video/BV1H14y1S7YV 前两个笔记。是把前端页面大致做出来&#xff0c;接下来&#xff0c;把后端项目搞一下。 后端项目&#xff0c;使用IDEA软件、jdk1.8、springboot2.x 。基本上用的是稳定版。 还有My…

【C++】chono库:使用及源码分析

文章目录 0. 概述1. duration1.1 分析std::chrono::duration_cast() 1.2 使用案例std::chrono::duration::count() 1.3 部分源码 2. time_point2.1 分析std::chrono::time_point_cast() 2.2 使用举例std::chrono::time_point::time_since_epoch() 2.3 部分源码 0. 概述 本篇文…

python使用selenium webDriver时 报错

可能原因和解决&#xff1a; 1. python 解释器 ----> 设置 2. 浏览器版本 与 浏览器驱动版本不一致 ----> 安装同一版本的 (下载chromedriver | 谷歌驱动更高版本的测试版) 参考&#xff1a;Python使用Selenium WebDriver的入门介绍及安装教程-CSDN博客 Selenium安…

设计模式-行为型模式-策略模式

一、什么是策略模式 策略模式是一种行为设计模式&#xff0c;它允许在运行时选择算法或行为&#xff0c;并将其封装成独立的对象&#xff0c;使得这些算法或行为可以相互替换&#xff0c;而不影响使用它们的客户端。&#xff08;ChatGPT生成&#xff09; 主要组成部分&#xff…

基于django的在线教育系统

基于python的在线教育系统 摘要 基于Django的在线教育系统是一种利用Django框架开发的现代化教育平台。该系统旨在提供高效、灵活、易用的在线学习体验&#xff0c;满足学生、教师和管理员的需求。系统包括学生管理、课程管理、教师管理、视频课程、在线测验等核心功能。系统采…