[论文阅读笔记]Adversarial Transformation Networks: Learning to Generate Adversarial Examples

提出一种新的对抗样本生成方法——Adversarial Transformation Networks (ATNs),通过训练深度网络将原图转化为对抗样本,优化目标旨在最小化图像失真度并提高攻击成功率。

Adversarial Transformation Networks: Learning to Generate Adversarial Examples

在现有的许多方法中,利用梯度信息进行攻击的方法占绝大多数,本文另辟蹊径,提出了另一种方法:训练一个深度网络,将原图作为输入,输出为对抗样本。


其优化目标为:
arg⁡min⁡θ∑Xi∈χβLχ(gf,θ(Xi),Xi)+LY(f(gf,θ(Xi)),f(Xi)) \mathop{\arg\min}\limits_{\theta} \sum_{X_i \in \chi} {\beta L_{\chi}(g_{f,\theta}(X_i),X_i)+L_{Y}(f(g_{f,\theta}(X_i)),f(X_i))} θargminXiχβLχ(gf,θ(Xi),Xi)+LY(f(gf,θ(Xi)),f(Xi))
其中f(X)f(X)f(X)是训练好用于分类的网络,也就是我们要攻击的网络。 gf,θ(X)g_{f,\theta}(X)gf,θ(X)就是我们需要产生的深度网络,输入原图像XXX,输出对抗图像X′X'X
gf,θ(X):X∈χ→X′ g_{f,\theta}(X): X \in \chi \rightarrow X' gf,θ(X):XχX
LχL_{\chi}Lχ是一个损失函数,文中为L2 LossL_2 \ LossL2 Loss, β\betaβ是比例系数,LY,t(y′,y)L_{Y,t}(y', y)LY,t(y,y)定义为
LY,t=L2(y′,r(y,t)) L_{Y,t} = L_2(y', r(y, t)) LY,t=L2(y,r(y,t))
其中r(y,t) 是reranking公式,其表达式为

其作用就是把输出的每一类的得分进行修改,对于我们想要网络误判我们的对抗样本为某个类ttt,就把其在原网络中的得分乘以一个倍数,且α>1\alpha > 1α>1,而其他类的得分保持不变。因此该目标其实是想达到一个目的,以MNIST作为假设,也就是若我们初始的每个分类的得分按从大到小排序为[3,8,5,0,4,1,9,7,6,2],在我们攻击后期待结果假设为7的话,则每个分类的得分按从大到小排序则为[7,3,8,5,0,4,1,9,6,2],即保持其他类别的分类置信度大小顺序不变,只把攻击的目标类置信度提高到最大。这么做的好处在于,在一定程度上另对抗样本更接近原样本,因为Top-2的预测结果是真实标签。


本文采用了2种生成方法

对于优化目标中β\betaβ的选择,可以发现,β\betaβ越小,图像失真度就会越大,如下图

但是,针对某个想要攻击的Model而训练出来的ATNs产生的对抗样本不具有普遍性,即针对想要攻击的Model其攻击成功概率比较高,而其他模型则未必.比如下面的ClassifierpClassifier_pClassifierpClassifiera0Classifier_{a0}Classifiera0这两个网络架构甚至是完全一样的,但攻击效果却天差地别。但是我们可以发现第二行,即在输出的置信度中排第2的的准确率却非常高且稳定,这说明我们的ATNs成功地把输出的置信度中,原本排第1的(真实类别),成功排到了第2,即图像变化比较细微,没有大规模的改变。
[NOTE]:conditional表示在攻击成功的前提下,TOP-2是真实标签的概率;unconditional则无攻击成功的约束

于是作者考虑在攻击时,同时选择多个Model进行攻击,训练方式与之前大致相同,只是在此时LYL_YLY需要同时对多个Model分别进行计算,再最小化。其结果如下

可以发现,攻击训练时包括的模型时,其攻击成功概率大大提升,且还增加了对其他未包括的模型的攻击泛化能力。因此,如果在训练时加入大量的模型进行攻击,其产生的对抗样本的迁移能力是有很大的概率得到提升的




以上都是黑盒攻击,接下来考虑白盒攻击


对于白盒攻击,我们的ATN需要额外获得的信息为

  1. 模型C的输出结果,从而产生新的目标向量
  2. 产生的新的目标向量在模型C的错误反向传播结果
  3. 隐藏层的输出结果(考虑到参数太多,文中选的是C中倒数第2层的FC结果)

其中Table 6是白盒训练的结果,相比于黑盒训练的Table 2,有趣的是,最显著的变化在于conditional Top-2概率明显提升。这可能是因为加入了真实图片在已知模型的内部输出,所以帮助了其提升精确度。




2种方法产生的生成的对抗样本区别

  1. AAE方法中许多原始的高频模式被对抗性信号的高频所取代。即看上去整体变化比较明显。
  2. P-ATN方法则保留了原本图片的大致信息(肉眼无法察觉),但会在总会在图像边缘或者角落看到较明显的扰动。
  3. 即使采用相同的初始化参数,相同的生成网络(第1张图和第4张图),产生的对抗样本也区别很大。

由于这些笔记是之前整理的,所以可能会参考其他博文的见解,如果引用了您的文章的内容请告知我,我将把引用出处加上~
如果觉得我有地方讲的不好的或者有错误的欢迎给我留言,谢谢大家阅读(
点个赞我可是会很开心的哦)~

### 使用对抗网络生成对抗样本的方法 对抗样本是指那些经过精心设计,在视觉上几乎无法察觉的变化被施加到原始输入上的样例,这些变化可以使机器学习模型做出错误预测。对于基于生成对抗网络(GAN)的图像对抗样本生成方法而言,核心思路是在已有GAN架构基础上调整优化目标函数,使得生成器产生的样本不仅看起来真实而且能误导特定的目标分类器。 #### 方法概述 为了实现这一目的,通常会采用如下策略: - **引入额外损失项**:除了原有的生成器与判别器之间的博弈外,还需加入一个新的约束条件——即让生成的数据尽可能使给定的目标分类器犯错。这可以通过修改生成器的损失函数来完成,具体来说就是增加一项衡量目标分类器对伪造样本误分类程度的新指标[^1]。 - **微调超参数**:由于涉及到两个不同的任务(欺骗判别器和攻击其他分类器),因此可能需要仔细调节一些超参数以平衡两者的重要性并获得最佳效果。 #### 实现过程中的注意事项 当尝试构建这样的系统时,有几个方面值得注意: - 数据集的选择应当充分考虑到所要攻击的具体应用场景; - 需要确保用于训练的基础GAN已经收敛良好,可以稳定地产出高质量图片; - 对抗扰动的程度应控制在一个合理范围内,既不能太弱以至于不起作用也不能过强而破坏了原图特征; 下面给出一段简单的Python代码片段作为示例说明如何利用预训练好的生成器创建对抗样本: ```python import numpy as np from keras.models import load_model # 加载已训练完毕的生成器模型 generator = load_model('path_to_generator.h5') # 准备随机噪声向量作为输入 noise = np.random.normal(0, 1, (batch_size, latent_dim)) # 调整生成器行为使其专注于制造可导致指定分类器失误的结果 adversarial_samples = generator.predict(noise) # 将生成的对抗样本保存下来以便后续分析或测试使用 np.save('generated_adversarial_samples.npy', adversarial_samples) ``` 此段代码假设读者已经有了一个预先训练好并且表现良好的生成器`generator`以及适当设置过的批量大小`batch_size`和潜在空间维度`latent_dim`。实际应用中还需要根据具体情况进一步完善细节处理逻辑[^2]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值