手把手教你使用TensorFlow生成对抗样本 | 附源码

2017 年 10 月 13 日 全球人工智能

“全球人工智能”拥有十多万AI产业用户,10000多名AI技术专家。主要来自:北大,清华,中科院,麻省理工,卡内基梅隆,斯坦福,哈佛,牛津,剑桥...以及谷歌,腾讯,百度,脸谱,微软,阿里,海康威视,英伟达......等全球名校和名企。


——免费加入AI技术专家社群>>

——免费加入AI高管投资者群>>

——申请成为AI高校推广大使>>

摘要: 本文使用TensorFlow一步一步生成对抗样本,步骤明确清晰。首先生成的对抗样本不具有旋转鲁棒性,后面使用同样的方法生成具有鲁棒性的对抗样本,适合初学者对生成对抗样本的入门及动手实验。


如果说卷积神经网络是昔日影帝的话,那么生成对抗已然成为深度学习研究领域中一颗新晋的耀眼新星,它将彻底地改变我们认知世界的方式。对抗学习训练为指导人工智能完成复杂任务提供了一个全新的思路,生成对抗图片能够非常轻松的愚弄之前训练好的分类器,因此如何利用生成对抗图片提高系统的鲁棒性是一个很有研究的热点问题。

神经网络合成的对抗样本容易让人大吃一惊,这是因为对输入进行小巧精心制作的扰动可能导致神经网络以任意选择的方式输入进行错误地分类。鉴于对抗样本转移到物世界可以使其变得非常强大因此这是一个值得关注的安全问题。比如说人脸识别,若一张对抗图像也被识别为真人的话,就会出现一些安全隐患及之后带来的巨大损失。对生成对抗图像感兴趣的读者可以关注一下最近的Kaggle挑战赛NIPS,相关的信息可以参看博主的另外一篇:

Kaggle首席技术官发布——(Kaggle)NIPS 2017对抗学习挑战赛起步指南

在这篇文章中,将手把手带领读者利TensorFlow实现一个简单的算法合成对抗样本之后使用这种技术建立一个鲁棒的对抗性例子

本文是一个可执行的Jupyter notebook可以下载并自己实验操作一下示例

建立

我们选择攻击在ImageNet数据集训练的Inception v3网络。首先我们从TF-slim图像分类库加载预先训练的网络。这部分不是很有趣,所以请跳过本部分

首先,设置输入图像。使用tf.Variable而不是使用tf.placeholder这是因为要确保它是可训练的。当我们需要时,仍然可以输入它。

接下来,加载Inception v3模型。

接下来,加载预训练的权重。这个Inception v3top-5确率为93.9%。

接下来,编写一些代码来显示图像,对它进行分类显示分类结果。


示例图像

加载示例图像,并确保它被正确分类。

对抗样本

给定一个图像X,神经网络输出标签上的概率分布P(y|X)。当手工制作对抗输入时,我们想要找到一个X'使得logP(y'|X')被最大化为目标标签y'输入将被错误分类为目标类通过约束一些ℓ∞半径为ε的箱,要求‖X- X'‖∞≤ε我们可以确保X'原始X看起来不太一样

在这个框架中,对抗样本是解决一个约束优化问题,可以使用反向传播投影梯度下降来解决基本上是用训练网络本身相同的技术算法很简单:

首先将对抗样本初始化为X'←X。然后,重复以下过程直到收敛

1. X'←X^+α⋅logP(y'|X')

2. X'←clip(X'X - εX+ε)

初始化

首先从最简单的部分开始:编写一个TensorFlow op进行相应的初始化。

梯度下降步骤

接下来,编写梯度下降步骤以最大化目标类的对数概率(或最小化交叉熵)。

投影步骤

最后,编写投影步骤,使得对抗样本在视觉上与原始图像相似。另外,将其限定[01]范围内保持有效的图像。

执行

最后,准备合成一个对抗样本。我们任意选择鳄梨酱imagenet class 924)作为我们的目标类。

结果如下

这种对抗图像与原始图像在视觉上无法区分,没有可见的人为加工。但是它会以很高的概率分类鳄梨酱

鲁棒的对抗样本

现在来看一个更高级的例子。遵循我们的方法来合成稳健的对抗样本,以找到猫图像的单一扰动,这在某些选择的变换分布下同时对抗可以选择任何可微分变换的分布在这篇文章中,我们将合成一个单一的对抗输入,设置θ∈[- π/4π/4],这对旋转是鲁棒的

继续下面的工作之前,检查一下之前的例子是否能对抗旋转,比如说设置角度为θ=π/8


看起来我们之前生成的对抗样本不是旋转不变的!

那么,如何使一个对抗样本对变换的分布是鲁棒?给定一些换分布T我们可以最大化Et~TlogP(y'|t(X'))约束条件为‖X- X'‖∞≤ε。可以通过投影梯度下降来解决这个优化问题,注意到Et~TlogP(y'|t(X'))Et~TlogP(y'|t(X'))相等并在每个梯度下降步骤中来逼近样本

可以使用一个技巧TensorFlow为我们做到这一点而不是通过手动实现梯度采样得到我们可以模拟基于采样的梯度下降,作为随机分类器的集合中的梯度下降,随机分类器从分布中随机抽取并在分类之前换输入。

我们可以重复使用assign_opproject_step,但为了这个新目标必须写一个新的optim_step

最后,我们准备运行PGD来产生对抗输入。前面的例子一样,选择鳄梨酱作为我们的目标类。

结果如下

这种对抗图像被高度信任地归类为“鳄梨酱”,即使是旋转的情况下

评估

下面来看一下在整个角度范围内产生的鲁棒对抗样本的旋转不变性,看P(y'|x')θ∈[- π/4π/4]

从图中蓝色曲线可以看到,生成的对抗样本是超级有效的。

原文:http://www.anishathalye.com/2017/07/25/synthesizing-adversarial-examples/?spm=5176.100239.blogcont149583.28.NUZKV8

系统学习,进入全球人工智能学院

热门文章推荐

未来 3~5 年内,哪个方向的机器学习人才最紧缺?

中科院步态识别技术:不看脸 50米内在人群中认出你!

厉害|黄仁勋狂怼CPU:摩尔定律已死 未来属于GPU!

干货|7步让你从零开始掌握Python机器学习!

华裔女科学家钱璐璐,发明仅20纳米的DNA机器人!

Geoffrey Hinton提出capsule 概念,推翻反向传播!

2017年7大最受欢迎的AI编程语言:Python第一!

重磅|中国首家人工智能技术学院在京揭牌开学!

厉害 | 南京大学周志华教授当选欧洲科学院外籍院士!

5个月市值涨了1200亿,首次突破3100亿市值!

登录查看更多
11

相关内容

对抗样本由Christian Szegedy等人提出,是指在数据集中通过故意添加细微的干扰所形成的输入样本,导致模型以高置信度给出一个错误的输出。在正则化背景下,通过对抗训练减少原有独立同分布的测试集的错误率——在对抗扰动的训练集样本上训练网络。 对抗样本是指通过在数据中故意添加细微的扰动生成的一种输入样本,能够导致神经网络模型给出一个错误的预测结果。 实质:对抗样本是通过向输入中加入人类难以察觉的扰动生成,能够改变人工智能模型的行为。其基本目标有两个,一是改变模型的预测结果;二是加入到输入中的扰动在人类看起来不足以引起模型预测结果的改变,具有表面上的无害性。对抗样本的相关研究对自动驾驶、智能家居等应用场景具有非常重要的意义。
【中科院自动化所】视觉对抗样本生成技术概述
专知会员服务
35+阅读 · 2020年4月15日
【浙江大学】对抗样本生成技术综述
专知会员服务
89+阅读 · 2020年1月6日
一网打尽!100+深度学习模型TensorFlow与Pytorch代码实现集合
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
160+阅读 · 2019年10月28日
Tensorflow Eager Execution入门指南
专知
6+阅读 · 2018年4月16日
快使用TensorFlow,哼哼哈嘿
图灵教育
5+阅读 · 2018年3月16日
Tensorflow 文本分类-Python深度学习
Python程序员
12+阅读 · 2017年11月22日
如何用TensorFlow和TF-Slim实现图像标注、分类与分割
数据挖掘入门与实战
3+阅读 · 2017年11月17日
深度学习入门篇--手把手教你用 TensorFlow 训练模型
全球人工智能
4+阅读 · 2017年10月21日
手把手教TensorFlow(附代码)
深度学习世界
15+阅读 · 2017年10月17日
干货|生成对抗网络(GAN)之MNIST数据生成
全球人工智能
7+阅读 · 2017年7月24日
Arxiv
5+阅读 · 2019年4月8日
Area Attention
Arxiv
5+阅读 · 2019年2月5日
Foreground-aware Image Inpainting
Arxiv
4+阅读 · 2019年1月17日
Arxiv
4+阅读 · 2018年4月10日
VIP会员
相关资讯
Tensorflow Eager Execution入门指南
专知
6+阅读 · 2018年4月16日
快使用TensorFlow,哼哼哈嘿
图灵教育
5+阅读 · 2018年3月16日
Tensorflow 文本分类-Python深度学习
Python程序员
12+阅读 · 2017年11月22日
如何用TensorFlow和TF-Slim实现图像标注、分类与分割
数据挖掘入门与实战
3+阅读 · 2017年11月17日
深度学习入门篇--手把手教你用 TensorFlow 训练模型
全球人工智能
4+阅读 · 2017年10月21日
手把手教TensorFlow(附代码)
深度学习世界
15+阅读 · 2017年10月17日
干货|生成对抗网络(GAN)之MNIST数据生成
全球人工智能
7+阅读 · 2017年7月24日
相关论文
Arxiv
5+阅读 · 2019年4月8日
Area Attention
Arxiv
5+阅读 · 2019年2月5日
Foreground-aware Image Inpainting
Arxiv
4+阅读 · 2019年1月17日
Arxiv
4+阅读 · 2018年4月10日
Top
微信扫码咨询专知VIP会员