前言
本篇博客出于学习交流目的,主要是用来记录自己学习中遇到的问题和心路历程,方便之后回顾。过程中可能引用其他大牛的博客,文末会给出相应链接,侵删!
One pixel 对抗攻击算法
特点:黑盒攻击,只改变一个像素点即可实现攻击
论文原文:One pixel attack for fooling deep neural networks
之前介绍的几篇对抗攻击算法几乎都是在整个图像所有像素点上做微小的扰动,以达到欺骗模型的目的,而这篇文章的思想是只改变较少的像素点,甚至只改变一个像素点就能获得较好的攻击效果。
正文
考虑极端攻击情况,只修改一个像素点,对图像几何特征和DNN模型在高维的行为有了新的洞察。主要扰动算法差分进化算法。
相较其他算法该算法具有以下优点:
有效性: CIFAR-10数据集在三个常见DNN模型上无目标攻击欺骗率达68.71%,72.85%,63.53%,并且平均每个图像可扰动成1.9,2.3,1.7个其他类样本。ImageNet 数据集在BVLC AlexNet模型下无目标攻击有效性为41.22%。
半黑盒攻击:只需要返回黑盒的类标概率而不用网络的内部参数。
灵活性:可以攻击那些不可微或梯度难以计算的模型。
主要出发点:
自然图像邻的分析:如通用扰动加一些小的变化可获得自然图像周围球形范围内的对抗样本,而只修改很少的像素点可以看做是对DNN高维空间切割成非常低维的输入空间。
可观察性的一种评估指标:没人能够保证前人的算法生成的扰动就一定不可观察,而最简单的方法就是限制修改的像素点,修改的越少,那么被看出来的概率也越低,并且在实际中,效果确实很好。
算法
问题描述
对抗样本生成形式化为含有限制条件的优化问题。
输入维图像,图像每个像素看成是向量的一个分量;
,分类器;
,类别;
,图像属于类别的概率;
,对抗扰动向量;
,最大修改器限制;
公式如下:
单像素扰动的问题可以分解为两部分:1,扰动哪个扰动;2,扰动多少;那么问题就可以简化为
单像素攻击,即。
注:传统的改变整个输入图像的方法控制尽量小的扰动,而这篇算法则是控制扰动的像素个数,对于修改的幅度则不作限制。
以原文中的图例解释,假如我们的输入是3像素,而我们的攻击的单像素的,那么我们的输入空间被切割为三根红黑线;如果攻击是两像素,则攻击输入空间是蓝色的平面部分,以此类推更多维的攻击;
差分进化算法
差分进化算法是很流行的解决多模优化问题的优化算法,一种常见的遗传算法,主要区别是变异向量是由父代差分向量生成。
优势:
高概率找到全局最优解;
不用计算梯度,需要更少的信息;
简易;
算法与参数设置
将扰动以数组形式,候选解需固定扰动像素点的数目。单像素攻击,以一个5元组表示,分别是x-y轴坐标,以及RGB各通道的扰动值。初始候选解为400,每次生成400候选后代解,依以下公式:
是一个候选解,是随机数,是比例参数设为0.5,是当前代。生成子代时,每个候选解将根据人口指数与相对应的父亲竞争,获胜者将在下一次迭代中生存下来。最大迭代次数设为100,或者,满足对于某些测试集的指定百分比时提前停止。初始化时,x-y坐标,CIFAR-10数据集用均匀分布,ImageNet数据集用均匀分布;各通道颜色幅度用高斯分布 。
实验结果
原文做了大量的实验,在不同数据集和限制不同像素点条件下,具体看原文吧。
代码链接:https://github.com/Hyperparticle/one-pixel-attack-keras