只需修改一个像素,让神经网络连猫都认不出 | 论文+代码

夏乙 编译整理

量子位 出品 | 公众号 QbitAI

想骗过神经网络,让它认错图像,需要对图像做多少修改?

一个像素就够了。

一项来自日本的研究表明,改动图片上的一个像素,就能让神经网络认错图,甚至还可以诱导它返回特定的结果。

研究由日本九州大学的Jiawei Su、Danilo Vasconcellos Vargas和Kouichi Sakurai三人共同完成,他们不仅写论文详细介绍了这项改一个像素就骗过神经网络的神技,还开源了相应的Keras实现。这项技术被称为“一像素攻击”(One Pixel Attack)。

只需修改一个像素,让神经网络连猫都认不出 | 论文+代码

可惜了VGG一世英名,连猫都认错

在CIFAR-10和ImageNet两个数据集上,一像素攻击分别实现了68.36%和41.22%的成功率。

一个像素,怎么攻击神经网络?

实验在CIFAR-10和ImageNet数据集上进行,我们以CIFAR-10为例来做一下说明。CIFAR-10是一个图像识别数据集,包含60000张32×32像素的RGB彩色图片,共10类。神经网络在这个数据集上的任务,就是正确预测图片所属的分类。

而一像素攻击的目标,是通过从图片上选定一个像素,更改它的颜色来制造对抗性图像,改变神经网络输出的类别标签,降低对正确类别的置信度,提高对其他某个类别的置信度。也就是说,让神经网络将它分到错误的类别。

任务看似简单,但是,32×32=1024个像素,该选哪一个?改成什么颜色?

这些研究人员用了一种名叫差分进化(Differential Evolution,简称DE)的进化算法(Evolutionary Algorithm)。

只需修改一个像素,让神经网络连猫都认不出 | 论文+代码

具体来说,首先要通过随机修改像素来生成400个对抗样本,输入到神经网络中;然后,将这些修改像素的位置和颜色结合起来,再生成400个对抗样本,输入到神经网络中;接下来,如果某个新样本与父代相比,降低了神经网络对正确类别的置信度,就将用这个样本上修改的像素替换父代,作为目前已知的最优解。

之后就要多次重复以上三步,然后在最后一次迭代时,选出将神经网络对正确类别的置信度降得最低的对抗样本。

如果有其他类别的置信度高于正确类别最终的置信度,我们就成功了。最后选出的样本就是我们所要的结果。

在对全连接神经网络(AllConv)、Network

in Network(NiN)、VGG16、和AlexNet的测试中,这种方法取得的成功率如下表所示:

只需修改一个像素,让神经网络连猫都认不出 | 论文+代码

表中的targeted attack,指的是在攻击中让神经网络将图像误认为特定某个类别

几位研究人员还把这种方法用在了ImageNet上,将图像大小统一为227×227,大约是CIFAR-10图像尺寸的50倍。

只需修改一个像素,让神经网络连猫都认不出 | 论文+代码

在ImageNet上的测试表明,这种欺骗神经网络的方法也适用于分辨率比较高的图像。

据论文介绍,DE方法不会像基于梯度的方法那么容易陷入局部最小值,也不需要关于攻击目标系统的太多信息,因此生成的对抗样本适用于多种神经网络。

相关链接

论文 One pixel attack for fooling deep neural networks

https://arxiv.org/pdf/1710.08864.pdf

Keras实现

https://github.com/Hyperparticle/one-pixel-attack-keras

开头提到的迷幻贴 Adversarial Patch

https://arxiv.org/pdf/1712.09665.pdf

版权所有,未经授权不得以任何形式转载及使用,违者必究。