目录
用GAN生成adversarial samples, 且不需要样本(AdvGAN需要).
AT-GAN的训练过程主要分成俩步, 首先, 生成一个普通的条件GAN, 接着在这个条件GAN的基础上训练一个AT-GAN.
\(x\): 样本;
\(y\):标签;
\(\mathcal{S}_y\): 标签为\(y\)为图像;
\(z\):随机噪声;
\(G(z, y)\): 生成器;
\(D:x\rightarrow \mathbb{R}\): 判别器;
\(f(x)\): 分类器;
首先, 我们需要训练一个普通的条件GAN, 为此, 关于\(G\)的损失函数为
\[\tag{11}
L_G(z,y)=\mathbb{E}_{z \sim p_z(z)} H(D(G(z,y)),1) + \mathbb{E}_{z \sim p_z(z)} H(f(G(z,y)),y),
\]
其中\(H(a,b)\)是a和b的熵(应该是指交叉熵吧, 当二分类是就是二分类熵). 显然这个损失就是希望生成器生成的图片既真实, 其标签亦为真实的标签.
关于判别器\(D\)的损失则是
\[\tag{12}
L_D(x, z, y) = \mathbb{E}_{x \sim p_{data}(x)} H(D(x), 1)+\mathbb{E}_{z \sim p_z(z)} H(D(G(z,y),0).
\]
关于分类器的损失则是
\[\tag{13}
L_f(x,y) = \mathbb{E}_{x \sim p_{data}(x)} H(f(x),y).
\]
注: 三者分别关于\(G,D,f\)最小化(虽然作者没有明讲).
假设由上面的算法生成的生成器为\(G_{\mathrm{original}}\), 并给定我们希望攻破的分类器\(f_{\mathrm{target}}\), 我们要构建一个新的分类器\(G_{\mathrm{attack}}\)去生成对抗样本. 显然, \(G_{\mathrm{attack}}\)需要满足:
\[\| G_{\mathrm{original}}(z, y)-G_{\mathrm{attack}} (z,y)\|_p
\]
足够小;
2. 其生成的图像能够骗过目标分类器\(f_{\mathrm{target}}\), 最好是存在一个一一映射\(g\), 使得
\[f_{\mathrm{target}}(G_{\mathrm{attack}}(z, y)) \not =y, \: g(f_{\mathrm{target}}(G_{\mathrm{attack}}(z, y)))=y.
\]
于是作者构建了俩个损失:
\[\tag{15}
L_a(z,y)=H(g(f_{\mathrm{target}} (G_{\mathrm{attack}} (z,y))),y),
\]
\[\tag{16}
L_d (z,y) = \|G_{\mathrm{orginal}} (z,y)+P-G_{\mathrm{attack}}(z,y)\|_p,
\]
其中\(g\)是我们给定的可逆函数. 显然\(L_a\)的目的是骗过目标分类器, 而\(L_d\)的目的是使得生成的样本具有足够的真实性, 另外\(P\)是额外加入的高斯噪声, 用于柔化距离(?).
于是训练\(G_{\mathrm{attack}}\)就是最小化下式
\[\tag{17}
L(z, y)=\alpha L_{d}(z,y)+\beta L_a (z,y).
\]
注: \(G_{\mathrm{attack}}\)的参数初始化为\(G_{\mathrm{orginal}}\).
手机扫一扫
移动阅读更方便
你可能感兴趣的文章