描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111626824
本书系统介绍对抗样本的基本原理,从相关的背景知识开始,包含搭建学习对抗样本的软硬件环境、常用工具,带领读者快速上手实践。本书作者在安全领域有多年实践经验,对业界常见的方法做了系统的归纳总结,包含大量案例,深入浅出,实践性强。本书所有示例代码在GitHub上可以下载:https://github.com/duoergun0729/adversarial_examples
主要内容包括:
·对抗样本相关的深度学习背景知识,如梯度、优化器、反向传递等。
·如何搭建学习对抗样本的软硬件环境。
·对抗样本领域的一些常见图像处理技巧。
·常见的白盒攻击算法与黑盒攻击算法。
·对抗样本在目标检测领域的应用。
·对抗样本的常见加固算法。
·常见的对抗样本工具以及如何搭建NIPS对抗样本竞赛环境。
·如何站在巨人的肩膀上,快速生成自己的对抗样本,进行攻防对抗
第1章介绍了深度学习的基础知识,重点介绍了与对抗样本相关的梯度、优化器、反向传递等知识点。
第2章介绍了如何搭建学习对抗样本的软硬件环境,虽然GPU不是必需的,但是使用GPU可以更加快速地验证你的想法。
第3章概括介绍了常见的深度学习框架,从TensorFlow、Keras、PyTorch到MXNet。
第4章介绍了图像处理领域的基础知识,这部分知识对于理解对抗样本领域的一些常见图像处理技巧非常有帮助。
第5章介绍了常见的白盒攻击算法,从*基础的FGSM、DeepFool到经典的JSMA和CW。
第6章介绍了常见的黑盒攻击算法。
第7章介绍了对抗样本在目标识别领域的应用。
第8章介绍了对抗样本的常见抵御算法,与对抗样本一样,抵御对抗样本的技术也非常有趣。
第9章介绍了常见的对抗样本工具以及如何搭建NIPS 2017对抗防御环境和轻量级攻防对抗环境robust-ml,通过这章读者可以了解如何站在巨人的肩膀上,快速生成自己的对抗样本,进行攻防对抗。
对本书的赞誉
序一
序二
自序
前言
第1章 深度学习基础知识 1
1.1 深度学习的基本过程及相关概念 1
1.1.1 数据预处理 1
1.1.2 定义网络结构 2
1.1.3 定义损失函数 6
1.1.4 反向传递与优化器 7
1.1.5 范数 12
1.2 传统的图像分类算法 13
1.3 基于CNN的图像分类 14
1.3.1 局部连接 14
1.3.2 参数共享 15
1.3.3 池化 17
1.3.4 典型的CNN结构 18
1.3.5 AlexNet的结构 19
1.3.6 VGG的结构 19
1.3.7 ResNet50 20
1.3.8 InceptionV3 20
1.3.9 可视化CNN 20
1.4 常见性能衡量指标 30
1.4.1 测试数据 30
1.4.2 混淆矩阵 31
1.4.3 准确率与召回率 31
1.4.4 准确度与F1-Score 32
1.4.5 ROC与AUC 33
1.5 集成学习 34
1.5.1 Boosting算法 35
1.5.2 Bagging算法 37
1.6 本章小结 39
第2章 打造对抗样本工具箱 40
2.1 Anaconda 41
2.2 APT更新源 45
2.3 Python更新源 45
2.4 Jupyter notebook 45
2.5 TensorFlow 49
2.6 Keras 50
2.7 PyTorch 51
2.8 PaddlePaddle 52
2.9 AdvBox 52
2.10 GPU服务器 52
2.11 本章小结 55
第3章 常见深度学习平台简介 56
3.1 张量与计算图 56
3.2 TensorFlow 58
3.3 Keras 62
3.4 PyTorch 64
3.5 MXNet 67
3.6 使用预训练模型 70
3.7 本章小结 76
第4章 图像处理基础知识 77
4.1 图像格式 77
4.1.1 通道数与像素深度 77
4.1.2 BMP格式 80
4.1.3 JPEG格式 81
4.1.4 GIF格式 81
4.1.5 PNG格式 81
4.2 图像转换 81
4.2.1 仿射变换 81
4.2.2 图像缩放 83
4.2.3 图像旋转 85
4.2.4 图像平移 85
4.2.5 图像剪切 86
4.2.6 图像翻转 87
4.2.7 亮度与对比度 88
4.3 图像去噪 89
4.3.1 高斯噪声和椒盐噪声 90
4.3.2 中值滤波 91
4.3.3 均值滤波 93
4.3.4 高斯滤波 93
4.3.5 高斯双边滤波 94
4.4 本章小结 96
第5章 白盒攻击算法 97
5.1 对抗样本的基本原理 97
5.2 基于优化的对抗样本生成算法 100
5.2.1 使用PyTorch生成对抗样本 102
5.2.5 使用TensorFlow生成对抗样本 106
5.3 基于梯度的对抗样本生成算法 109
5.4 FGM/FGSM算法 110
5.4.1 FGM/FGSM基本原理 110
5.4.2 使用PyTorch实现FGM 111
5.4.3 使用TensorFlow实现FGM 112
5.5 DeepFool算法 115
5.5.1 DeepFool基本原理 115
5.5.2 使用PyTorch实现DeepFool 117
5.5.3 使用TensorFlow实现DeepFool 122
5.6 JSMA算法 124
5.6.1 JSMA基本原理 124
5.6.2 使用PyTorch实现JSMA 126
5.6.3 使用TensorFlow实现JSMA 129
5.7 CW算法 132
5.7.1 CW基本原理 132
5.7.2 使用TensorFlow实现CW 135
5.7.3 使用PyTorch实现CW 140
5.8 本章小结 142
第6章 黑盒攻击算法 143
6.1 单像素攻击算法 143
6.2 单像素攻击MNIST识别模型 146
6.3 本地搜索攻击算法 148
6.4 本地搜索攻击ResNet模型 151
6.5 迁移学习攻击算法 153
6.6 通用对抗样本 157
6.7 针对MNIST生成通用对抗样本 160
6.8 本章小结 163
第7章 对抗样本在目标检测领域的应用 164
7.1 目标检测的概念 164
7.2 目标检测在智能驾驶领域的应用 166
7.2.1 车道偏离预警 166
7.2.2 前向防碰撞预警 167
7.2.3 交通标志识别 167
7.2.4 行人防碰撞预警系统 167
7.2.5 驾驶员疲劳监测预警 168
7.2.6 自动泊车 169
7.3 目标检测在智能安防领域的应用 169
7.3.1 人脸检索 169
7.3.2 行为识别 170
7.4 边缘检测算法 171
7.4.1 Soble边缘检测 171
7.4.2 拉普拉斯边缘检测 174
7.4.3 Canny边缘检测 175
7.5 直线检测算法 176
7.6 圆形检测算法 181
7.7 RCNN系列算法 183
7.7.1 RCNN 183
7.7.2 Fast RCNN 185
7.7.3 Faster RCNN 185
7.7.4 TensorFlow目标检测库 187
7.7.5 Faster RCNN使用示例 191
7.8 YOLO算法 196
7.8.1 YOLO概述 196
7.8.2 YOLO使用示例 199
7.9 SSD算法 201
7.9.1 SSD概述 201
7.9.2 SSD使用示例 201
7.10 白盒攻击Faster RCNN 203
7.11 物理攻击YOLO概述 210
7.12 本章小结 213
第8章 对抗样本常见防御算法 214
8.1 对抗样本的鲁棒性 214
8.1.1 图像旋转对鲁棒性的影响 214
8.1.2 滤波器对鲁棒性的影响 220
8.1.3 对比度和亮度对鲁棒性的影响 225
8.1.4 噪声对鲁棒性的影响 230
8.2 抵御对抗样本攻击的常见方法 237
8.2.1 图像预处理 237
8.2.2 对抗训练 238
8.2.3 高斯数据增强 238
8.2.4 自编码器去噪 240
8.2.5 ICLR 2018提出的对抗样本抵御方法 245
8.3 本章小结 247
第9章 常见对抗样本工具箱简介 248
9.1 对抗样本常见衡量指标 248
9.1.1 l0范数 248
9.1.2 l2范数 249
9.1.3 linf范数 250
9.2 AdvBox 250
9.2.1 AdvBox简介 250
9.2.2 在AdvBox中使用FGSM算法 250
9.2.3 在AdvBox中使用DeepFool算法 252
9.2.4 在AdvBox中使用黑盒攻击算法 255
9.3 ART 257
9.3.1 ART简介 257
9.3.2 在ART中使用FGSM算法 258
9.3.3 ART下使用CW算法 260
9.4 FoolBox 262
9.4.1 FoolBox简介 262
9.4.2 在FoolBox中使用JSMA算法 263
9.4.3 在FoolBox中使用CW算法 264
9.5 Cleverhans 266
9.5.1 Cleverhans简介 266
9.5.2 在Cleverhans中使用FGSM算法 267
9.5.3 在Cleverhans中进行对抗训练 269
9.6 NIPS对抗攻击防御环境搭建 270
9.6.1 NIPS对抗攻击防御赛简介 270
9.6.2 环境搭建方法 270
9.6.3 运行测试代码 271
9.7 轻量级攻防对抗环境robust-ml 275
9.7.1 robust-ml简介 275
9.7.2 运行测试代码 276
9.8 本章小结 279
前 言
生活中的深度学习
深度学习自2006年产生之后就受到科研机构、工业界的高度关注。最初,深度学习主要用于图像和语音领域。从2011年开始,谷歌研究院和微软研究院的研究人员先后将深度学习应用到语音识别,使识别错误率下降了20%~30%。2012年6月,谷歌首席架构师Jeff
Dean和斯坦福大学教授Andrew
Ng主导著名的Google
Brain项目,采用16万个CPU来构建一个深层神经网络,并将其应用于图像和语音的识别,最终大获成功。
2016年3月,AlphaGo与围棋世界冠军、职业九段棋手李世石进行围棋人机大战,以4比1的总比分获胜;2016年年末2017年年初,该程序在中国棋类网站上以“大师”(Master)为注册账号与中日韩数十位围棋高手进行快棋对决,连续60局无一败绩;2017年5月,在中国乌镇围棋峰会上,它与排名世界第一的围棋世界冠军柯洁对战,以3比0的总比分获胜。AlphaGo的成功更是把深度学习的热潮推向了全球,成为男女老少茶余饭后关注的热点话题。
现在,深度学习已经遍地开花,在方方面面影响和改变着人们的生活,比较典型的应用包括智能家居、智能驾驶、人脸支付和智能安防。
深度学习的脆弱性
深度学习作为一个非常复杂的软件系统,同样会面对各种黑客攻击。黑客通过攻击深度学习系统,也可以威胁到财产安全、个人隐私、交通安全和公共安全(见图0-1)。针对深度学习系统的攻击,通常包括以下几种。
1. 偷取模型
各大公司通过高薪聘请AI专家设计模型,花费大量资金、人力搜集训练数据,又花费大量资金购买GPU设备用于训练模型,最后得到深度学习模型。深度学习模型的最终形式也就是从几百KB到几百MB不等的一个模型文件。深度学习模型对外提供服务的形式也主要分为云模式的API,或者私有部署到用户的移动设备或数据中心的服务器上。针对云模式的API,黑客通过一定的遍历算法,在调用云模式的API后,可以在本地还原出一个与原始模型功能相同或者类似的模型;针对私有部署到用户的移动设备或数据中心的服务器上,黑客通过逆向等传统安全技术,可以把模型文件直接还原出来供其使用。偷取深度学习模型的过程如图0-2所示。
2. 数据投毒
针对深度学习的数据投毒主要是指向深度学习的训练样本中加入异常数据,导致模型在遇到某些条件时会产生分类错误。如图0-3所示。早期的数据投毒都存在于实验室环境,假设可以通过在离线训练数据中添加精心构造的异常数据进行攻击。这一攻击方式需要接触到模型的训练数据,而在实际环境中,绝大多数情况都是公司内部在离线数据中训练好模型再打包对外发布服务,攻击者难以接触到训练数据,攻击难以发生。于是攻击者把重点放到了在线学习的场景,即模型是利用在线的数据,几乎是实时学习的,比较典型的场景就是推荐系统。推荐系统会结合用户的历史数据以及实时的访问数据,共同进行学习和判断,最终得到推荐结果。黑客正是利用这一可以接触到训练数据的机会,通过一定的算法策略,发起访问行为,最终导致推荐系统产生错误。
3. 对抗样本
对抗样本由Christian Szegedy等人提出,是指在数据集中通过故意添加细微的干扰所形成的输入样本,这种样本导致模型以高置信度给出一个错误的输出。在正则化背景下,通过对抗训练减少原有独立同分布的测试集的错误率,在对抗扰动的训练集样本上训练网络。
简单地讲,对抗样本通过在原始数据上叠加精心构造的人类难以察觉的扰动,使深度学习模型产生分类错误。以图像分类模型为例,如图0-4所示,通过在原始图像上叠加扰动,对于肉眼来说,扰动非常细微,图像看起来还是熊猫,但是图像分类模型却会以很大的概率识别为长臂猿。
下面以一个图像分类模型为例,更加直接地解释对抗样本的基本原理。通过在训练样本上学习,学到一个分割平面,在分割平面一侧的为绿球,在分割平面另外一侧的为红球。生成攻击样本的过程,就是在数据上添加一定的扰动,让其跨越分割平面,从而把分割平面一侧的红球识别为绿球,如图0-5所示。
对抗样本按照攻击后的效果分为Targeted Attack(定性攻击)和Non-Targeted Attack(无定向攻击)。区别在于Targeted Attack在攻击前会设置攻击的目标,比如把红球识别为绿球,或者把面包识别为熊猫,也就是说在攻击后的效果是确定的;Non-Targeted Attack在攻击前不用设置攻击目标,只要攻击后,识别的结果发生改变即可,可能会把面包识别为熊猫,也可能识别为小猪佩琪或者小猪乔治,如图0-6所示。
对抗样本按照攻击成本分为White-Box Attack(白盒攻击)、Black-Box Attack(黑盒攻击)和Real-World Attack/Physical Attack(真实世界/物理攻击)。
White-Box Attack(见图0-7)是其中攻击难度最低的一种,前提是能够完整获取模型的结构,包括模型的组成以及隔层的参数情况,并且可以完整控制模型的输入,对输入的控制粒度甚至可以到比特级别。由于White-Box Attack前置条件过于苛刻,通常作为实验室的学术研究或者作为发起Black-Box Attack和Real-World Attack/Physical Attack的基础。
Black-Box Attack相对White-Box Attack攻击难度具有很大提高,Black-Box Attack完全把被攻击模型当成一个黑盒,对模型的结构没有了解,只能控制输入,通过比对输入和输出的反馈来进行下一步攻击,见图0-8。
Real-World
Attack/Physical Attack(见图0-9)是这三种攻击中难度最大的,除了不了解模型的结构,甚至对于输入的控制也很弱。以攻击图像分类模型为例(见图0-10),生成的攻击样本要通过相机或者摄像头采集,然后经过一系列未知的预处理后再输入模型进行预测。攻击中对抗样本会发生缩放、扭转、光照变化、旋转等。
常见检测和加固方法
1. 深度学习脆弱性检测
检测深度学习脆弱性的过程,其实就是发起攻击的过程,常见的白盒攻击算法列举如下。
ILCM(最相似迭代算法)
FGSM(快速梯度算法)
BIM(基础迭代算法)
JSMA(显著图攻击算法)
DeepFool(DeepFool算法)
C/W(C/W算法)
常见的黑盒攻击方法列举如下。
Single Pixel Attack(单像素攻击)
Local Search Attack(本地搜索攻击)
2. 深度学习脆弱性加固
针对深度学习脆弱性进行加固的常见方法主要包括以下几种,我们将重点介绍Adversarial training。
Feature squeezing(特征凝结)
Spatial smoothing(空间平滑)
Label smoothing(标签平滑)
Adversarial training(对抗训练)
Virtual adversarial
training (虚拟对抗训练)
Gaussian data
augmentation (高斯数据增强)
Adversarial training如图0-11所示,其基本思路是,常见的对抗样本生成算法是已知的,训练数据集也是已知的,那么可以通过常见的一些对抗样本工具箱,比如AdvBox 或者FoolBox,在训练数据的基础上生成对应的对抗样本,然后让深度学习模型重新学习,让它认识这些常见的对抗样本,这样新生成的深度学习模型就具有了一定的识别对抗样本的能力。
与Adversarial training思路类似的是Gaussian data augmentation。Gaussian data augmentation的基本原理是,对抗样本是在原始数据上叠加一定的扰动,这些扰动非常接近随机的一些噪声。Adversarial training虽然简单易于实现,但是技术上难以穷尽所有的攻击样本。Gaussian data augmentation直接在原始数据上叠加高斯噪声,如图0-12所示,k为高斯噪声的系数,系数越大,高斯噪声越强,其他参数分别表示高斯噪声的均值和标准差。Gaussian data augmentation把训练数据叠加了噪声后,重新输入给深度学习模型学习,通过增加训练轮数、调整参数甚至增加模型层数,在不降低原有模型准确度的情况下,让新生成的深度学习模型具有了一定的识别对抗样本的能力。
对抗样本领域的最新进展
对抗样本是AI安全研究的一个热点,新的攻击算法和加固方法层出不穷,而且攻击场景也从实验室中的简单图像分类,迅速扩展到智能音箱、无人驾驶等领域。百度安全实验室的最新研究报告《感知欺骗:基于深度神经网络(DNN)下物理性对抗攻击与策略》成功入选BlackHat Europe 2018。报告展现了让物体在深度学习系统的“眼”中凭空消失,在AI时代重现了大卫·科波菲尔的经典魔法。针对深度学习模型漏洞进行物理攻击可行性研究有着广泛的应用前景,在自动驾驶领域、智能安防领域、物品自动鉴定领域都有重要的实际意义。
如图0-13所示,在时间t0的时候,当在车后显示器中显示正常logo时,YOLOv3可以正确识别目标车辆,而在t1时,切换到扰动后的图片时,它可以立刻让目标车辆在YOLOv3面前变得无法辨识;在t2时,如图0-14所示切换回正常的图片,YOLOv3重新可以识别目标车辆。这是首次针对车辆的物理攻击的成功展示,与以往的学术论文相比,在攻击目标的大小、分辨率的高低以及物理环境的复杂性等方面,在影响和难度上都是一个巨大提升。
Kan Yuan和Di Tang等人在论文《Stealthy Porn: Understanding
Real-World Adversarial Images for Illicit Online Promotion》中介绍了黑产如何通过单色化、加噪声、增加文字、仿射变化、滤波模糊化和遮盖等方式让违规图片绕过目前主流的图片内容检测服务。这也标志着对抗样本技术已经从实验室环境真正进入了网络对抗实战。
国内安全人员在对抗样本领域的研究成果得到了国际的普遍认可。朱军等人指导的清华大学团队曾在NIPS 2017对抗样本攻防竞赛中夺冠,纪守领老师所在的 NESA Lab 提出了一种新型的对抗性验证码,能防范来自打码平台等黑产的破解。
机器学习在安全领域的应用越来越广泛,特别是近几年来,深度学习在安全漏洞检测、Web应用防火墙、病毒检测等领域都有工业级的落地应用;但是黑客和黑产相应的入侵手法也发生了变化,其中一个手段就是从之前尝试绕过深度学习模型,变为攻击深度学习模型本身。兜哥在人工智能安全领域的实战和学术造诣深厚,本书从深度学习自身的脆弱性和遭受的一些攻击场景入手,讨论了如何加固深度学习模型和防范类似的攻击,对企业的安全工程师和从事安全人工智能的同仁,都有很好的指导和借鉴意义。
—施亮,顶象技术首席科学家&合伙人
人工智能已经被证明在越来越多的细分领域达到甚至超过了人类的平均水平,中国、美国、俄罗斯等许多国家也把发展人工智能提升到国家战略层面。人们在大力发展人工智能的同时,对于人工智能自身的安全问题的研究却相对滞后,这将严重制约其在重要领域的应用。兜哥的这本书很好地介绍了AI安全领域非常基础且重要的对抗样本的基本原理,帮助大家了解人工智能自身的安全问题,以便开发出更加安全的AI应用。
—胡影博士,中国电子技术研究院信息安全研究中心数据安全部主任
认识兜哥是从他的著作《企业安全建设入门》开始,在传统行业基于稳定性不断对商业软件进行深度改造时,他描述了互联网如何将开源用到了输出阶段。当传统安全遇到ABCD的时候,兜哥选择沉下来做AI工程师并分享了大数据实践下的核心对抗样本调参思路,为他的工匠精神和分享精神点赞。
—吕毅博士,中国人民银行金融信息中心信息安全部副主任
本书结合了作者在安全领域的多年实践经验,对对抗样本分析所面临的挑战进行了系统阐述,对业界常见的方式方法做了系统的归纳总结,有其独到的见解和主张。与其他机器学习系列丛书中的内容不同,本书针对的对象是人工智能本身,从对抗样本这一维度入手,深入浅出地叙述了对抗样本的基本原理、攻击方式和常见防御算法等内容。本书对信息安全和人工智能的从业者来说,都具有一流的参考价值。
—王亿韬,北美互联网金融公司Affirm信息安全主管,CISSP/CSSLP/OSCP
作者的系列书—AI安全三部曲,去年我已一一拜读,每本书都深入浅出,层层递进,读后大呼过瘾。前时应兜哥之邀为本书写荐语,欣然应允,不料今年工作繁忙拖了很久,甚为汗颜。近期终能挤出时间仔细研读。本书秉承兜哥的一贯风格,虽然锚定的是非常前沿的课题,仔细去看,依旧浅显易懂,分攻防两端,递进列举各类算法,并暖心提供基于不同AI框架的实现和评估。大巧若拙,递进的脉络在读者脑中自然形成,读后必然深受启发。我在此感谢兜哥勤奋执笔,又让我有先阅之乐。
—王新刚,北美安全公司Shape Security数据平台负责人
评论
还没有评论。