基于图神经网络的对抗攻击防御 GNNGUARD: Defending Graph Neural Networks against Adversarial Attacks
参考资料
- 项目:https://zitniklab.hms.harvard.edu/projects/GNNGuard/
- 代码:https://github.com/mims-harvard/GNNGuard
- paper:https://arxiv.org/abs/2006.08149
- poster:https://zitniklab.hms.harvard.edu/publications/posters/GNNGuard-NeurIPS20.pdf
介绍
论文来自于NeurIPS 2020,题目是GNNGUARD,一个应用于图神经网络的通用的抵御对抗攻击的算法。
意义
备注:
GNNGUARD一种通用的算法,任何GNN通过集成GNNGUARD,可以在即使在扰动的图上训练时也可以做出正确预测。
实现效果如图:面对各种对抗攻击时可以有效地恢复GNN的性能。
假如攻击者对结点u投毒,令没有防御的分类器误分类;但是有了GNNGUARD,即使有扰动,也可以正确分类。
核心思想
检测和量化图结构与结点特征之间的关系。
GNNGUARD的本质是一个算法,以现有的GNN模型作为输入,通过检测和量化图结构与结点特征之间的关系,修改模型中消息传递的结构,来减轻攻击带来的负面影响。
图A是一个典型的GNN消息传递结构;图B添加了一些操作来控制信息传递,例如阻止来自无关邻居的消息,也就是对边的修剪;同时还有增强来自高度相关邻居的消息。
GNNGUARD主要研究:
- 为连接相似结点的边分配更高的权重
- 同时修剪连接不相关结点的边
问题定义
然后我们来看一下GNNGUARD想要解决的问题。
在投毒攻击的模型中,攻击者扰动图G,意味着攻击改变了训练数据,这样做可以降低GNN的性能。
- 用G‘表示扰动后的图。
- 我们的目标就是寻找一个GNN f’,使得对任意G‘中的结点,G‘上训练的f’对结点预测的结果,和在原始的不加扰动的图G上训练出的f对结点预测的结果,最接近。
那么问题就存在了,我们没办法知道原图也就是不加扰动的图是什么样。所以我们没办法直接用上面这个式子来解决这个问题。
恢复原图的结构
- 有研究[1, 2]发现大多数的扰动都是通过在不同结构、特征和标签的结点之间伪造边缘
- 设计方案
- 检测虚假的边缘
- 删除或分配较低权重来减轻负面影响
备注:
所以问题在于如何恢复原图G的结构。
之前有研究(此处应该有参考文献)发现大多数扰动都是通过在不同特征和标签的结点之间伪造边缘。恢复结构的关键,是设计一种方案,来检测可能是伪造的边,并通过删除它们或为它们分配较低权重来减轻负面影响。
如上图如果我们可以检测出来红色的边的伪造的,或者可能是伪造的。我们可以直接裁剪掉这个变,或者通过降低边的权重,来减少这条边两边端点通过这个边交换的信息,这样就尽可能的恢复出G的结构
下面介绍如何对这种边做检测和降低权重,GNNGUARD主要引入了两个部件,一个是邻居重要性估计,一个是层间记忆。
邻居重要性估计
连接相似结点的边比连接不相似结点的边传递的消息更多
两点之间的相似度
消息传递的重要性权重
对边进行裁剪
备注:
如何量化边的重要性,通过看两端结点通过这个边传递了多少信息。基于一个假设(此处有参考文献)就是连接相似结点的边比连接不相似结点的边传递的消息更多。
因此可以用两端结点的信息来量化第k层点u和v之间的相似度s(待补充,同构异构)
相似度越大意味着两端的结点(结构、特征)越相似
把边的相似度在结点层面做归一化得到每条边对该节点消息传递的重要性权重α
比如αuv就是v向n传递消息的重要性权重
然后是使用这个重要性权重来裁剪边,尤其是假的边倾向于连接不同的节点
α是有方向的,我们定义边的特征向量。
对这个特征向量进行非线性变换,然后与指定的阈值进行判断,得到裁剪概率。
最后用得到的裁剪概率更新重要性权重。
到这里只是算出来了并且更新了一个α,但是α还没啥用。α后面会用到,用来更新层间记忆,下面来讲层间记忆。
层间记忆
层间记忆定义:
举例:
备注:
如果直接使用邻居重要性估计对边进行裁剪可能会修改GNN的结构,尤其是在单层修剪大量的边的时候,会破坏训练的稳定性
为了能够对重要性权重进行可靠的估计,并且平滑地修剪边,提出了层间记忆。
层间记忆应用于每个GNN层,保留上一层修剪后的图的部分记忆。
通俗的说就是把剪完以后的结构向上一层传递一部分,没有在一层彻底把边裁减掉。
这个公式就是层间记忆的定义。
记忆系数β:控制有多少上一层的信息保留到当前层。
记忆系数是可以学习的参数,在第一层会设置为0,意味着第一层的时候没有保留上一层的信息,防御系数直接计算并使用的重要性权重。
防御系数ω:通过参考当前层的重要性权重和上一层的防御系数,控制信息的传递,增强来自防御系数高的邻居的信息,减弱低防御系数结点邻居的信息。
可以看这张图,防御系数是应用到图神经网络聚合函数和更新函数中。
算法
备注:
接下来我们通过算法来了解怎么应用这两个组件。
算法的作用就是修改每一层的消息传递,输入的是一个模型(不是一个训练好的模型,修改完模型以后再训练)
输入:一个GNN模型f,被毒化的图G’
对自底向上的每一层:
对每一个结点:
- 对每个结点所有邻居对它的重要性
- 按这个重要性进行边的裁剪
- 计算层间记忆
- 把这个信息带入到模型的消息聚合和更新函数中
实验结果
备注:
第一张表是直接攻击,第二张表是推理攻击和非定向攻击。
表中内容是分类准确度,证明了防御性能不错。
图神经网络对抗攻击未来发展方向
- 不可感知的扰动度量:人无法轻易分辨是否有扰动,找到简洁的扰动评估方法很重要
- 研究的图的种类:主要研究集中在带节点属性的静态图,带边属性的图和动态图研究很少
- 图上对抗样本的存在性和可传递性:对于理解图上的学习算法很重要,有助于帮助建立健壮的模型
- 可放缩性:攻击方法的高度复杂性阻碍了在实际中的应用,大多数方法时间复杂度高,基于梯度,降低复杂度仍是一个问题
基于图神经网络的对抗攻击防御 GNNGUARD: Defending Graph Neural Networks against Adversarial Attacks相关推荐
- 【对抗攻击论文笔记】Enhancing the Transferability of Adversarial Attacks through Variance Tuning
文章目录 Main Contributions Background Motivation Method Experiments Main Contributions 本文提出了一种基于方差调整迭代梯 ...
- 论文浅尝 | 图神经网络的对抗攻击和防御相关文献集
本文转载自公众号:专知. 作者:Wei Jin. 导读:本资源整理了关于图形数据或GNN(图形神经网络)上的对抗攻击和防御的论文链接.并对其进行分类. 目录 Survey Papers Attack ...
- 图神经网络(十八)GEOM-GCN: GEOMETRIC GRAPH CONVOLUTIONAL NETWORKS
本文收录于ICLR2020,作者是吉林大学的杨博老师.我们知道,GCN的本质其实是消息传递神经网络,但是MPNN有着两个基本缺陷限制了其表示图结构信息的能力:丢失邻域中节点的结构信息,以及不能捕获异类 ...
- A Comprehensive Survey on Graph Neural Networks(图神经网络综合研究)
A Comprehensive Survey on Graph Neural Networks 图神经网络综合研究 Zonghan Wu, Shirui Pan, Member, IEEE, Feng ...
- [论文阅读] (27) AAAI20 Order Matters: 基于图神经网络的二进制代码相似性检测(腾讯科恩实验室)
<娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...
- AI安全---对抗攻击防御措施
目前,在对抗攻击防御上存在三个主要方向: 1)在学习过程中修改训练过程或者修改的输入样本. 2)修改网络,比如:添加更多层/子网络.改变损失/激活函数等. 3)当分类未见过的样本时,用外部模型作为附加 ...
- 基于图神经网络的聚类研究与应用
Datawhale干货 本文编辑:Datawhale 用手机上网的时候,总有种感觉,推荐的视频是我爱看的,推荐的美食是我爱吃的,大家长的又好看,说话又好听. 有时候会对自己发出灵魂拷问:难道隐私被记录 ...
- 人大赵鑫:基于图神经网络,建模知识图谱
报告 | 赵 鑫 撰文 | 熊宇轩 我这里主要给大家介绍一下利用图神经网络能做一些什么事情,这里面主要关注知识图谱的建模与应用. 在本次报告中,我们将从三个方面介绍基于图神经网络的知识建模与应用: ...
- MILA研究院唐建:基于图神经网络的关系推理(附视频)
2020 北京智源大会 本文属于2020北京智源大会嘉宾演讲的整理报道系列.北京智源大会是北京智源人工智能研究院主办的年度国际性人工智能高端学术交流活动,以国际性.权威性.专业性和前瞻性的" ...
最新文章
- 一文读懂产业互联网的前世今生!
- 你有没有想过: 为什么Java中String是不可变的?
- IE6下绝对定位的DIV被相对定位的DIV挡住的问题
- 流程文件外发同步及加密
- dart - 如何制作新数组嵌套排序映射
- 为什么会出现docker
- Python机器学习:KNN算法06网格搜索
- werkzeug create_environ
- java类型转换 float类型转换_Java类型转换 – float(和long)到int
- 多载波瑞利信道matlab,瑞利信道仿真matlab.doc
- 看电影“刺客聂隐娘”前必须了解的知识(绝无剧透)
- php zend guard php 7,zend guard php7最新版
- 机器学习基石2-Learning to Answer Yes-No
- java 2048思路_Java版2048
- 小米手机短信拦截转发失败原因
- 微信小程序教学管理系统+后台管理系统
- 艾永亮:耐克阿迪都慌了,成功逆袭的李宁,产品创新战略是什么
- 自然增长率,到底怎么算才合理!
- 你不必使用弱引用以避免内存泄漏
- 【Go语言实战】(2) Gin+Vue 电子商城
热门文章
- 二维码扫描的手势调焦
- mysql 分页查询分析_mysql 大表分页查询测试分析优化
- 知名动画公司访华,绘王发布新款INSPIROY Q11K数位板
- C语言实现一趟快速排序算法
- 学习笔记九:BERT和它的小伙伴们
- 一分钟了解python字符串常用的函数
- 【概率论】3-6:条件分布(Conditional Distributions Part I)
- python怎样安装词云_在python中怎样安装词云-女性时尚流行美容健康娱乐mv-ida网...
- 安装 JAVA CRYPTOGRAPHY EXTENSION (JCE) UNLIMITED STRENGTH
- Linux 多用户远程,suse linux vnc多用户远程桌面配置实战