博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对抗样本是怎么产生的?如何避免对抗攻击?
阅读量:2088 次
发布时间:2019-04-29

本文共 2613 字,大约阅读时间需要 8 分钟。

全文共2637字,预计学习时长5分钟

 

图片来源:pexels @pixabay

 

随着深度神经网络的出现,机器学习领域的安全问题日益突出。人们对神经网络的可解释性提出了质疑,也自然对深度学习模式的安全后果提出了质疑。

 

对抗攻击是一种用来寻找图像或数据的样本,机器学习模型在这些样本上完全随机地运行。除此之外,这些对抗样本中的网络输出可以被制作成任何期望输出类。随之而来的结果尤其令人不安。

 

本文将探讨最基本的对抗攻击形式,并且解释它们为何如此有效,更重要的是,为何如此难以防御。

 

 

 

该领域的进步使深度神经网络遭受到了数学算法层面的攻击,进而导致图像分类产生错误。这些被称为对抗样本。上图是一个非常有名的对抗样本,分类器以高置信度(99%)将停止标志分类为时钟。显然,这会对无人驾驶汽车带来巨大威胁,至于其他领域对于这些攻击也不具有鲁棒性。

 

这是怎么做到的?

 

发现构建对抗样本的过程特别有趣。当时,谷歌的研究人员正在使用CIFAR-10数据集对某些图像进行分类。他们试图将卡车类的图像转换成飞机类的图像。做法是通过反复改变卡车图像的像素值,使其与飞机图片相似。他们使用预处理图像分类器将输入图像错误地分类为飞机,利用反向传播调整了输入图像(卡车)的像素值。完成后,他们注意到分类器以高置信度将卡车图像分类为飞机。

 

他们本来认为要让分类器将输入图像标记为飞机,那么网络必须将输入图像转换成类似飞机的图像。看起来很简单,不是吗?

 

然而,事实情况并非如此。输入图像看起来仍然像一辆卡车。于是,对抗样本和对抗攻击的想法随着这个小小的实验应运而生。

 

什么使得这些样本具有对抗性?

 

这些类型攻击中具有对抗性的部分指的是,预测类与实际类看起来完全不一样的部分。人们察觉不到这些输入网络的微小变化,但是这些微小的变化却使得攻击本质上变得具有对抗性。

 

 

上图显示的是一个对抗攻击的例子,只要在其中添加一点干扰信息,图像的类别就会完全改变。一张被分类器正确归为猪类的猪图片,在实现对抗攻击后被归为客机类。添加的干扰信息看起来是随机的,但实际上它是经过精心架构的,专门使网络将图像错误地分类为“客机”。

 

这种类型的攻击被称为白盒攻击,攻击者可以通过神经网络的权重和梯度直接优化单个图像。此处的白盒表示攻击者对神经网络完全开放的访问。这些攻击极其难以防范,并且现有技术的图像分类器很难将对抗样本准确度降低到绝对0%。但是,更令人震惊的是:

 

即使在不太开放的访问设置下,这些攻击也表现得效果卓越。黑盒对抗攻击囊括了许多方法,使攻击者无权访问网络参数。此类情况下,攻击者会训练自己的图像分类(或任何机器学习模型)网络,并在自己的网络上构建对抗样本。这些对抗样本以极高的攻击精度传输到未知网络。这种做法相当先进,而且非常有趣。那么,为何这些攻击如此有效?为何如此难以防御?

 

直觉

 

已有相对大量的防御措施来解决对抗攻击问题。然而,任何新提出的防御机制似乎都会在下一年因遭受到更先进的攻击而溃败。

 

 

图片来源:pexels  @Chokniti Khongchum

 

关于多年来对抗攻击和防御的全球计算机视觉顶会(CVPR)论文,此资源库中作出了良好的总结,可自行查阅:https://github.com/BardOfCodes/adv_summaries/tree/master/cvpr_2018

 

原因可能如下:

 

1. 攻击者总是存在优势。在这个攻击和防御机器学习模型的游戏中,防御首先采取行动。人们提出新的对抗防御,并使用这种防御机制武装网络。但黑盒攻击者并不在意!对于攻击者而言,防御仅仅只是黑盒的另一部分,该部分可以通过更智能的优化技术或更多计算来打破。此外,可能会创建出专门攻击以破坏某些防御机制,但是防御机制只有强大到足以抵御所有类型的攻击(类型种类很多)才能表明真正的鲁棒性。

 

2. 攻击更加容易:优化图像输入比训练神经网络容易得多。自然而然地就会认为在高维空间(图像的像素数量)中找到特定的对抗样本十分困难。但是通过反向传播,这项任务就是小菜一碟。这是因为使用ReLU激活函数(线性整流函数)时,网络的输出相对于其输入而言是线性的。“但是神经网络是高度非线性的,这就是它们如此有效的原因……”是的,就神经网络的参数而言是非线性的,但是谈及的却不是(再次针对ReLU函数的)输入。

 

至于输入,神经网络只是一个分段线性函数。每个像素乘以权重,加上偏差和最大像素值,仍旧为0。这种情况一再发生。事实上,这是完全分段线性的。这种线性易于优化线性输入空间(图像)以生成对抗样本。此外,虽然每个像素引起的细微变化不会产生视觉差异(对抗性),但是会导致图像的L-2范数发生急剧变化,从而使网络对图片进行错误分类。

 

3. 第三个主要原因是,构建攻击神经网络过程的理论模型非常困难。要解决任何问题,准确的问题描述和导致原因的理论模型非常重要。诸如“使神经网络对所有对抗攻击具有鲁棒性”这样的问题描述听起来确实引人注目,但是事实上却含糊不清。

 

截至目前,我们还没有针对攻击的固定模型。攻击以各种各样的形式呈现;随机制定防御策略以应对某些攻击方式的方法并不可取。目前的防御提出了应对一种特定攻击的方法,但是同样的防御过程却会使模型容易受到其他十多种形式的攻击。

 

非常关键的是,首先构建一个包含所有对抗攻击的理论模型,比如说,通过这个理论模型,所有的攻击形式都可以得到解释。通常情况下,该模型必须集中于一般的攻击程序,而非特定的攻击形式,如此,它也可以免遭未来新形式的攻击。

 

总结

 

 

图片来源:pexels  @Pablo Punk

目前,攻击方在对抗样本方面比防御方具有显著优势。当我们能够找到所有对抗攻击背后的统一逻辑时,也就是找到让它们如此有效的原因,可以考虑创建一个真正具有鲁棒性的对抗防御。创建该防御可能需要时间,但这是可以做到的。我们可以从诸如差异隐私和密码学等防御占据上风的领域中获取灵感。

 

 

留言 点赞 发个朋友圈

我们一起分享AI学习与发展的干货

 

编译组:陈仁清、殷睿宣

相关链接:

https://medium.com/@smkirthishankar/the-unusual-effectiveness-of-adversarial-attacks-e1314d0fa4d3

 

推荐文章阅读

 

如需转载,请后台留言,遵守转载规范

 

长按识别二维码可添加关注

读芯君爱你

 

你可能感兴趣的文章
字符编码与解码(附:Java字符流与字节流源码剖析)
查看>>
Spark优化总结(一)——数据倾斜
查看>>
Spark代码可读性与性能优化——示例九(数据传输与解析)
查看>>
Spark代码可读性与性能优化——示例十(项目结构)
查看>>
Spark优化总结(二)——代码编写
查看>>
Spark优化总结(三)——调参
查看>>
消息队列——RocketMQ示例
查看>>
Spark优化总结(四)——业务与架构设计
查看>>
volatile在JVM内存交互中的操作
查看>>
实现一个具有Stream的链式、惰性特点的容器
查看>>
Spark源码编译
查看>>
分布式一致性算法(Paxos、Raft、ZAB)
查看>>
MPC多方安全计算——比较算法示意
查看>>
Akka事件驱动——模拟Spark注册、心跳
查看>>
Flink示例——Source
查看>>
Flink示例——Sink
查看>>
Flink示例——Connect、CoMapFunction、Split、Select
查看>>
Flink示例——Window、EventTime、WaterMark
查看>>
Flink示例——State、Checkpoint、Savepoint
查看>>
Flink示例——Table、SQL
查看>>