©PaperWeekly 原创 · 作者|孙裕道
学校|北京邮电大学博士生
研究方向|GAN图像生成、情绪对抗样本生成
引言
对抗样本的生成方式很多。一般情况下会分成三大类,第一种是基于梯度的生成方式如 FGSM 和 PGD,第二种是基于优化的生成方式如 CW 和 JSMA,第三种就是基于 GAN 的生成方式。本文会主要详解近几年来有关 GAN 生成对抗样本的各种方法。
对抗样本的介绍
对抗样本攻击模型主要从两个角度进行考虑:分别为攻击的目标和攻击的背景知识。攻击的目标可以分为四类:
减少置信度:减小输入分类的置信度,从而引起歧义。
无目标分类:将输出分类更改为与原始类不同的任何类。
有目标分类:强制将输出分类为特定的目标类。
源到目的分类:强制将特定的输入的输出分类为特定的目标类。
攻击的背景知识可以分为五类:
网络结构与训练数据:最强大的背景知识,包训练数据以及模型的详细参数信息。网络结构:了解目标模型的网络组成细节。
训练数据:了解生成目标模型的训练数据。
输入到输出映射:攻击者可以访问模型提供的 API 接口,输入数据并获得反馈,并且可以观察到输入和输出的变化之间的关系。
完全黑箱:攻击者无法获得模型 API 的反馈,不能观察到输入和输出的变化之间的关系。
将攻击目标和攻击的背景知识整合可以如上示意图。GAN 生成对抗样本的方式一般不需要获取太多的背景知识,适用于攻击难度较高的半白盒攻击,半黑盒攻击和黑盒攻击。
AdvGAN
论文标题:Generating Adversarial Examples with Adversarial Networks
论文来源:IJCAI 2018
论文链接:https://arxiv.org/abs/1801.02610
代码链接:https://github.com/mathcbc/advGAN_pytorch
3.1 模型介绍
AdvGAN 的核心思想是将干净样本通过 GAN 的生成器映射成对抗扰动,然后加在对应的干净样本中,判别器负责判别输入的样本是否为对抗样本。
上图为 AdvGAN 的总体架构,主要由三部分组成:生成器 G、判别器 D 和目标神经网络 C。将干净样本 x 输入到 G 中生成对抗扰动 G(x)。然后将 x+G(x) 发送给判别器 D,用于区分生成的样本和原始干净的样本,判别器 D 的目的是鼓励生成的实例与原始类中的数据不可区分。
为了实现愚弄学习模型的目标,再将生成的数据 x+G(x) 输入到目标分类模型 C 中,其中输出的损失为 ,表示预测与目标类别 t 目标攻击之间的距离。优化目标损失函数,当模型达到最优时,G(x) 即为对抗扰动。
目标损失可以分解为三部分分别为: , , ,表示为:
为对抗损失,即为 Goodfellow 在 2014 年提出来的原始形式。
判别器 的目的是将扰动数据 与原始数据 区分开来。其中数据 是从真实数据中取样的,优化对抗损失的目的是鼓励生成的数据分布接近原始类的数据的分布。