雷锋网按:近日,OpenAI发表最新研究,论述了AI安全领域的一大隐忧:“对抗样本”,它可以轻易地让机器学习系统产生误判,这会对AI的应用实践产生影响。在这篇由“GANs”之父Ian Goodfellow领衔撰写的文章里,OpenAI针对“对抗样本”进行了防御策略的实验,其中有两种方法效果显著,但也并不能解决根本问题。OpenAI表示设计出抵抗强大、具有适应性攻击者的防御策略,是非常重要的研究领域。本文原载于OpenAI Blog,由雷锋网编译整理。
“对抗样本”是攻击者故意设计的,被用来输入到机器学习模型里,引发模型出错的值,它就像是让机器在视觉上产生幻觉一样。在这篇文章里,我们将会展现“对抗样本”是如何通过不同的媒介工作的,并且将会讨论为什么针对“对抗样本”的安全防御很困难。
在OpenAI,我们认为“对抗样本”是安全方面非常好的一个议题,因为它代表了AI安全领域里的一种具体的问题,我们可以在较短期里去关注和解决,而且这个问题的难度也是足够的,需要进行一些重要的研究工作(尽管我们需要探索机器学习安全的很多方面,以达到我们建造安全、广泛应用AI的目标)。
什么是“对抗样本”?
这篇论文里“Explaining and Harnessing Adversarial Examples”有一个例子:这是一只熊猫的图片,攻击者加入了一个小干扰到计算里,导致系统将其误认为是长臂猿的照片。
一个对抗输入值,覆盖了一个典型的图片,分类器将一只“熊猫”误分类为一只“长臂猿”
这个方法是十分有效的,最近的一项研究(论文“Adversarial examples in the physical world”)显示,把“对抗样本”用标准的纸张打印出来,然后用普通的手机对其拍照制成的图片,仍然能够影响到系统。
“对抗样本”可以在普通纸张上打印出来,再让带有标准分辨率的智能手机拍摄,仍然可以引发分类器产生错误。在上图例子里,系统错把“洗衣机”标签为“保险箱”。
“对抗样本”很有可能变得危险。比如,攻击者可以用贴纸或一幅画制成一个“停止”指示牌的“对抗样本”,以此来攻击汽车,让汽车将原本的“停止”指示牌误理解“让行”或其它指示牌,就像论文“Practical Black-Box Attacks against Deep Learning Systems using Adversarial Examples”讨论的那样。
增强学习智能体也可以被“对抗样本”所操纵,根据 UC伯克利大学、OpenAI和宾夕法尼亚大学的一项最新研究(论文“Adversarial Attacks on Neural Network Policies"),以及内华达大学(论文“Vulnerability of Deep Reinforcement Learning to Policy Induction Attacks”)的一项研究显示,广泛使用的增强学习算法,比如DQN、TRPO和A3C,在“对抗样本”面前都十分脆弱。即便是人类难以观察出来的微妙的干扰因素,也能导致系统性能减弱。比如引发一个智能体让乒乓球拍在本该下降时反而上升,或者干扰锁定敌人的能力。
如果你想要做一个击溃自己模型的实验,可以使用cleverhans,这是一个由Ian Goodfellow和Nicolas Papernot联合开发的开源库,可以用它来测试你的模型在面对“对抗样本”时的脆弱性。
“对抗样本”是AI安全的隐忧
当我们思考AI安全问题时,往往总是去思考最困难的问题:如何确保成熟的增强学习智能体能够按照设计者的意图行事,比人类还要更加智能?
“对抗样本”展示出,就算是简单的现代算法,不论是监督学习还是增强学习,就已经可以不以设计者的意愿行事了,且是以令人惊讶的方式。
抵御“对抗样本”的一些尝试
让机器学习模型更稳定的传统技术,比如与权重衰减(weight decay)和dropout,通常不会对“对抗样本”造成实际的防御。到目前,只有两种方法有明显防御效果。
-
对抗训练(Adversarial training)
这是一个暴力解决方法,我们自己生成许多“对抗样本”,让后用这些样本来训练我们的模型,让它不被其中任何一个蒙骗。cleverhans库已经有开源的对抗训练机制,这里面(https://github.com/openai/cleverhans/blob/master/tutorials/mnist_tutorial_tf.md)有使用方法详解。
-
防御净化(Defensive distillation)
这个策略,是让训练模型输出分类概率,而不是直接输出最终的某个类别。概率由早期的一个模型提供,在同样的任务上进行训练,使用hard类别标签。这种方法会创建方向平滑的模型,攻击者由此难以找到“对抗样本”产生的关键点。(“净化”最初源于Distilling the Knowledge in a Neural Network这篇论文,为了节省计算量,“净化”作为一种模型压缩的方法,把小模型进行训练来模仿大模型)。
然而,如果攻击者获得更多的计算力,那么即使是这些特定算法,也会很容易就被攻克。
失败的抵御:“梯度隐藏”(gradient masking)
“梯度隐藏”这种失败的抵御方法,可以让我们好好思考一下,简单的抵御方法是如何失败的。
“梯度隐藏”这个术语最初出现在“Practical Black-Box Attacks against Deep Learning Systems using Adversarial Examples”这篇论文里,用来描述一大类失败的防御方法,这类方法会拒绝攻击者进入一个有用梯度。
大部分的“对抗样本”构建技术都是利用模型梯度来进行攻击的。比如说,他们观察一张飞机的图片,反复测试图片空间的哪一个方向上,“猫”的概率会增加,然后它们就在这个方向上“推波助澜”一下(换句话说,他们扰乱输入值)。那么这张经过修改的新图片就会被错误识别为“猫”了。
但是,如果没有梯度呢–如果照片上一个极小的修改对模型输出不会造成任何影响呢?这看起来是可以进行一些防御,因为这种情况下,攻击者无法得知应该在图片哪个方向上“推波助澜”。
我们可以很容易想到一些微小的方法来摆脱梯度。比如,大部分图片分类模型是以两种模式运行的:一种是直接输出“最可能类别”;另一种模式,就是输出“概率”。如果模型输出的是“99.9%飞机、0.1% 猫”,那么输入值的微小变化,也会对输出值的产生微小影响。但如果我们的模型直接采用第一种运行模式,直接输出“飞机”,那么输入值的微小变化,将对最终输出结果没有影响,而梯度也不会告诉透露任何信息。
如果我们使用“最可能类别”模式,而不是“概率”模式,那么让我们来思考一下,这种方法抵抗对“抗样本”的表现如何。在“最可能类别”模式下,攻击者不知道到哪里去找能被归类为“猫”的输入值,以此我们能够有一些防御力。很不幸,之前每张被分类为“猫”的图片,现在依然会被分类为“猫”。但是,如果攻击者能够猜测到防御弱点,由此制作“对抗样本”,那么图片仍然会被错误归类。我们目前还没让模型更加稳定,我们只是让攻击者弄清楚模型防御的弱点的线索变更少。
更不幸的是, 攻击者可以有非常好的策略,来猜测防御弱点在哪。攻击者可以自己训练一个模型,一个拥有梯度的光滑模型,制作“对抗样本”,然后将这些“对抗样本”放进我们防御的非平滑模型里。而我们的防御模型,往往也会把这些“对抗样本”错误分类。最终,这个思考结果暴露出,把梯度藏起来解决不了问题。
执行梯度隐藏的防御策略,会造成一个在特定方向和训练点周围非常平滑的模型,这使得攻击者很难找到暗示模型弱点的梯度。然而,攻击者可以训练一个替代模型:攻击者会构建一个防御模型的复制品,方法是观察防御模型输入值的标签,然后小心选择输入值。
进行这样的一个模型抽取攻击(model extraction attack)的流程,最早是在黑箱攻击论文里介绍的。攻击者可以使用替代模型的梯度,来找到“对抗样本”,以此来让防御模型发生误判。上图来自于“Towards the Science of Security and Privacy in Machine Learning”这篇论文对梯度隐藏的发现,这个例子里我们将这种攻击策略看做是一维的机器学习问题。梯度隐藏现象在面临更高维度的问题时,会变得更加严重,但是更难以描述出来。
我们发现,对抗训练和防御净化都会偶然产生梯度隐藏。这两种算法都显然不是为执行梯度隐藏而特意设计的,但是当机器学习算法训练保护自己而没有被给予特定方法指导时,梯度隐藏很显然是算法自身相对比较容易产生的一种防御方法。如果将“对抗样本”从一个模型转移至第二个模型,就算第二个模型用对抗训练或防御净化训练过,攻击往往会胜利,虽然“对抗样本”直接攻击第二个模型会失败。这说明,对抗训练和防御净化这两种技术能使模型更加平坦,移走梯度,而不能保证让分类更加正确。
为什么抵御“对抗样本”如此之难?
“对抗样本”很难抵御,因为很难为“对抗样本”的制作过程构建一个理论模型。“对抗样本”是很多机器学习模型非线性和非凸最优化问题的解决方法,包括神经网络。因为我们没有好的理论工具,来描述这些复杂优化问题的方法,很难有理论论据表明某一种防御方法能阻止一系列“对抗样本”。
“对抗样本”很难抵御,也是因为它们要求机器学习模型为每一个可能的输入值产生好的输出结果。大多数情况下,对于遇到的所有可能的输入值,机器学习模型只能够对其中少量运行地比较好。
到目前为止,我们测试的每一种防御策略都失败了,因为策略不具有适应性:一种策略或许能抵御一种攻击,但是会对熟知它的攻击者暴露出弱点。设计出抵抗强大、具有适应性攻击者的防御策略,是非常重要的研究领域。
总结
“对抗样本”显示出,很多现代机器学习算法都能被击溃,且是以令人惊讶的方式。这些机器学习的失败证明,即使是简单的算法,也会违背其设计者的意图。我们鼓励机器学习研究者投身其中,找出阻止“对抗样本”的方法,以此减小设计者意图和算法运行之间的鸿沟。如果你对于“对抗样本”方面的工作感兴趣,可以考虑加入我们OpenAI。
更多雷锋网(公众号:雷锋网)相关文章:
深度卷积网络的BUG一例:腾讯AI“绝艺”最近被人类棋手找到了一个有趣的缺陷
雷锋网版权文章,未经授权禁止转载。详情见。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/70989.html