OpenAI 最新成果——利用对抗样本攻击机器学习
对抗样本是指攻击者故意设计以导致机器学习模型出错的输入样本;他们对机器来说就像是视觉幻觉一样。在本篇博文中,我们将向您展示对抗样本在不同介质中的运作原理,也将讨论为何系统难以防御它们。
在 OpenAI,我们认为对抗样本是研究安全性的一个好方面因为它代表着人工智能安全性上一个能在短期内得以解决的具体问题,由于解决对抗样本是如此之难,需要严肃认真的研究工作。(尽管为了达到我们建立安全、广泛分布的人工智能的目标,我们还需要研究机器学习安全性的许多方面。)
为了弄清楚对抗样本的真实面目,请思索一下《解释并驾驭对抗样本》(Explaining and Harnessing Adversarial Examples,https://arxiv.org/abs/1412.6572)中的例证:以一张熊猫图片为开始,然后攻击方添加了一个经过计算的小干扰以使这只熊猫以较高的置信度被识别为一只长臂猿。
这个办法十分稳健;近期的研究也表明对抗样本可在标准纸张上打印出来,然后用标准智能手机拍下来,依旧可以愚弄系统。
对抗样本能在普通纸张上打印出来并用一部标准分辨率智能手机拍下来,仍然能够导致这个案例中分类器将“洗衣机”识别为“保险箱”。
对抗样本具有潜在危险性。例如,攻击者可以利用贴纸或者绘画来创建一个对抗式“停止”信号以瞄准攻击自动驾驶车辆,而车辆就可能将此“信号”理解为“放弃”或其他标识,正如我们在《利用对抗样本对深度学习系统进行实际黑盒攻击》(Practical Black-Box Attacks against Deep Learning Systems using Adversarial Examples,https://arxiv.org/abs/1602.02697)中所讨论的。
据加州大学伯克利分校、OpenAI 、宾夕法尼亚州立大学的最新研究《神经网络政策的对抗式攻击》(Adversarial Attacks on Neural Network Policies,http://rll.berkeley.edu/adversarial/), 以及内华达大学雷诺分校的《深度强化学习对于政策诱导攻击的脆弱性》(Vulnerability of Deep Reinforcement Learning to Policy Induction Attacks,https://arxiv.org/abs/1701.04143)研究表明,强化学习智能体也能被对抗样本操控。研究表明,广泛使用的强化学习算法,例如,DQN , TRPO 以及 A3C ,对于对抗输入都是很脆弱的。这些对抗样本的输入会降低系统性能,即使是微妙的让人类都无法察觉的干扰,导致智能体在应该上移的时候却将球拍下移,或干扰其在 Seaquest 中识别敌人的能力。
如果你想破坏你自己的模型来进行试验,那你可以用 Cleverhans 试试,它是 Ian Goodfellow 和 Nicolas Papernot 共同研发的一个开源库,旨在测试你的人工智能对于对抗样本的脆弱性。
在人工智能安全问题方面,对抗样本给了我们一些牵引力
当我们思考人工智能安全性的研究时,我们通常考虑该领域一些最难的问题— 我们如何确保那些比人类聪明百倍的复杂强化学习智能体能够按照设计师意图的方式运行?
对抗样本向我们展示了:即使是简单的现代算法,不管是监督学习还是强化学习,都已经能够以我们出乎意料的方式运行了。
试图防御对抗样本
那些使机器学习模型更加稳健的传统技术,比如权重衰减或者 Dropout,通常无法切实防范对抗样本。迄今为止,仅有两种方法可以提供显著的防范。
对抗训练:这是一种暴力破解方案,在这种方案中,我们只是简单地生成许多对抗样本并明确训练模型不要被这些样本愚弄了。我们可以在 Cleverhans 库中实施开源的对抗训练,其使用方法请见如下指南。
防御升华 : 在这一策略中,我们训练模型输出不同类别的概率,而不是影视判决模型到底输出哪一类。该概率由更早期的模型提供,、而此模型是基于同一任务,使用较难的类别标签训练而成的。这就创建了一种模型——其表面在对手通常会加以利用的方向上是平滑的,使其难以发现导致错误分类的对抗式输入调整。(《Distilling the Knowledge in a Neural Network》——https://arxiv.org/abs/1503.02531最初将这个办法介绍为一种模型压缩技术,即:小模型被训练用来模拟大模型以此获得计算量。)
然而,敌方可以通过更大的计算力度来轻易破解这些专门的算法。
一种失败的防御:梯度掩模
为了给出一个关于简单防御可能如何失败的案例,让我们思考一下为什么一种叫做“梯度掩模”的技术没有效果。
“梯度掩模”是在《使用对抗样本对深度学习系统进行实际的黑盒攻击》(Practical Black-Box Attacks against Deep Learning Systems using Adversarial Examples,https://arxiv.org/abs/1602.02697)中介绍的术语,它描述了一整类试图通过拒绝攻击者对有用梯度的访问权限而防御失败的方法。
大多数对抗样本构建技术都使用了模型的梯度来进行攻击。换而言之,它们看着一张飞机图片,测试在图片空间中哪个方向会增加“猫”这一类别的输出概率,然后他们在那个方向上稍微一“推动”(换句话说,它们干扰输入)。如此一来,新的修改过的图像就会被误认为是一只猫。
但如果并没有梯度呢——如果图片上一个无限小的改动并不会对模型的输出造成任何改变呢?这似乎就能提供一定程度的防御,因为攻击者无法获悉往哪个方向“推动”图像。
我们可以轻易地想出一些非常简单的去除梯度的方式。比如,大部分图像分类模型都可归为两种模式:一是它们仅输出识别出的最有可能的类别,二是它们输出不同的概率。如果一个模型的输出是“99.9% 的概率是飞机,0.1% 的概率是猫”,那么对输入的一点微小改变也会给输出带来一点微小的改变,而梯度就会告诉我们哪些改变会增加“猫”类的概率。如果我们运行模型的模式是只输出“飞机”,那么一点微小的改变不会对输出产生任何改变,梯度也无法说明任何事情。
让我们进行一个思维实验,看看我们通过运行输出“最有可能类别”模式而非“概率模式”的模型时,可以如何防御对抗样本。攻击者不再知道怎样寻找将被分类为猫的输入,所以我们可能已经有了一些防御。不幸的是,之前被分类为猫的图像现在仍然还是被分类为猫。如果攻击者能够猜出哪些点是对抗样本,那么这些点仍然可被错误地分类。我们尚未使该模型更加稳健;我们只是让攻击者在弄清模型防御的漏洞时没有那么多的线索而已。
更不幸的是,事实证明攻击者在猜测防御漏洞时拥有一个非常好的策略。攻击者可以训练一个他们自己的模型——一个有梯度的平滑模型,为他们的模型制作对抗样本,然后部署这些对抗样本和我们的非平滑模型进行对抗。通常,我们的模型也会错误分类这些样本。最后,我们的思维实验揭示了:隐藏梯度不会给我们带来任何益处。
执行梯度掩模的防御策略通常会导致另一个模型,即:在特定方向和训练点的邻域非常平滑的模型,这会使得对手更难用破坏性的方式找到那些表明能够干扰输入候选方向的梯度。但是,对手可以训练一个替代模型:一个模仿被保护模型的副本——这可以通过观察被保护模型分配给对手仔细选择的输入标签而达成。
黑盒攻击论文介绍了用于执行这种模型提取攻击的程序。然后对手也可以使用这种替代模型的梯度来寻找被该被保护模型错误分类的对抗样本。在上述出自《关于机器学习中的安全和隐私科学》中关于梯度掩模的讨论中,我们以一个一维机器学习问题阐明了这种攻击策略。该梯度掩模现象在更高维度的问题上会加剧,但更加难以描述的。
我们发现对抗训练和防御升华都会偶尔执行某种梯度掩模。这两种算法明显都不是为执行梯度掩模而设计的,但当机器学习算法要进行自我防御的训练且未被给出具体的方法指令时,梯度掩模显然是该机器学习算法能相对轻松地创造的一种防御。如果我们将对抗样本从一个模型转移到另一个经过对抗训练或防御升华训练的模型,那么该攻击通常会成功——即使对第二个模型的直接进攻会失败时。这表明这两种技巧更致力于拉平模型和移除梯度,而不是确保其正确分类更多的点。
为什么对抗样本很难防御?
对抗样本难以防御是因为很难构造对抗样本处理过程的理论模型。对抗样本是解决那些对许多机器学习模型来说非线性、非凸性的优化问题方案,包括神经网络。因为我们没有好的理论工具来描述这些复杂优化问题的解决方案,所以也很难作出任何理论论据:防御能够排除一系列的对抗样本。
对抗样本也难以防御因为它们要求机器学习模型为每个可能的输入产生好的输出。大部分时间,机器学习模型表现良好,但只处理他们可能遇到的所有可能输入中的一小部分。
目前为止我们测试的每个策略都失败了是因为它无法自适应:它能阻止一种攻击,但它也将另一个脆弱性暴露于那些了解目前所使用防御的攻击者。设计一种能够对抗强大、自适应攻击者的防御手段是一个重要的研究领域。
结 论
对抗样本表明许多现代机器学习算法能以惊人的方式被打破。机器学习上的这些失败说明了即使是简单的算法也能表现的与设计者初衷迥然相异。我们鼓励机器学习研究人员参与进来,设计阻止对抗样本的方法,以缩短设计者初衷和算法表现之间的差距。
本文由 AI100 编译,转载需得到本公众号同意。
编译:AI100
原文链接:https://openai.com/blog/adversarial-example-research/