干货 | 攻击AI模型之FGSM算法

2018 年 6 月 6 日 AI科技评论

本文将为您揭开白盒攻击中鼎鼎大名的FGSM(Fast Gradient Sign Method)算法的神秘面纱!

AI 科技评论按:本文为“兜哥带你学安全”系列之二,首发于AI科技评论,未经许可不得转载。

概述

在前面文章《对抗样本的基本原理》中,我们介绍了生成对抗样本的基本思路,其中大体思路分为白盒攻击和黑盒攻击,区别在于黑盒测试把模型当做黑盒,只能输入样本获得预测结果,白盒在黑盒的基础上还可以获取模型的参数、梯度等信息。本文将介绍白盒攻击中鼎鼎大名的FGSM(Fast Gradient Sign Method)算法。

FGSM基本原理

FGSM最早由Goodfellow在其论文《Explaining and Harnessing Adversarial Examples》中提出。以最常见的图像识别为例,我们希望在原始图片上做肉眼难以识别的修改,但是却可以让图像识别模型产生误判。假设图片原始数据为x,图片识别的结果为y,原始图像上细微的变化肉眼难以识别,使用数学公式表示如下。

将修改后的图像输入分类模型中,x与参数矩阵相乘。

对分类结果的影响还要受到激活函数的作用,攻击样本的生成过程就是追求以微小的修改,通过激活函数的作用,对分类结果产生最大化的变化。Goodfellow指出,如果我们的变化量与梯度的变化方向完全一致,那么将会对分类结果产生最大化的变化。

其中sign函数可以保证与梯度函数方向一致。

当x的维数为n时,模型的参数在每个维度的平均值为m,每个维度的微小修改与梯度函数方向一致,累计的效果为:

可见当原始数据的维度越大,攻击的累计效果越明显。以一个更加直观的例子来说明FGSM的原理。假设具有2000个样本,每个数据具有1000维,每维的数据的数值的大小都在0-1之间随机生成,分类标签只有2种。

分类模型是一个非常简单的多层感知机,输入层大小为1000,输出层为1,激活函数为sigmoid。

sigmoid函数是非常经典的激活函数,取值范围为0-1,特别适合表示概率分布。


损失函数使用最简单的mse,优化方式使用adam,考核的指标为准确度accuracy。

完整的模型结果如下。

批处理大小为16,经过20轮训练。

model.fit(x,y,epochs=20,batch_size=16)

最终训练结果,损失值稳定在0.17-0.18之间,准确度为80.85%。

由于数据是随机生成的,我们取0号举例,

0号数据的标签为0,内容截取如下,预测的值为0.296199。

获取x0对应的梯度。

当e取0.1时,FGSM计算的最终偏移值绝对值为0.1,即在每个维度增加或者减少0.1,具体值截取如下。


叠加完得到新的x0值,由于修改量较小,可以认为对原始数据修改不大,但是预测值达到了0.984356,可以认为标签从0变成了1。

攻击图像识别模型

以攻击InceptionV3模型为例,介绍生成攻击样本的基本原理。Keras内置了这个模型,我们直接使用就可以了。从模型中直接获取第一层的输入作为输入层,最后一层的输出为输出层。

然后加载我们攻击的图片,比如我们的小猪。这里需要特别强调的是,NumPy出于性能考虑,默认的变量赋值会引用同样一份内存,所以我们需要使用np.copy手工强制复制一份图像数据。

为了避免图像变化过大,超过肉眼可以接受的程度,我们需要定义阈值。

下面我们要定义最关键的三个函数了,我们定义损失函数为识别为烤面包机的概率,因此我们需要使用梯度上升算法,不断追求损失函数的最大化,变量objecttypeto_fake定义的就是烤面包机对应的标签,在InceptionV3中面包机的标签为859。

object_type_to_fake = 859

有了损失函数以后,我们就可以通过Keras的接口获取到对应的梯度函数。最后通过K.function获取一个Keras函数实例,该函数的输入列表分别为输入层和当前是训练模式还是测试模式的标记learning_phase(),输出列表是损失函数和梯度。关于K.function的使用建议阅读Keras的在线文档。

除了迭代环节,FGSM与基于梯度上升的算法完全相同。在迭代环节,我们通过NumPy的sign函数对梯度进行处理,然后迭代更新图片内容。

在我的Mac本经过2分钟16次迭代训练,获得了新的家猪图像,但是机器学习模型识别它为烤面包机的概率却达到了74.31%,迭代次数明显减少。

batch:11 Cost: 2.7044188%
batch:12 Cost: 16.616838%
batch:13 Cost: 38.806009%
batch:14 Cost: 52.693129%
batch:15 Cost: 38.372087%
batch:16 Cost: 74.312818%

基于FGSM算法被识别为烤面包机的家猪(概率为74.31%)的图片效果如下。

由于我们设置的退出条件是概率大于60%,所以FGSM没有继续迭代下去,我们通过设置阈值可以得到概率更大的图片,在进一步的实验中我们通过37次迭代得到了概率为99.56%的攻击图片。

batch:34 Cost: 97.030985%
batch:35 Cost: 90.346575%
batch:36 Cost: 63.920081%
batch:37 Cost: 99.558592%

基于FGSM算法被识别为烤面包机的家猪(概率为99.56%)的图片效果如下。

Ian Goodfellow在他的论文《Adversarial examples in the physical world》中指出,针对图像的攻击方式在现实生活中也可以发生,攻击图片经过拍照打印后依然可以欺骗图像分类模型,系统错把“洗衣机”标签为“保险箱”。

参考文献

  • Ian J. Goodfellow, Jonathon Shlens & Christian Szegedy,Explaining and Harnessing Adversarial Examples,arXiv:1412.6572

  • Alexey Kurakin, Ian Goodfellow, Samy Bengio,Adversarial examples in the physical world,arXiv:1607.02533

  • https://baike.baidu.com/item/sign/115763

  • 刘焱,《web安全之强化学习与GAN》,机械工业出版社

对了,我们招人了,了解一下?

BAT资深算法工程师独家研发课程

最贴近生活与工作的好玩实操项目

班级管理助学搭配专业的助教答疑

学以致用拿offer,学完即推荐就业

扫码或点击阅读原文了解一下!

┏(^0^)┛欢迎分享,明天见!

登录查看更多
0

相关内容

【Google】平滑对抗训练,Smooth Adversarial Training
专知会员服务
49+阅读 · 2020年7月4日
【干货书】机器学习Python实战教程,366页pdf
专知会员服务
344+阅读 · 2020年3月17日
【综述】基于图的对抗式攻击和防御,附22页论文下载
专知会员服务
69+阅读 · 2020年3月5日
【Google AI】开源NoisyStudent:自监督图像分类
专知会员服务
55+阅读 · 2020年2月18日
【浙江大学】对抗样本生成技术综述
专知会员服务
92+阅读 · 2020年1月6日
深度学习面试100题(第41-45题)
七月在线实验室
15+阅读 · 2018年7月18日
L2正则化视角下的对抗样本
论智
3+阅读 · 2018年7月8日
干货 | 对抗样本的基本原理
AI科技评论
7+阅读 · 2018年6月9日
干货|深度神经网络(DNN)反向传播算法(BP)
全球人工智能
7+阅读 · 2018年1月12日
产生和防御对抗样本的新方法 | 分享总结
AI研习社
7+阅读 · 2018年1月6日
干货|代码原理教你搞懂SGD随机梯度下降、BGD、MBGD
机器学习研究会
12+阅读 · 2017年11月25日
干货 | 深度学习之卷积神经网络(CNN)的前向传播算法详解
机器学习算法与Python学习
9+阅读 · 2017年11月17日
干货|浅谈神经网络中激活函数的设计
机器学习研究会
5+阅读 · 2017年10月28日
干货 | 深度学习之损失函数与激活函数的选择
机器学习算法与Python学习
15+阅读 · 2017年9月18日
Adversarial Mutual Information for Text Generation
Arxiv
13+阅读 · 2020年6月30日
Learning in the Frequency Domain
Arxiv
11+阅读 · 2020年3月12日
Deflecting Adversarial Attacks
Arxiv
8+阅读 · 2020年2月18日
Interpretable Adversarial Training for Text
Arxiv
5+阅读 · 2019年5月30日
A Probe into Understanding GAN and VAE models
Arxiv
9+阅读 · 2018年12月13日
Arxiv
5+阅读 · 2018年1月30日
VIP会员
相关资讯
深度学习面试100题(第41-45题)
七月在线实验室
15+阅读 · 2018年7月18日
L2正则化视角下的对抗样本
论智
3+阅读 · 2018年7月8日
干货 | 对抗样本的基本原理
AI科技评论
7+阅读 · 2018年6月9日
干货|深度神经网络(DNN)反向传播算法(BP)
全球人工智能
7+阅读 · 2018年1月12日
产生和防御对抗样本的新方法 | 分享总结
AI研习社
7+阅读 · 2018年1月6日
干货|代码原理教你搞懂SGD随机梯度下降、BGD、MBGD
机器学习研究会
12+阅读 · 2017年11月25日
干货 | 深度学习之卷积神经网络(CNN)的前向传播算法详解
机器学习算法与Python学习
9+阅读 · 2017年11月17日
干货|浅谈神经网络中激活函数的设计
机器学习研究会
5+阅读 · 2017年10月28日
干货 | 深度学习之损失函数与激活函数的选择
机器学习算法与Python学习
15+阅读 · 2017年9月18日
相关论文
Adversarial Mutual Information for Text Generation
Arxiv
13+阅读 · 2020年6月30日
Learning in the Frequency Domain
Arxiv
11+阅读 · 2020年3月12日
Deflecting Adversarial Attacks
Arxiv
8+阅读 · 2020年2月18日
Interpretable Adversarial Training for Text
Arxiv
5+阅读 · 2019年5月30日
A Probe into Understanding GAN and VAE models
Arxiv
9+阅读 · 2018年12月13日
Arxiv
5+阅读 · 2018年1月30日
Top
微信扫码咨询专知VIP会员