论文笔记:《Topology Attack and Defense for Graph Neural Networks: An Optimization Perspective》


前言

《Topology Attack and Defense for Graph Neural Networks: An Optimization Perspective》是2019年发表在IJCAI上的一篇文章。在这之前,我们必读的文章有2018年发表于KDD上的《Adversarial Attacks on Neural Networks for Graph Data》,这篇文章是有目标攻击并且只涉及到逃逸攻击;2019年发表于ICLR上的《Adversarial Attacks on Graph Neural Networks via Meta Learning》,这篇文章研究的是无目标攻击,并且还涉及到了投毒攻击。今天所解读的论文与前面两篇论文相比,前面两篇论文都是采用贪心的策略(通过梯度信息/对loss的贡献)在每一轮施加一个扰动,都是通过贪心策略生成扰动图,每一步最大化攻击目标。这篇论文采用了一种基于优化的方式实现图对抗攻击,也是基于对图结构的修改降低模型的整体节点分类性能,将扰动代价转化为约束条件,将离散问题松弛成连续问题用用优化的方法求解。

一、论文拟解决的问题与思想

这篇论文是研究在图上的攻击和防御,基于优化同时提出了攻击和对抗。


二、正文

在图数据上,对抗攻击通常是通过对图数据的图结构或者是节点特征进行微小的改变来实现的,从而达到损害目标模型性能的目的。
首先我们必须了解的是对抗攻击和防御的目的,攻击就是对原始样本增加扰动生成对抗版本最大化损失函数,同时扰动尽可能的小,让人类肉眼无法察觉;防御问题是基于这种攻击方法训练一个更具鲁棒性的神经网络。

1.基础

对于本文之中所提到的一些基础知识,这里通过QA方式进行阐述。
Q:什么是基于优化的攻击?
A:CW是一种基于优化的攻击方式,它同时兼顾了高攻击准确率和低对抗扰动的两个方面。CW算法的基本思想是将对抗样本当成一个变量,那么如果攻击成功需要满足两个条件:1、对抗样本和对应的干净样本应该差距越小越好。2、对抗样本应该使得模型分类错误, 且错误那一类的概率应该越高越好。CW的算法公式如下图:
1
第一个部分rn对应着干净样本和对抗样本的差,作者将对抗样本映射到tanh空间中,这样做有利于优化。
第二个部分Z(x)表示的是样本x通过模型未经过softmax的输出向量,对于干净的样本来说,这个向量的最大值就是正确的类别(如果分类正确的话),我们现在将类别t:在最后想要攻击成功的类别,所对应的逻辑值记为Z(x‘)t,将最大的值(对应的类别不同于t)记为max{Z(x‘)t:i != t},如果通过优化使得max{Z(x‘)t:i != t} - Z(x‘)t变小,那么攻击就离成功更近了。式子中的k是置信度,可以理解为k越大,那么模型会分类错误,并且错误的那一类的概率越大。但是存在一个问题:对抗样本比较难找。常数c是一个超参数,用来权衡两个loss之间的关系,作者通过二分查找来确定c值。
我们可以发现,CW主要调节的参数是c和k,优点是可以调节置信度,生成的扰动小,可以破解很多的防御方法,缺点就是比较慢。

Q:什么是PGD攻击?
A:PGD(Project Gradient Descent)攻击是一种迭代攻击,基本思想是多次迭代(对比FGSM仅仅只做一次迭代),每次走一小步,每次迭代都会将扰动的clip规划到规定的范围内。PGD的算法公式如下:2
PGD的基本原理:如果目标模型是一个线性模型,那么可以直接用FGSM,因为此时的loss对输入的导数是固定的,也就是说使得loss下降的方向是明确的,即使迭代多次,扰动的方向也不会改变。而对于一个非线性模型,仅仅做一次迭代,方向不一定是正确的。

Q:什么是投毒攻击?
A:首先给出进攻防御的min-max框架的定义式:
3
对于攻击者来说式内部最大化,对于防御问题来说就是外部最小化。
内部最大化:我们以无目标攻击为例,里层的损失函数最大化的意思是原始样本加上扰动之后,和原始标签的损失差距越来越大,从而导致标签所得到的分数越来越小。
外部最小化:防御的目的是为了让模型遇到对抗样本的情况下,整个数据分布上的损失的期望还是最小的。这个可以通过先解决内层训练找到所有训练样本的对抗样本,然后用对抗样本替换原样本进行retrain来完成。

2.本文主要贡献

这篇论文最主要的就是提出了攻击方法和防御方法。
其中攻击方法涉及到两种攻击场景:
1.固定权重的GNN:projected gradient descent (PGD) topology attack
2.可再训练的GNN:min-max topology attack
防御方法在基于优化和基于贪心搜索的拓扑攻击时表现出了相当强大的鲁棒性

3.攻击部分

论文中所提到的有如下定义:
A为邻接矩阵,A’为被扰动后的矩阵,A横是A的补矩阵。

针对A的边进行拓扑攻击可以表示为:4
其中涉及到Hadamand乘积(哈达玛乘积),就是m x n矩阵A = [aij]与矩阵B = [bij]的Hadamard积,记为A * B 。新矩阵元素定义为矩阵A、B对应元素的乘积(A * B)ij = aij*bij。
矩阵A横 - A表示在原图两个节点之间是否存在边。
具体地说,当(A横-A)i,j = 1,节点vi和节点vj之间不存在边,因此攻击者可以添加边;当(A横-A)i,j = -1时,节点vi和vj之间存在边,攻击者可以将其删除。
这里举一个例子,给定一个grah(原图),自然就可以得到它对应的邻接矩阵A,根据公式计算可以得到A横。当graph中节点的连接关系改变的时候,自然就有了新的邻接矩阵,那这个新的邻接矩阵如何快速计算呢?这就用到了上面的式子了。我们可以知道,通过矩阵之间的乘法运算可以快速得到改变后的graph的邻接矩阵。
因此,对于GNN拓扑攻击可以定义为:找到一个最小的扰动矩阵S(matrix中1代表扰动的地方)使得GNN出错,矩阵S是对扰动多少的度量。攻击者的目标是找到可能导致糟糕预测性能的S,那么就可以得到扰动后的新图A‘。

扫描二维码关注公众号,回复: 14766472 查看本文章

3.1 定义loss

我们的目的是经过优化能够得到扰动矩阵,对于某个节点vi来说,在给定真实标签yi的情况下,预测性能可以通过损失来衡量。有两种loss可用,一种是负交叉熵(negative cross-entropy,CE),另外一种是Carlili-Wagner (CW)。(CE损失本来是做分类的,CE损失用来衡量两个概率分布之间的差异性,这个函数有两个参数,一个是预测值,一个是输入的。取负号是为了让结果边差,CW损失本来就是让结果变差的,因此不需要取负号)

首先来说一下CW loss:
假设Z(S, W; A, xi, yi)为GNN模型在图A上经过S扰动后对xi的输出结果。Zi,c表示GNN对节点i输出的类别c上的概率矩阵。yi和c作为索引来检索相应类的预测概率;Zi,yi - maxZi,c项时用来测量预测概率中真是标签yi对应的概率与除了真实标签外其他类别中最大概率之间的差。当预测错误的时候,该项小于0。因此对于攻击者的目标,这个值大于0会导致出现惩罚。节点i的loss可表示为:5
k > 0 表示做出错误预测的置信度,这意味着当真实标签yi的概率与除真是标签其他类别中最大概率之间的差大于-k是,惩罚会出现。较大的k意味着预测需要严重错误才能避免惩罚。
有了loss函数,就可以描述优化方式了。由于本文前面所提到的攻击方法在两种场景中的运用,不可重训练的GNN和可重训练的GNN。针对这两种场景:
1.固定权重W,不可重训练的GNN:
优化的目的是使得攻击损失最小(比如-CE最小,CE最大,分类效果最差),因为此时GNN参数固定,这种情况下,唯一可以优化更改的是扰动矩阵S,也就是邻接矩阵的变化量,因此优化目标就比较简单了,优化使得所有节点的损失值之和最小:
6
我们可以这样想,如果损失是CE的话,损失越小表示分类效果越好,那么攻击效果就越不好;如果损失是-CE,那么损失越小表示CE越大,分类效果越不好,攻击效果就越好。
在这个式子中,小写的s代替了大写的S,实际上就是矩阵大S铺平成了一个横向量,是为了方便表示,1T就是全1的n维横向量。上面的1Ts <= 一个数就是给s添加了一个所有元素之和不能超过那个数的约束条件,也就是扰动数量不能太夸张。yi作为节点i的ground true标签。
由于s是一个不断被优化的向量,其每个元素都是0-1之间的连续值。并不能直接当扰动矩阵使用,因此需要对s进行二值化,而直接设置阈值进行二值化不利于梯度优化。因此算法1所示的随机采样方法得到二值化的s*,用s中的0-1间的数字作为二项分布的概率,实验结果为0或者1,一共作k组测试,有的实验可能因为产生的扰动大于而直接跳过,在所有满足限制的实验结果中,选择使得分类loss最大的那个扰动作为最终的s,由此完成了s的选择:
7
在上面式子的优化过程当中,由于存在限制条件1Ts <= 一个数,所以不能简单的对s求梯度然后直接根据梯度更新,因为根据梯度更新可能会破坏条件。论文中所使用到的方法是映射梯度下降法PDG,这是一种经典的在待参数存在限制的情况下求解参数的一种方法。核心思想就是首先求出普通的根据梯度下降算法更新后的参数值a,然后在约束条件下求解目标参数平方距离最近的值作为新的参数。表示如下:
首先就是得到普通梯度下降情况下更新后的s值,记作a。
8
上面式子前面一个是学习率,后面一个是损失对st的梯度。
但是在a更新过程中没有考虑到上述的限制条件,因此不能直接把a当作迭代后的s,而是在限制条件的范围内求解一个最接近a的向量作为更新后的s,也就有了下面的式子:
9
论文中证明了上面的式子等价于下面的式子,证明的方法就是求解拉格朗日函数:
10
在上面的式子中,存在以下条件:
11
简单来讲就是对x的范围限制在[0,1]中,相当于一个截断操作。
这个式子的含义就是如果对于输入的a(长度为(N - 1)N / 2的向量),直接截断后能够满足后面的条件,那么截断后就能直接拿来当迭代后的s用;如果不行,那就要对a加一个偏置beta,要求偏置之后的阿尔法-beta点乘1能够满足:
12
根据上述式子求解beta的值,可以直接用二分搜索在范围内求解近似解。整个PGD优化过程可以用算法2表示,总体思路就是GCN分类的损失对长度为(N - 1)N / 2向量求偏导数,然后按照正常的反向传播修改机制去修改向量s,注意这里的s中的元素的数值不是0或者1的二值化形式,每一个epoch下,损失对于s的偏导数长度也是(N - 1)N / 2,是一一对应的:
13
2.可重训练的GNN:
优化目的不变,依然是是的攻击损失最小(比如-CE最小,CE最大,分类效果最差)这种情况下,不仅s能够被优化更改,GNN的网络参数矩阵W也会随着S的更改而更改,于是如下优化问题:14
其中里面的maxmize就是普通梯度下降进行优化,外面一层对里面的优化仍然使用上面所提到的PGD方法优化。
内层优化是对于一个固定的s(也就是一个固定的扰动图),内层优化找到使得攻击损失最大的GCN参数,因为这是一个训练的过程,训练的过程目的就是让损失收敛,因此攻击损失-CE最大,CE最小,分类效果最好。而外层则是希望在所有处于扰动限制内的s中,找到是的攻击损失最小的函数。(这里可能会有一个疑问,攻击的目的不就是让其分类效果不好吗,为什么还要内层最大使得它的分类效果好呢?在我的理解来说,这是在攻击的基础之上的,如果不是通过训练时期收敛,那么随便一个未经过训练的网络,也就是随机初始化之后的网络去跑数据,他完全没有识别的效果,这就不能够算攻击了)
将扰动后的s进行凸松弛化之后,也就是扰动向量中的值不再是0或者1,而是0-1之间的数字之后,先训练好一个model,得到当前的模型参数W(0),初始化一个长度为(N - 1)N / 2的向量S,一般用0来填充,之后对于S的修改都是基于前面的model的,在每一个epoch中,先用当前的A’对model进行一次训练,此时模型参数值发生变化,紧接着,在这一次变化的基础上获取当前model对于当前S的梯度,长度也为(N - 1)N / 2的向量,然后进行一次PGD攻击,完胜对S的修改(这里进行的PGD和逃逸攻击的PGD有所不同,逃逸攻击的PGD是每个epoch是对于同一个模型,也就是同一套参数进行反复迭代,而投毒攻击的PGD在每一个epoch中,在一个新的模型参数上进行,这个行的模型参数是收到每次PGD的结果影响的),总的来说,就是每个epoch中训练一次model,对S进行PGD一次,如此反复。
这个就是算法3所表现的:
15

4.防御部分

对抗训练的优化问题可以定义为:
16
对抗训练的内层最大问题是希望找到当前样本最优的对抗样本,即在符合越是条件的所有对抗样本中找到使得分类损失最大的对抗样本,找到了内部最大最优也就完成了,然后外部最小就是通过内部最大最优找到的对抗样本在当前模型参数上训练模型使得其收敛,从而找出加入对抗样本之后能使得模型表现最好的一组参数。

对抗样本和可重训练攻击的区别:
可重训练攻击的loss是-CE,也就是攻击损失;对抗训练的loss是CE,也就是分类损失;可充训练攻击最终求解的是扰动,对抗训练最终求解的模型参数。
这个式子实际上就是把前一个式子改成了先优化扰动再优化权重,两个式子的形式十分的类似。文中还证明了两个式子的不等价但存在大小关系。那么整个对抗训练的过程就可以用如下伪代码4来实现:
17
通过这个伪代码可以看得到防御部分和上面的投毒攻击的实现方法是比较类似的,在对抗训练的一个epoch中,首先根据当前网络做一次PGD,得到变换后的S,然后根据刚才生成的S去训练一次当前网络做梯度下降,如此反复。


总结

这篇论文主要的创新点还是逃逸攻击和固定权重的防御上,对投毒攻击没有过多的笔墨介绍,鲁棒防御模型没有针对投毒攻击方面的。

猜你喜欢

转载自blog.csdn.net/qq_44624316/article/details/125286379
今日推荐