概
用GAN生成adversarial samples, 且不需要样本(AdvGAN需要).
主要内容
AT-GAN的训练过程主要分成俩步, 首先, 生成一个普通的条件GAN, 接着在这个条件GAN的基础上训练一个AT-GAN.
符号说明
(x): 样本;
(y):标签;
(mathcal{S}_y): 标签为(y)为图像;
(z):随机噪声;
(G(z, y)): 生成器;
(D:x
ightarrow mathbb{R}): 判别器;
(f(x)): 分类器;
Original Generator
首先, 我们需要训练一个普通的条件GAN, 为此, 关于(G)的损失函数为
其中(H(a,b))是a和b的熵(应该是指交叉熵吧, 当二分类是就是二分类熵). 显然这个损失就是希望生成器生成的图片既真实, 其标签亦为真实的标签.
关于判别器(D)的损失则是
关于分类器的损失则是
注: 三者分别关于(G,D,f)最小化(虽然作者没有明讲).
Transfer the Generator
假设由上面的算法生成的生成器为(G_{mathrm{original}}), 并给定我们希望攻破的分类器(f_{mathrm{target}}), 我们要构建一个新的分类器(G_{mathrm{attack}})去生成对抗样本. 显然, (G_{mathrm{attack}})需要满足:
- 其生成的样本与真实样本无异, 即
足够小;
2. 其生成的图像能够骗过目标分类器(f_{mathrm{target}}), 最好是存在一个一一映射(g), 使得
于是作者构建了俩个损失:
其中(g)是我们给定的可逆函数. 显然(L_a)的目的是骗过目标分类器, 而(L_d)的目的是使得生成的样本具有足够的真实性, 另外(P)是额外加入的高斯噪声, 用于柔化距离(?).
于是训练(G_{mathrm{attack}})就是最小化下式
注: (G_{mathrm{attack}})的参数初始化为(G_{mathrm{orginal}}).