图神经网络对抗攻击(图注入攻击)_图神经网络边的抗击打能力-程序员宅基地

技术标签: 图神经网络  人工智能  对抗防御  

paper1 :TDGIA(Effective Injection Attacks on Graph Neural Networks) part1


论文下载

Abstract

图神经网络在各种实际应用中都取得了良好的性能。然而,最近的研究发现,GNN容易受到对抗攻击。本文研究了最近引入的一种针对**图注入攻击(GIA)**的真实攻击场景。在GIA场景中,攻击者无法修改输入图的现有连接结构或节点属性,而是通过向其中注入攻击节点来执行攻击。*我们分析了GNN在GIA设置下的拓扑脆弱性,并在此基础上提出了用于有效注入攻击的拓扑缺陷图注入攻击(TDGIA)*TDGIA首先引入拓扑脆弱边选择策略来选择原始节点与注入节点连接。然后设计平滑特征优化目标,为注入节点生成特征。大规模数据集上的大量实验表明,TDGIA在攻击数十个防御GNN模型时,能够持续且显著的优于各种攻击基线。值得注意的是,在KDD-CUP2020提交的数百份文件中,TDGIA的导致的目标GNN性能下降是最佳攻击解决方案造成的损害两倍多。


1、Introduction

近年来,图机器学习被广泛用于结构化和关系数据建模。特别是图神经网络(GNN)的出现为不同的图应用提供了有前景的结果,例如节点分类、社会推荐和药物发现。

尽管取得了令人兴奋的进展,但研究表明,神经网络通常容易受到对抗攻击,在这种情况下,输入上为不可察觉但故意设计的扰动可能会导致错误的预测。对一般神经网络的攻击通常侧重于修改输入实例的属性/特征,例如图像单个像素的轻微扰动。特别是,对抗攻击也可以用于图形结构的输入、需要专门的策略来探索底层的特定缺陷。

对GNN的早期攻击通常遵循图修改攻击(GMA)的设置,如图1(a)所示:给定一个具有属性的输入图形,攻击者可以直接修改其节点(红色连接)和现有节点(红色节点)属性之间的连接。然而在现实场景中,攻击者获得修改现有数据的权限通常是不现实的。以引文图为例,当论文发表时,它会自动形成,这使得以后更改一篇出版物的引文和属性实际上是很困难的。但相对容易的是,向现有引文图中注入新的节点和连接,例如,通过“发布”假论文来误导GNN的预测。

具体而言,KDD-CUP2020中的GIA人物规定如下:(1)黑盒攻击,攻击者无法访问目标GNN模型或目标节点的正确标签;(2)逃逸攻击,攻击只能在测试阶段执行。GIA设置提出了GMA没有面临的独特挑战,例如如何将现有节点与注入节点连接起来,以及如何从头开始为注入节点生成特征

contributions 在这项工作中,研究了黑盒和逃逸攻击设置下的GIA问题,目标是设计一个有效的注入攻击框架,该框架可以最好的愚弄目标GNN模型,从而降低其预测能力。为了理解这个问题及其挑战,对GNN在图注入攻击下的脆弱性进行了深入分析,并表明GNN作为non-structural-ignorant模型,是GIA可攻击的。基于此,提出了拓扑脆弱图注入攻击(TDGIA)(见图1(b)).TDCIA由拓扑脆弱边选择和注入节点属性生成平滑对抗优化两个模块组成,与GIA问题的设置对应。利用原始图的拓扑脆弱来检测最有助于攻击的现有节点,然后以顺序方式注入围绕这些节点的新节点。在此基础上,设计了一个平滑损失函数来优化节点的特征,以最小化目标GNN模型的性能。

在这里插入图片描述

2、Related works

Adversarial Attacks on Neural Networks

首先是针对基于深度学习的对抗性示例现象在计算机视觉中发现。在图像中添加微笑和不可察觉的扰动可以显著改变深层神经网络的预测。提出了快速梯度符号法,利用训练神经网络的梯度来产生这种扰动。此后,提出了更先进的攻击方法。对抗攻击也在更广泛的领域发展,例如自然语言处理或语音识别。如今,对抗性攻击已经成为神经网络的主要威胁之一。

Adversarial Attacks on GNNs

由于存在对抗性示例,图学习算法的脆弱性也被揭示出来。通过修改图形结构数据的特征和边,攻击可以显著降低GNN模型的性能。针对节点分类和图分类任务提出了一种基于强化学习的攻击。这种攻击只会修改图形的结构。Nettack的提出,是对属性图的第一次对抗性攻击。它表明,在图的边和特征上只有很少的扰动对GCN这样的模型是及其有害的。Nettack在不明显扰动的约束下使用贪婪近似方案,并结合快速计算。此外,也提出了一种通过元学习对GNN 进行投毒攻击,即元攻击,它只修改了图的一小部分,但仍然可以显著降低GNN在节点分类任务上的性能。

也有文章研究了一种更现实的场景,即图注入攻击(GIA),它注入新的恶意节点,而不是修改原始图。

3、Problem Definition

一般来说,有两种类型的图对抗攻击:图修改攻击(GMA)和图注入攻击(GIA),本文的重点是图注入攻击,将攻击问题形式化并引入攻击设置。

图对抗攻击的问题首先是在Nettack中形式化,称之为图修改攻击,具体来说,定义一个属性图 G = ( A , F ) G=(A,F) G=(A,F), A ∈ R N × N A\in R^{N\times N} ARN×N 是它 N N N个节点的邻接矩阵, F ∈ R N × D F\in R^{N\times D} FRN×D D D D维节点特征, M : G → { 1 , 2 , … , C } N M:G\to{\{1,2,\ldots ,C\}}^N M:G{ 1,2,,C}N预测在 G G G N N N个节点的标签,并将其预测表示为 M ( G ) M(G) M(G).GMA的目标是通过修改原始图 G G G,最小化一组目标节点 T \mathcal { T } T M M M的正确预测数量:

min ⁡ G ′ ∣ { M ( G ′ ) i = y i , i ∈ T } ∣  s.t.  G ′ = ( A ′ , F ′ ) , f Δ A ( A ′ − A ) + f Δ F ( F ′ − F ) ≤ Δ \begin{array} { l } \min _ { \mathrm { G } ^ { \prime } } \left| \left\{ \mathcal { M } \left( \mathrm { G } ^ { \prime } \right) _ { i } = y _ { i } , i \in \mathcal { T } \right\} \right| \\ \text { s.t. } \mathrm { G } ^ { \prime } = \left( \mathrm { A } ^ { \prime } , \mathrm { F } ^ { \prime } \right) , f _ { \Delta _ { \mathrm { A } } } \left( \mathrm { A } ^ { \prime } - \mathbf { A } \right) + f _ { \Delta _ { \mathrm { F } } } \left( \mathrm { F } ^ { \prime } - \mathrm { F } \right) \leq \Delta \end{array} minG{ M(G)i=yi,iT} s.t. G=(A,F),fΔA(AA)+fΔF(FF)Δ

G ′ {G}^{\prime} G是修改后的图形, y i y_i yi是节点的真实标签, f Δ A f _ { \Delta _ { \mathrm { A } } } fΔA f Δ F f _ { \Delta _ { \mathrm { F } } } fΔF是衡量修改规模的预定义函数。约束 Δ \Delta Δ确保攻击只能轻微修改原图。

Graph Injection Attacks

不是GMA对 G ′ {G}^{\prime} G结构和属性的修改,GIA直接注入 N I N_I NI,将新节点添加到 G G G中,同时保留原始边和 N N N个节点的属性不变。形式上,GIA构造 G ′ = ( A ′ , F ′ ) {G}^{\prime}=({A}^{\prime},{F}^{\prime}) G=(A,F)通过
A ′ = [ A V I V I T A I ] , A ∈ R N × N , V I ∈ R N × N I , A I ∈ R N I × N I F ′ = [ F F I ] , F ∈ R N × D , F I ∈ R N I × D \begin{array} { c } \mathbf { A } ^ { \prime } = \left[ \begin{array} { c c } \mathbf { A } & \mathbf { V } _ { I } \\ \mathbf { V } _ { I } ^ { T } & \mathbf { A } _ { I } \end{array} \right] , \mathbf { A } \in \mathbb { R } ^ { N \times N } , \mathbf { V } _ { I } \in \mathbb { R } ^ { N \times N _ { I } } , \mathbf { A } _ { I } \in \mathbb { R } ^ { N _ { I } \times N _ { I } } \\ \mathbf { F } ^ { \prime } = \left[ \begin{array} { c } \mathbf { F } \\ \mathbf { F } _ { I } \end{array} \right] , \mathbf { F } \in \mathbb { R } ^ { N \times D } , \mathbf { F } _ { I } \in \mathbb { R } ^ { N _ { I } \times D } \end{array} A=[AVITVIAI],ARN×N,VIRN×NI,AIRNI×NIF=[FFI],FRN×D,FIRNI×D

A I \mathbf { A } _ { I } AI是注入节点的邻接矩阵, V I \mathbf { V } _ { I } VI是一个矩阵,表示 G G G的原始节点与注入节点之间的边, F I \mathbf { F } _ { I } FI是注入节点的特征矩阵。GIA的目标可以形式化为:
min ⁡ G ′ ∣ { M ( G ′ ) i = y i , i ∈ T } ∣  s.t.  G ′ = ( A ′ , F ′ ) , N I ≤ b , deg ⁡ ( v ) v ∈ I ≤ d , ∥ F I ∥ ≤ Δ F \begin{array} { l } \min _ { \mathrm { G } ^ { \prime } } \left| \left\{ \mathcal { M } \left( \mathrm { G } ^ { \prime } \right) _ { i } = y _ { i } , i \in \mathcal { T } \right\} \right| \\ \text { s.t. } \mathrm { G } ^ { \prime } = \left( \mathrm { A } ^ { \prime } , \mathrm { F } ^ { \prime } \right) , N _ { I } \leq b , \operatorname { deg } ( v ) _ { v \in I } \leq d , \left\| \mathbf { F } _ { I } \right\| \leq \Delta _ { F } \end{array} minG{ M(G)i=yi,iT} s.t. G=(A,F),NIb,deg(v)vId,FIΔF

I I I是注入节点的集合, N I N _ { I } NI受预算 b b b限制,每个注入节点的度受预算 d d d限制,注入特征的范数受 Δ F \Delta _ { F } ΔF的限制。这些约束是为了防御尽可能不注意GIA。

The Attack Settings of GIA

GIA最近受到了广泛的关注,并成为KDD-CUP2020竞赛的任务之一,考虑到它在现实世界场景中的广泛意义,遵循在比赛中使用的相同设置,即黑盒和逃逸攻击。

黑盒攻击。在黑盒设置中,攻击无法访问目标模型 M M M,包括其架构、参数和防御机制。然而攻击可以访问原始属性图 G = ( A , F ) {G}=({A},{F}) G=(A,F)以及训练和验证节点的标签,但不能访问要攻击的节点。

逃逸攻击。GIA遵循逃逸攻击设置,即在测试阶段只对目标模型执行攻击。这使的它不同于投毒攻击,在投毒攻击中,目标模型被重新约束在受攻击的图上。

The GIA Process

由于黑盒和逃逸设置,GIA需要借助代理模型进行迁移攻击。首先,训练代理模型;其次,对该模型进行注入攻击;最后,攻击迁移到一个或多个目标模型上。

为了处理大规模数据集,GIA可以根据其定义分为两个步骤。首先,生成现有节点和注入节点 ( A I , V ) (\mathbf { A } _ { I } ,V) (AI,V)之间的边;其次,优化注入节点的特征。这种分解可以大大降低复杂性,并使GIA适用于大型图。

目标模型可以 M M M可以是任何图机器学习模型,本文的重点是以图神经网络为目标模型。

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44809488/article/details/127174003

智能推荐

while循环&CPU占用率高问题深入分析与解决方案_main函数使用while(1)循环cpu占用99-程序员宅基地

文章浏览阅读3.8k次,点赞9次,收藏28次。直接上一个工作中碰到的问题,另外一个系统开启多线程调用我这边的接口,然后我这边会开启多线程批量查询第三方接口并且返回给调用方。使用的是两三年前别人遗留下来的方法,放到线上后发现确实是可以正常取到结果,但是一旦调用,CPU占用就直接100%(部署环境是win server服务器)。因此查看了下相关的老代码并使用JProfiler查看发现是在某个while循环的时候有问题。具体项目代码就不贴了,类似于下面这段代码。​​​​​​while(flag) {//your code;}这里的flag._main函数使用while(1)循环cpu占用99

【无标题】jetbrains idea shift f6不生效_idea shift +f6快捷键不生效-程序员宅基地

文章浏览阅读347次。idea shift f6 快捷键无效_idea shift +f6快捷键不生效

node.js学习笔记之Node中的核心模块_node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是-程序员宅基地

文章浏览阅读135次。Ecmacript 中没有DOM 和 BOM核心模块Node为JavaScript提供了很多服务器级别,这些API绝大多数都被包装到了一个具名和核心模块中了,例如文件操作的 fs 核心模块 ,http服务构建的http 模块 path 路径操作模块 os 操作系统信息模块// 用来获取机器信息的var os = require('os')// 用来操作路径的var path = require('path')// 获取当前机器的 CPU 信息console.log(os.cpus._node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是

数学建模【SPSS 下载-安装、方差分析与回归分析的SPSS实现(软件概述、方差分析、回归分析)】_化工数学模型数据回归软件-程序员宅基地

文章浏览阅读10w+次,点赞435次,收藏3.4k次。SPSS 22 下载安装过程7.6 方差分析与回归分析的SPSS实现7.6.1 SPSS软件概述1 SPSS版本与安装2 SPSS界面3 SPSS特点4 SPSS数据7.6.2 SPSS与方差分析1 单因素方差分析2 双因素方差分析7.6.3 SPSS与回归分析SPSS回归分析过程牙膏价格问题的回归分析_化工数学模型数据回归软件

利用hutool实现邮件发送功能_hutool发送邮件-程序员宅基地

文章浏览阅读7.5k次。如何利用hutool工具包实现邮件发送功能呢?1、首先引入hutool依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.19</version></dependency>2、编写邮件发送工具类package com.pc.c..._hutool发送邮件

docker安装elasticsearch,elasticsearch-head,kibana,ik分词器_docker安装kibana连接elasticsearch并且elasticsearch有密码-程序员宅基地

文章浏览阅读867次,点赞2次,收藏2次。docker安装elasticsearch,elasticsearch-head,kibana,ik分词器安装方式基本有两种,一种是pull的方式,一种是Dockerfile的方式,由于pull的方式pull下来后还需配置许多东西且不便于复用,个人比较喜欢使用Dockerfile的方式所有docker支持的镜像基本都在https://hub.docker.com/docker的官网上能找到合..._docker安装kibana连接elasticsearch并且elasticsearch有密码

随便推点

Python 攻克移动开发失败!_beeware-程序员宅基地

文章浏览阅读1.3w次,点赞57次,收藏92次。整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热——Python。得益于其针对机器学习提供了大量开源框架和第三方模块,内置..._beeware

Swift4.0_Timer 的基本使用_swift timer 暂停-程序员宅基地

文章浏览阅读7.9k次。//// ViewController.swift// Day_10_Timer//// Created by dongqiangfei on 2018/10/15.// Copyright 2018年 飞飞. All rights reserved.//import UIKitclass ViewController: UIViewController { ..._swift timer 暂停

元素三大等待-程序员宅基地

文章浏览阅读986次,点赞2次,收藏2次。1.硬性等待让当前线程暂停执行,应用场景:代码执行速度太快了,但是UI元素没有立马加载出来,造成两者不同步,这时候就可以让代码等待一下,再去执行找元素的动作线程休眠,强制等待 Thread.sleep(long mills)package com.example.demo;import org.junit.jupiter.api.Test;import org.openqa.selenium.By;import org.openqa.selenium.firefox.Firefox.._元素三大等待

Java软件工程师职位分析_java岗位分析-程序员宅基地

文章浏览阅读3k次,点赞4次,收藏14次。Java软件工程师职位分析_java岗位分析

Java:Unreachable code的解决方法_java unreachable code-程序员宅基地

文章浏览阅读2k次。Java:Unreachable code的解决方法_java unreachable code

标签data-*自定义属性值和根据data属性值查找对应标签_如何根据data-*属性获取对应的标签对象-程序员宅基地

文章浏览阅读1w次。1、html中设置标签data-*的值 标题 11111 222222、点击获取当前标签的data-url的值$('dd').on('click', function() { var urlVal = $(this).data('ur_如何根据data-*属性获取对应的标签对象

推荐文章

热门文章

相关标签