文章目录
简介
本文使用EA(进化算法)结合梯度上升算法生成了高置信度的图像来欺骗DNN。测试模型使用ImageNet训练的AlexNet以及MNIST训练的LeNet。
本文的图片生成使用了两种方法:直接编码和间接编码。直接编码是用随机噪声生成的,间接编码使用CPPN生成(类似于ANN),CPPN可以生成类似于现有图像的常规图像。在下面两张图片展示了直接编码和间接编码的图片结果。可以看出此处给出的直接编码图片对于肉眼来说看起来就好像噪声图片一样,间接编码有特定的、人类可以分辨的模式。虽然任务显然无法给出这些图片指的是什么对象,但是神经网络将这些图片都以高置信度(>=99.6%)将其分为了某个类别。
直接编码的结果看起来就像是老式电视机没有信号时的“雪花”,而DNN将这些图像识别为与图像没有任何关系的对象。对于间接编码的结果来说,这些图片虽然给出来相关对象的一些纹理特征,但是显然不是我们想要的对象,但是DNN却会非常确信这些图片指代了某些对象。该实验表明,人类对于视觉信号的处理和DNN非常不同。
方法
下图展示了本文想要说明的主要问题,以及所使用的图片生成方法。
上图中虚线左边部分展示了正常DNN分类过程,可以看出DNN以高置信度成功将相关对象进行了分类。右边的蓝色框内的图片是生成的,可以看到同样被DNN以较高置信度与左边的图片分类成了同样的类别。图片通过进化算法生成。
被测试模型
本文测试了两个网络结构,第一个是著名的AlexNet。AlexNet在包含120万张图片的ImageNet上进行了训练,文中使用了Caffe包中已经训练好的AlexNet进行测试。文中使用的第二个网络是Caffe提供的LeNet模型,该模型使用MNIST手写数字数据集进行训练,和LeNet原论文中不同的是,Caffe提供的模型激活函数使用的是ReLU而不是Sigmoid。
图片生成
文中图片通过进化算法不断改进生成而来。文中使用的生成图片的进化算法与传统的有点不太一样。一般情况下,我们使用进化算法都有一个固定的目标,在此任务中,我们会希望生成某个类别的图片。文中做出了一个效率上的改进:同时进化多个个体,也就是不在单一的检测某个个体是否符合某个单一类别,而是观察其在所有类别上的表现(对于某个类别,分类器给出的置信度),一旦某个个体的表现好就将其作为该类别最好的个体。显然这样可以大大提高生成图片的效率。
直接编码
直接编码也就是说进化算法直接作用于图片像素点上:对于MNIST数据集来说,图片用$28 \times 28$的整数表示,而对于ImageNet的数据集使用$256 \times 256 \times 3$的整数表示(每个象素点的值都在0~255之间)。对于进化算法大家可以参考相关文献,基本就包含种群生成、选择个体、交叉、变异、计算适应值这几个流程。文中使用过程中一些细节如下:
- 使用0~255内的值进行随机初始化,进行种群生成
- 像素点之间的变异相互独立
- 变异率初始为10%,每1000代减半
- 变异方法采用常用的多项式变异算子,变异强度固定为15
间接编码
间接编码不是直接调节图片本身,而是调节生成图片的网络。这种通过网络生成的图片就比较有规律,看起来还是有一定的规则的。文中使用了$CPPN$进行图片生成。实际上经过调节的CPPN是可以产生一些人类可以正确识别的图片的,同时这些图片也可以被神经网络识别。文中给出了一些一些CPPN生成图片的一些例子,如下图所示(图片来源于PicBreeder.org):
可以看到CPPN生成的图片都是比较平滑的。上图中图片下面紧跟的标题为人们给出的,下面带有置信度柱状图是神经网络给出的相应分类的置信度。可以看出神经网络在这些图片上的表现也是不错的。
CPPN网络使用图片的像素点的位置(x, y)作为输入,输出该像素点的像素值(黑白图片1个值,彩色图片三个值)。CPPN中每个神经元都可以使用不同的激活函数。在一开始CPPN是不包含隐层的,也就是输入直接连到输出。随着进化,会不断的有神经元被加入或者删除,最终生成一个符合要求的神经网络结构。具体大家可以参考相关论文。
实验结果
MNIST数据集
直接编码图像
上图显示了DNN将直接编码生成的图片分类为某个数字(0〜9)的一些图像。可以看到这些图片非常随机但是DNN都给出了超过99%的置信度(这些图片都是从大进化了200代的图片中随机选择的)。
间接编码图像
与直接编码不同,人类可以用自己的眼睛检查特定的模式。如上图所示,每一列代表0到9之间的数字,每一行代表从最多200代生成的图像中随机选择的图像。如果检查为每个数字创建的图像,则可以看到每个数字都有特定的模式,例如1中的竖线和2中底部的横线等等。
ImageNet
直接编码图像
我们知道,MNIST数据集较小(只有60000张图片),泛化性不行,结果较差可以理解,这里我们查看在多得多的数据上进行训练的DNN的结果。在本实验中,我们使用的DNN使用ImageNet 2012数据集进行训练,该数据集包含1000个类别和130万张图像。
上面的图显示了直接编码在进化算法进行0~20000代进化后的结果。红色表示较高的可靠性(DNN给出生成图片属于某个类别的概率),蓝色表示较低的可靠性,水平轴表示类别。虽然对于一些类别无法生成置信度较高的图片,但是对于特定的45个类别,可以生成可靠性高达99%的图。
间接编码图像
相比于直接编码,使用CPPN生成的图片更加接近ImageNet中的图片,很多生成的图片都可以人眼被识别。上图展示了使用CPPN生成图片的结果,可以看到对于许多类别CPPN都产生了置信度非常高的图片。由于CPPN产生的图片是有一定规律的,一些图片确实可以被人类识别为特定类别。但是于此同时,CPPN也产生了一些图片无法被人类识别,但是DNN却给出了很高的置信度(就像我们前文展示的那样)。下图给出了更多的CPPN生成的一些图片。
欺骗可以泛化吗?
此实验使用了两个DNN: A和B,测试了欺骗一个DNN的图像是否也可以欺骗其他DNN。文中测试了两种情况:
- 使用同样数据集训练的同样结构的网络(只有网络的初始化数据不一样)
- 使用同样数据集训练的不同结构的网络
实验结果表明, 对于一些特定的类别这种欺骗的泛化性还是不错的:
- 对于测试的第一种情况(同样的网络),在MNIST数据集上,结果发现数字9, 6, 2最能同时欺骗两个不同的网络
- 对于不同网络结构的情况(文中在ImageNet数据集上测试了AlexNet和GoogLeNet),实验使用两个网络分别生成了1000张图片,发现为GoogLeNet生成的20.7%的图片,AlexNet同样给出了top-1的结果(反过来概率为17.3%)。
进行针对性对抗训练
此实验在数据集原来类别的基础上,增加一个类别,这些类别中的图片都是使用EA算法生成的,用来帮助分类器区分这些欺骗性的图片,结果为:
- MNIST数据集上,即使加入了对抗训练样本,即使经过了多轮新欺骗的样本加入(14轮,每轮都新生成对抗样本,然后进行训练),新生成的对抗样本同样很容易欺骗该网络 (笔注:是不是应为网络容量太大了,因此很容易产生欺骗图片)
- 在Image Net上,加入对抗训练样本后,在新的模型上测试是,生成欺骗图片的难度极大增加了
结论
在本文中,研究者通过许多实验表明,可以使用特定的噪声或类似模式来欺骗DNN。同时实验还表明,欺骗一个DNN的图像也可以欺骗其他DNN。如果该方法被恶意使用(比如使用生成的人脸部或指纹代来访问各种系统),就会非常危险,因为用户可能不知道其他人正在入侵或访问该系统。特别是在自动驾驶的情况下,如果DNN误认了图像并采取了错误的操作,可能会导致重大事故。
引用
[1] Nguyen, Anh, Jason Yosinski, and Jeff Clune. "Deep neural networks are easily fooled: High confidence predictions for unrecognizable images." Proceedings of the IEEE conference on computer vision and pattern recognition. 2015.
More Recommendations