转载

OpenAI研究 用对抗样本攻击机器学习

对抗性示例是机器学习模型的输入,攻击者故意设计这些模型以导致模型出错;它们就像机器的视错觉。在这篇文章中,我们将展示对抗性示例如何跨不同的媒体工作,并将讨论为什么保护系统免受它们的侵害可能很困难。

在 OpenAI,我们认为对抗性示例是安全性的一个很好的方面,因为它们代表了 AI 安全中的一个具体问题,可以在短期内解决,并且因为修复它们非常困难,需要认真的研究工作。(尽管我们需要探索机器学习安全的许多方面,以实现我们 构建安全、广泛分布的 AI 的目标。)

要了解对抗性示例是什么样的,请考虑 解释和利用对抗性示例中的演示:从熊猫图像开始,攻击者添加了一个小的扰动,该扰动已被计算为使图像被识别为长臂猿具有高信心。

对抗图像训练

该方法非常稳健; 最近的研究 表明,对抗性示例可以打印在标准纸上,然后用标准智能手机拍照,并且仍然可以愚弄系统。

对抗性图像 2
对抗性的例子可以打印在普通纸上并用标准分辨率的智能手机拍照,但仍然会导致分类器在这种情况下将“洗衣机”标记为“保险箱”。

对抗性的例子有可能是危险的。例如,攻击者可以通过使用贴纸或油漆来创建对抗性停车标志来瞄准自动驾驶车辆,车辆会将其解释为“让行”或其他标志,如使用对抗性示例对深度学习系统进行的实用黑盒攻击中所讨论的 那样

根据加州大学伯克利分校、OpenAI 和宾夕法尼亚州立大学的最新研究“对 神经网络策略的对抗性攻击”以及内华达大学里诺分校的研究“ 深度强化学习对政策的脆弱性” ,强化学习代理也可以被对抗性示例操纵感应攻击。研究表明,广泛使用的 RL 算法(例如 DQN、  TRPO和 A3C)容易受到对抗性输入的影响。即使存在细微到人类无法察觉的扰动,这些也会导致性能下降,导致代理 在应该上升的时候将乒乓球拍向下移动,或干扰其在 Seaquest 中发现敌人的能力。

海报1

如果您想尝试破坏自己的模型,可以使用 cleverhans ,这是一个由Ian Goodfellow 和 Nicolas Papernot联合开发的开源库,  用于测试您的 AI 在对抗性示例中的弱点。

对抗性例子给我们一些关于人工智能安全的牵引力

当我们思考 AI 安全研究时,我们通常会想到该领域中一些最困难的问题——我们如何确保比人类聪明得多的复杂强化学习代理按照其设计者预期的方式行事?

对抗性示例向我们表明,即使是简单的现代算法,无论是用于监督学习还是强化学习,都已经可以以我们不希望的方式表现出来。

尝试防御对抗样本

使机器学习模型更健壮的传统技术,例如权重衰减和丢失,通常不提供针对对抗性示例的实际防御。到目前为止,只有两种方法提供了重要的防御。

对抗性训练:这是一种蛮力解决方案,我们简单地生成大量对抗性示例,并明确训练模型不要被它们中的每一个所愚弄。cleverhans库中提供了对抗训练的开源实现  ,其用法在以下 教程中进行了说明。

防御性蒸馏:这是一种策略,我们训练模型输出不同类别的概率,而不是硬性决定输出哪个类别。概率由早期模型提供,使用硬类标签在相同任务上进行训练。这创建了一个模型,其表面在对手通常会尝试利用的方向上平滑,使他们很难发现导致错误分类的对抗性输入调整。(蒸馏最初是在 神经网络中蒸馏知识 中作为一种模型压缩技术引入的,其中训练小模型以模仿大模型,以获得计算节省。)

然而,即使是这些专门的算法也可以通过为攻击者提供更多的计算火力来轻松破解。

失败的防御:“梯度掩蔽”

为了举例说明简单的防御是如何失败的,让我们考虑一下为什么称为“梯度掩蔽”的技术不起作用。

梯度掩蔽”是在 使用对抗样本对深度学习系统进行实用黑盒攻击中引入的一个术语。描述一整类失败的防御方法,这些方法通过尝试拒绝攻击者访问有用的梯度来起作用。

大多数对抗性示例构造技术使用模型的梯度来进行攻击。换句话说,他们看着一张飞机的图片,他们测试图片空间中的哪个方向使“猫”类的概率增加,然后他们在那个方向稍微推动(换句话说,他们扰乱输入)方向。修改后的新图像被误认为是一只猫。

但是,如果没有梯度怎么办——如果对图像的无穷小修改不会导致模型输出发生变化怎么办?这似乎提供了一些防御,因为攻击者不知道向哪个方向“推送”图像。

我们可以很容易地想象出一些非常简单的方法来摆脱梯度。例如,大多数图像分类模型可以以两种模式运行:一种模式只输出最有可能类别的标识,另一种模式输出概率。如果模型的输出是“99.9% airplane, 0.1% cat”,那么输入的微小变化会给输出带来微小的变化,梯度告诉我们哪些变化会增加“cat”类别的概率。如果我们在输出只是“飞机”的模式下运行模型,那么输入的微小变化根本不会改变输出,梯度也不会告诉我们任何信息。

让我们进行一个思想实验,看看通过以“最有可能类别”模式而不是“概率模式”运行模型,我们可以在多大程度上保护我们的模型免受对抗性示例的侵害。攻击者不再知道去哪里找到将被归类为猫的输入,因此我们可能有一些防御措施。不幸的是,之前被分类为猫的每张图像现在仍然被分类为猫。如果攻击者可以猜测哪些点是对抗样本,这些点仍然会被错误分类。我们没有让模型更健壮;我们刚刚为攻击者提供了更少的线索来找出模型防御中的漏洞所在。

更不幸的是,事实证明攻击者有一个很好的策略来猜测防御中的漏洞在哪里。攻击者可以训练他们自己的模型,一个具有梯度的平滑模型,为他们的模型制作对抗样本,然后将这些对抗样本部署到我们的非平滑模型上。很多时候,我们的模型也会对这些示例进行错误分类。最后,我们的思想实验表明隐藏梯度并没有让我们取得任何进展。

执行梯度掩蔽的防御策略通常会产生一个在特定方向和训练点邻域非常平滑的模型,这使得对手更难找到指示良好候选方向的梯度,以破坏模型的方式扰乱输入. 然而,对手可以训练 替代 模型:通过观察防御模型分配给对手精心选择的输入的标签来模仿防御模型的副本。

防御模型与替代模型

黑盒攻击论文中介绍了执行此类模型提取攻击的过程。然后,对手可以使用替代模型的梯度来找到也被防御模型错误分类的对抗样本。在上图中,转载自《 机器学习中的安全和隐私科学》中对梯度掩蔽的讨论,我们用一维 ML 问题说明了这种攻击策略。对于更高维度的问题,梯度掩蔽现象会加剧,但更难描述。

我们发现对抗训练和防御蒸馏都意外地执行了一种梯度掩蔽。这两种算法都没有明确设计用于执行梯度掩蔽,但梯度掩蔽显然是机器学习算法可以相对容易地发明的一种防御方法,当它们被训练来保护自己并且没有给出关于如何这样做的具体说明时。如果我们将对抗性示例从一个模型转移到第二个经过对抗性训练或防御蒸馏训练的模型,攻击通常会成功,即使对第二个模型的直接攻击会失败。这表明这两种训练技术更多地是为了使模型变平和消除梯度,而不是确保它正确地对更多点进行分类。

为什么很难防御对抗样本?

对抗性样本很难防御,因为很难构建对抗性样本制作过程的理论模型。对抗性示例是针对许多 ML 模型(包括神经网络)的非线性和非凸优化问题的解决方案。因为我们没有很好的理论工具来描述这些复杂优化问题的解决方案,所以很难提出任何一种理论论证来证明防御会排除一组对抗性的例子。

对抗性示例也很难防御,因为它们需要机器学习模型 为每个可能的输入产生良好的输出。大多数时候,机器学习模型工作得很好,但只能处理它们可能遇到的所有可能输入中的一小部分。

到目前为止,我们测试过的每一种策略都失败了,因为它不是 自适应的:它可能会阻止一种攻击,但它会给知道正在使用的防御措施的攻击者留下另一种漏洞。设计能够抵御强大的自适应攻击者的防御是一个重要的研究领域。

结论

对抗性示例表明,许多现代机器学习算法可以以令人惊讶的方式被破解。机器学习的这些失败表明,即使是简单的算法,其行为也可能与设计者的意图大相径庭。我们鼓励机器学习研究人员参与并设计方法来防止对抗性示例,以缩小设计师的意图与算法行为之间的差距。