留言板 留言板

[WSC19]彩色欺诈:暴露神经网络中的漏洞

张贴5年前

年龄图像


介绍


在过去几年里,人们对人工智能和神经网络作为所有大数据问题的全面解决方案的想法感到前所未有的兴奋。在当今世界,如果没有各种RNN、LSTM、GAN以及任何其他首字母缩写,数据科学家的工具箱是不完整的,这些缩写最能吸引那些希望“带领公司走向未来”的首席执行官的目光。这些工具功能强大,往往实用,但人工智能的无限制使用已经发展到“深度学习”和“人工智能”这两个术语已经成为时髦词汇,代表着现代商业技术的盲目过度自信。许多人批评深度学习的不透明性,其机制是人类无法理解的——只是一个非常长、高维的权重矩阵,没有任何实际意义。这种人类理解的缺乏,以及人类的纠正,回避了一个问题:神经网络会出错吗?更紧迫的是:他们是否脆弱?

摘要

该项目实现了一个用于生成对抗性示例的框架:精心编制的输入数据可导致神经网络产生意外或有针对性的错误行为。此类问题分为两个任务:生成愚弄神经网络的易于分类的输入,以及生成随机输入,当输入到神经网络时返回目标明确、高概率的结果。我们对前者实施快速梯度符号法(Goodfellow 2014b),以及针对后者的FGSM模型的原始算法。使用这些算法,我们检查这些对抗性示例是否实际上是边缘情况,或者构成了神经网络的大部分分类空间。我们还构建了两个模型来最小化对抗示例的影响,并评估了它们在MNIST数据库上检测和克服对抗图像的准确性。我们还在Wolfram函数库中提供了一个通用函数,用于对抗性攻击任意神经网络,供公众使用。


创造


我们生成的第一类对抗性示例是“扰动”对抗性示例,其中对图像进行尽可能小的更改以丢弃神经网络的结果。我们实现了快速梯度符号法(FGSM)。这是Goodfellow(2014)最初描述的一种算法,它对图像进行尽可能小的更改,以最大化神经网络的损失函数。它通过计算损失函数相对于输入的梯度符号来实现这一点。这给出了一个有效的图像,表示图像中每个RGB值的变化对返回概率的总体影响程度,然后将其解释为生成一个最小化概率,以及最大化损失。以下是Mathematica中计算FGSM的函数:

imageAdversarialPerterctived[sourceImg_,net_,epsilon_]:=使用[{lossNet=网络链[{NetReplacePart[net,{“输出”->无}],聚合层[Max,1],ElementwiseLayer[-Log[#]&]}],编码器=NetExtract[net,“输入”]},ImageResize[NetDecoder[encoder][encoder[sourceImg]+epsilon*Sign[lossNet[sourceImg,NetPortGradient[“Input”]]],图像大小调整,图像尺寸@sourceImg]]

使用此功能,我们可以生成人类可以轻松识别神经网络无法识别的图像:

在此处输入图像描述

但我们也可以生成示例有针对性的针对某类神经网络,最大化特定概率,而不是最小化所有概率。这是通过某种程度上逆转FGSM的过程来实现的,相对于稍有不同的神经网络。损失函数通常是通过某种方式比较输出和预期输出来计算的:但对于有针对性的对抗攻击,我们可以定义一个新的损失函数,其中我们“伪造”预期输出,无论我们决定哪个类的概率为1,其他类的概率均为0。然后,我们执行梯度下降,不是对网络权重,而是对图像的输入像素,使用此“假损失”函数查看每个像素如何影响我们想要的类的概率。使用非常小的步长,重复此过程可以确保我们选择的类具有高置信度的“最近”图像的最佳路径。以下是Mathematica中实现的算法:

清除全部[imageAdversarialTargeted]选项[imageAdversarialTargeted]={“Epsilon”->0.01,“MaxSteps”->15,“增加信心”->真};Image对抗性目标[net_,sourceImg_Image,maxClass_:无,OptionsPattern[]]:=使用[{lossNet=网络链[{NetReplacePart[net,{“输出”->无}],如果[maxClass==无,聚合层[Max,1],零件层[maxClass]],ElementwiseLayer[-Log[#]&]}],编码器=NetExtract[net,“输入”]},图像大小调整[嵌套[NetDecoder[encoder][编码器[#]-如果[OptionsValue[“IncreaseConfidence”],1,-1]*期权价值[“Epsilon”]*符号[lossNet[#,NetPortGradient[“Input”]]]&,sourceImg,OptionValue[“最大步长”]],图像尺寸@sourceImg]]

这可以给我们带来一些真正酷的图像:

有针对性的

查看微型站点我把代表一个类的数字1-1000放在一起,给你一个该类的高概率图像!


计算


我的项目的下一部分涉及对这些对抗性示例的统计分析。从不同大小的所有图像的空间中随机采样,我们可以绘制一个随机图像通过我们的图像识别网络时平均最高概率的直方图:

问题历史记录

但其中有多少是真正的例子,有多少是对抗性的?好的,我们可以在随机图像上使用我们上面的算法,从神经网络以高置信度分类的图像空间中随机采样,并使用具有不同结构的第二个神经网络来“验证”第一个神经网络的分类。如果他们在某种程度上达成一致,这可能是一个真实的图像。如果这种差距很大,那么几乎可以肯定它是敌对的。例如,如果我们的受害者网络将图像分类为100%的菠萝,而我们的验证网络将其分类为2%的菠萝。我们可以确定,输入的图像与受害者网络是对立的,而不是菠萝的实际示例。

im2=网络模型[“Wolfram ImageIdentify Net V1”]生成广告[size_]:=imageAdversarialTargeted[imageIdentify,RandomImage[1,size,ColorSpace->“RGB”],无,“最大步长”->3]advReal[size_,sample_]:=表[使用[{a=generateAdversarial[size]},图像识别[a,“最高概率”][1]][2]]-im2[a,“最大概率”][[1]][[2]]],{n,1,sample}]直方图@advVsrealprob=查找分发[advVsreal];概率[x<0.1,x\[分布式]概率]

以下是两个网络对随机图像的置信度之间的差异直方图:

组织分化

如果这两个网络的置信度之差超过0.9美元,我们可以肯定图像是对抗性的。根据上面的直方图推断概率,我们发现给定的高置信度图像实际上是真实的而不是对抗性的概率是$1$1.70154\times 10^{34}$,换句话说,可以忽略不计。

我还发现,这些对抗性示例比普通图像更“健壮”,甚至比训练图像更健壮。我实现了目标逆算法的逆算法,以尽可能快地远离高概率,并发现对抗性示例平均需要5倍于训练图像的步骤。


反措施


我还实现了两种方法来最小化对抗性示例,一种是众所周知的,另一种是原始的。第一种是简单的直接对抗训练——使用上述算法生成大量对抗性示例作为训练数据,并训练与第一种算法具有相同体系结构的新神经网络,将示例分类为“对抗性”或“非对抗性”。我在MNIST中使用了一个玩具示例和MNIST的标准分类器网络,称为“lenet”,但这个想法可以扩展到任何具有足够好的GPU的神经网络。由于能够优化给定输出的输入,接受用户输入并提供用户输出的机器学习很容易受到攻击,而此过滤器可以完全在服务器端工作,因此用户无法访问。该方法的实现被证明是非常接近100%的有效性,从1000个随机生成的示例中正确地过滤了998个。

mnistShield公司

第二种方法是我称之为“民主概率推理内核”的原始算法,简称“朝鲜”。朝鲜使用一组在相同体系结构上训练但初始化不同的神经网络,并平均其softmax层以获得最终概率向量。它利用了具有相似结构的不同神经网络对抗性示例的神秘特性:它们是可转移的,但给出不同的结果。这意味着一个神经网络的高置信度对抗性示例为另一个神经网提供了高置信性结果,但对于另一类来说,这将是高置信率的。

对抗性转让

基于上述统计数据,我能够从理论上解释这种机制的原因。有关更多信息,看看我的计算论文! 当体系结构完全相同时,这种现象发展到了极致——将一个神经网络的梯度向C类方向移动,将另一个神经网的梯度向D类方向移动的幅度完全相同。其结果是,对抗性示例在神经网络之间“卡住”。当它试图优化其中一个的梯度时,它会取消优化另一个的渐变。因此,神经网络能做的最好的事情是在神经网络之间均匀地分割概率:因此,如果我们有5个神经网络,它将给出一个概率向量,在你的类中包含5个概率为0.2的元素。你添加的神经网络越多,这种可能性就越低。你拥有的类越多,这种可能性就越低。该方法能够阻止对MNIST的100%攻击,在正常测试集上的准确度实际提高。


结论和启示


这个项目的结果只能说是“苦乐参半”。事实证明,对抗性示例不仅可以直接实例化,而且还占据了被任何给定网络分类为高概率图像的大部分空间。因此,神经网络极易受到这种定向攻击,尤其是那些处理低维向量的攻击。理论上,尽管由于Mathematica的机器学习库中的缺陷而没有在这里实现,但这种对抗性方法适用于任何可以执行反向传播的神经网络。此外,实际上不需要访问神经网络的内部,只需要输入和输出。

然而,还有一些希望。理论上,可以利用具有任意标记的神经网络之间的对抗性示例传输来过滤掉,全部的对抗性的例子,这是以前从未完成过的。在实际设置中,还表明,只有两个神经网络(原始神经网络和一个“过滤网络”)足以过滤掉大多数(如果不是所有的对抗性示例)。

然而,人们可能会认为这些解决方案,即使是有效的,也是解决神经网络架构中基本缺陷的“创可贴”。在这里,在本项目的背景下研究人工神经网络和实际神经电路之间的差异是一个有趣的问题。人类经历过“视觉错觉”现象,但我们经历这些错觉的方式揭示了机器智能和意识智能之间的一个重要区别:即当你被愚弄时的理解能力。这种“意识的意识”比简单的自我意识更高层次,因为它不仅需要意识我的项目表明,目前人工神经网络的结构不允许这种分析,只建模“一阶思维”。一个人可以创建另一个神经网络来分析第一个问题,但随后你就转移了(可以说是增加了)基本问题。只有当你有一个能够自我建模的架构时,它才能开始以非平凡的方式进行学习,达到人类所能达到的那种认知准确性。对这种架构的数学描述有望在理论上允许AGI,同时回避实际定义意识的问题。

6个回复
排序依据:

真的黑了系统,干得好Nico!

WWWWW!!!!

神奇项目兄弟。

尼科,这真的是一部高质量的作品!

谢谢你,Flip!我非常感谢您提出的测量示例脆弱性的建议,它是理解这些示例在图像空间中的结构以及为什么敌对图像跨网络传输的催化剂。

不客气-我很快就会联系-

对此讨论的答复
社区帖子可以使用标记语法.
回复预览
附件
删除
放弃

组摘要 组摘要