对抗样本简介

一、什么是对抗样本

  对抗样本是一类被恶意设计来攻击机器学习模型的样本。它们与真实样本的区别几乎无法用肉眼分辨,但是却会导致模型进行错误的判断。对抗样本的存在会使得深度学习在安全敏感性领域的应用收到威胁。
  如下图所示,通过在自然图片上加入一些人工噪声来“欺骗”神经网络,使得神经网络输出错误的预测结果。
在这里插入图片描述
  以经典的二分类问题为例,机器学习模型通过在样本上训练,学习出一个分割平面,在分割平面的一侧的点都被识别为类别一,在分割平面的另外一侧的点都被识别为类别二。生成攻击样本时,我们通过某种算法,针对指定的样本计算出一个变化量,该样本经过修改后,从人类的感觉无法辨识,但是却可以让该样本跨越分割平面,导致机器学习模型的判定结果改变。
在这里插入图片描述

二、对抗样本攻击方法

1. Fast gradient sign method (FGSM)
  Goodfellow等人认为高维空间下深度神经网络的线性行为是导致该问题(存在对抗样本)的根本原因。提出了一种一步生成法来快速生成对抗样本,可以有效计算对抗扰动。
x^’=x + εsgn(∇_x L(θ,x,y)) non-target
x^’=x - εsgn(∇_x L(θ,x,y)) target on t
η = εsgn(∇_x L(θ,x,y))
x:原始图像
η:扰动
ε:表示控制扰动大小的自定义参数
L:损失函数
sgn:符号函数
FGSM的核心思想:通过让扰动方向与梯度方向一致,使损失函数值变化最大,进而使分类器分类结果变化最大。sign函数保证了扰动方向与梯度方向一致;对损失函数求偏导。
FGSM优缺点:优点是只需一步迭代就能生成对抗样本,并且可以通过控制参数ε生成任意L∞ 范数距离的对抗样本;缺点是扰动自身抗干扰能力不强,容易受到其他噪声的影响; 另外,模型损失函数与模型输入并不是完全线性的,这说明该算法生成的对抗样本扰动不是最优扰动。

2. DeepFool
  Moosavi-Dezfooli 等人通过迭代计算的方法生成能够使分类器模型产生误识别的最小规范对抗扰动,将位于分类边界内的图像逐步推到边界外,直到出现错误分类。
Deepfool的核心思想:Deepfool 算法生成对抗样本过程与使用 L-BFGS 生成对抗样本过程类似,主要区别是: Deepfool 算法每次迭代都计算当前样本和各决策边界的距离,然后选择向最近的决策边界迭代生成扰动。
Deepfool优缺点:优点是生成的扰动比 FGSM 更小,同时有相似的欺骗率。缺点是需要重复计算距离,多维数据计算量很大。

3. Carlini & Wagner′s attack(C&W)
  Carlini 和 Wagne提出了三种对抗攻击方法,通过限制 L∞、L2 和 L0 范数使得扰动无法被察觉。实验证明 defensive distillation (防御性蒸馏)完全无法防御这三种攻击。该算法生成的对抗扰动可以从 unsecured 的网络迁移到 secured 的网络上,从而实现黑盒攻击。
C&W的核心思想:C&W是一种基于目标函数优化的对抗样本攻击算法,算法假设对抗样本是一个变量,那么要使其成功攻击分类器模型,必须满足两个条件,一是其与原始样本的距离要尽可能的小,二是其能够误导分类器模型对其进行错误分类。

4. Jacobian-based saliency map attack(JSMA)
  基于雅可比矩阵的显着性图攻击(JSMA)介绍了一种基于计分函数F的雅可比矩阵的方法。 通过迭代操纵对模型输出影响最大的像素,可以将其视为贪婪攻击算法。
JSMA的核心思想:对抗攻击文献中通常使用的方法是限制扰动的 L∞或 L2 范数的值以使对抗样本中的扰动无法被人察觉。但 JSMA提出了限制 L0 范数的方法,即仅改变几个像素的值,而不是扰动整张图像。

5. Basic iterative method (BIM)/Projected gradient descent (PGD) attack
  针对 FGSM 算法存在的问题, Kurakin 等人[15,31]在 FGSM 算法基础上提出了一种以多步迭代的方式生成对抗样本的方法 BIM。
核心思想:one-step 方法通过一大步运算增大分类器的损失函数而进行图像扰动,因而可以直接将其扩展为通过多个小步增大损失函数的变体,从而我们得到 Basic Iterative Methods(BIM)

三、防御方法

目前,在对抗攻击防御上存在三个主要方向:
1.在学习过程中修改训练过程或者修改的输入样本
①蛮力对抗训练
  通过不断输入新类型的对抗样本并执行对抗训练,从而不断提升网络的鲁棒性。为了保证有效性,该方法需要使用高强度的对抗样本,并且网络架构要有充足的表达能力。这种方法需要大量的训练数据,因而被称为蛮力对抗训练。很多文献中提到这种蛮力的对抗训练可以正则化网络以减少过拟合。然而,Moosavi-Dezfooli指出,无论添加多少对抗样本,都存在新的对抗攻击样本可以再次欺骗网络。
②数据压缩
  注意到大多数训练图像都是 JPG 格式,Dziugaite等人使用 JPG 图像压缩的方法,减少对抗扰动对准确率的影响。实验证明该方法对部分对抗攻击算法有效,但通常仅采用压缩方法是远远不够的,并且压缩图像时同时也会降低正常分类的准确率,后来提出的 PCA 压缩方法也有同样的缺点。

2.修改网络,比如:添加更多层/子网络、改变损失/激活函数等
①深度压缩网络
  人们观察到简单地将去噪自编码器(Denoising Auto Encoders)堆叠到原来的网络上只会使其变得更加脆弱,因而 Gu 和 Rigazio[24] 引入了深度压缩网络(Deep Contractive Networks),其中使用了和压缩自编码器(Contractive Auto Encoders)类似的平滑度惩罚项。
②梯度正则化/ masking
  使用输入梯度正则化以提高对抗攻击鲁棒性 [52],该方法和蛮力对抗训练结合有很好的效果,但计算复杂度太高。

3.当分类未见过的样本时,用外部模型作为附加网络
①防御通用扰动
  利用一个单独训练的网络加在原来的模型上,从而达到不需要调整系数而且免疫对抗样本的方法。
②基于 GAN 的防御
  用 GAN 为基础的网络可以抵抗对抗攻击,而且作者提出在所有模型上用相同的办法来做都可以抵抗对抗样本。

四、参考

[1]如何看待机器视觉的“对抗样本”问题,其原理是什么?
[2]对抗样本的基本原理
[3]生成对抗样本的方法|攻击方法
[4]学界 | 综述论文:对抗攻击的12种攻击方法和15种防御方法

  • 7
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
gan对抗样本代码是指用生成对抗网络(GAN)生成对抗样本的实现代码。 GAN是一种机器学习模型,由生成器和判别器组成,能够生成逼真的图像和数据。GAN对抗样本指的是通过对抗学习的方式,生成与原始训练样本相似但能够对抗分类模型的样本。 实现GAN对抗样本的代码通常可以分为以下几个步骤: 1. 数据准备:首先需要准备原始的训练数据集,该数据集包含了各类别的正样本。 2. GAN模型搭建:根据具体的需求,搭建生成器和判别器的网络结构。生成器通常使用反卷积网络,判别器使用卷积网络。可以使用深度学习框架如TensorFlow或PyTorch来创建模型。 3. 训练GAN模型:使用原始数据集对GAN模型进行训练。训练的目标是使生成器生成的样本尽可能接近真实样本,而判别器能够准确区分真实样本和生成样本。训练过程中,需要分别更新生成器和判别器的参数。 4. 生成对抗样本:在训练好的GAN模型中,可以使用生成器来生成对抗样本。输入一些噪声或随机向量作为输入,生成器将生成与原始样本相似但对抗分类器的样本。 5. 对抗样本测试和攻击:生成的对抗样本可以用于测试和攻击分类模型。将对抗样本输入到分类模型中,观察其分类结果。对抗样本测试的目的是为了评估分类模型对对抗样本的鲁棒性。 以上是关于GAN对抗样本代码的基本流程。根据实际需求和具体的数据集,代码实现可能会有所差异,但以上步骤是大致的框架。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值