实践AI小课:了解下机器学习中的黑盒模型

点击上方关注,All in AI中国

随着关于人工智能的炒作越来越多,关于对抗性例子的讨论也越来越多。对抗性例子(也称为攻击)是一种由机器学习模型错误分类的输入。这些输入通常是高维输入,例如照片、音频样本、文本串,甚至软件代码。

要理解对抗性示例的关键之一是首先要了解:

  • 机器学习模型如何做出决策
  • “数据流形”和更高维空间
  • 对抗性噪音或扰动

由于这些概念对于在高维空间中可视化具有挑战性,因此我们将通过一个简单的二维示例来演示对抗攻击中使用的一些核心技术的示例。这将有助于我们更好地理解更高维度的这些概念。

我们将构建一个逻辑回归分类器,它将作为我们打算攻击或欺骗的模型,或者我们的“受害者”模型。然后,我们将介绍如何使用基于梯度的方法来攻击我们的受害者和受害者的黑盒版本。 (这里可以看到用于制作这篇文章的所有代码)(https://github.com/adrian-botta/understanding_adversarial_examples/blob/master/adversarial_examples_logistic_regression.ipynb)

建立“受害者”模型

让我们借用MartínPellarolo的例子,从虹膜数据集的子集来构建逻辑回归。我们将调用两个输入变量X1和X2以及类0和类1来保持简单。

实践AI小课:了解下机器学习中的黑盒模型

虹膜数据集的子集

在训练机器学习模型时,我们的目标是确定这个二维空间中最能将两个类别分开的行。幸运的是,考虑到这些数据,这会是一项简单的任务。为此,我们将拟合逻辑回归,该回归将创建属于类1的数据点的概率分布。使用sigmoid函数(表示为g)和一些参数θ,然后将这个概率分布拟合到我们的数据中。

实践AI小课:了解下机器学习中的黑盒模型

具有参数θ的Sigmoid函数

通过改变矩阵θ中的参数,我们可以调整函数g以最好地拟合我们的数据X。

实践AI小课:了解下机器学习中的黑盒模型

我们将使用二元交叉熵损失作为损失函数来确定模型的预测与基础事实的接近程度。

实践AI小课:了解下机器学习中的黑盒模型

二进制交叉熵损失

实践AI小课:了解下机器学习中的黑盒模型

损失函数相对于(w.r.t.)θ的偏导数告诉我们改变θ值以改变损耗所需的方向。在这种情况下,我们希望尽量减少损失。

实践AI小课:了解下机器学习中的黑盒模型

损失函数的偏导数w.r.t. θ

实践AI小课:了解下机器学习中的黑盒模型

一旦我们将损失函数最小化,通过对θ进行定向更新,我们的受害者模型就会受到训练!

实践AI小课:了解下机器学习中的黑盒模型

受害者模型的第1类概率分布

上图显示了该空间中属于1类的任何点的模型概率分布,与0类(1-P(y = 1))相反。它还以0.5的概率阈值为特征模型的决策边界。如果一个点高于该行,则它属于第1类的概率将低于50%。由于模型在此阈值处’决定’,它将指定0作为其标签预测。

攻击受害者模型

基于雅可比或梯度的攻击的目的,在Goodfellow等人的“解释和利用对抗性实例”中的描述,是在受害者模型的决策边界上移动一个点。在我们的例子中,我们将采用通常被归类为0类的点,并将其“推”到受害者模型的决策边界上,将其归类为1类。当使用更高维度时,对原始点的这种改变也称为扰动。因为我们对输入做了很小的改动。

实践AI小课:了解下机器学习中的黑盒模型

将数据点“推”到受害者模型的决策边界上

您可能还记得,在训练逻辑回归时,我们使用损失函数和损失函数的导数w.r.t. θ来确定θ需要如何改变以最小化损失。作为攻击者,在充分了解受害者模型如何工作的情况下,我们可以通过更改函数的其他输入来确定如何更改损失。

实践AI小课:了解下机器学习中的黑盒模型

损失函数的偏导数w.r.t. X

损失函数的偏导数w.r.t. X确切地表示我们需要改变X的值来改变受害者模型的损失。

实践AI小课:了解下机器学习中的黑盒模型

由于我们想要攻击模型,我们需要最大化其损失。改变X的值本质上就是在二维空间中移动X,方向只是一个对立的扰动的一个组成部分,我们还需要考虑到一个步骤(表示为)需要多大的步长才能在这个方向上跨越决策边界。

实践AI小课:了解下机器学习中的黑盒模型

对手必须考虑使用哪些数据点或输入,以及在决策边界上成功推送点所需的最小值。 (注意:其他技术允许从随机噪声中创建对抗性示例)

实践AI小课:了解下机器学习中的黑盒模型

使用epsilon = 0.5在受害者模型的决策边界上“推”几个数据点

我们已经成功创建了一些对抗性的例子!

......好吧,你可能在想:

  1. “我们只是移动了一些点数。这些点现在只是不同的点...“
  2. “......我们能够做到这一点因为我们了解受害者模型的一切。如果我们不知道受害者模型是如何运作的呢?”

你是对的,我们将回到第1点,但Nicolas Papernot等人的实用黑盒攻击机器学习技术将帮助我们理解第二点。

攻击黑匣子模型:

当我们了解模型的所有内容时,我们将其称为“白盒”模型,当我们对模型的工作方式一无所知时,我们将其称为“黑盒子”。我们可以将黑盒模型想象成一种API,通过发送输入和接收一些输出(标签,类号等)来ping。了解黑盒攻击至关重要,因为它们证明隐藏在API背后的模型看似安全,但事实上仍然容易受到攻击。

Papernot的论文讨论了基于雅可比的数据集增强技术,该技术旨在训练另一个模型,称为替代模型,以与受害者模型共享非常相似的决策边界。一旦替代模型被训练为具有与受害者模型几乎相同的决策边界,则创建用于在替代模型的决策边界上移动点的对抗扰动也可能跨越受害者模型的决策边界。他们通过探索受害者模型决策空间周围的空间并确定受害者的反应来实现这一目标。

训练替代模型

这种技术可以被描述为一个孩子去学习惹恼父母。孩子开始时并没有先想到让父母生气或不生气,但他们可以通过在一周内选择一组随机动作来测试他们的父母,并注意他们的父母如何回应这些行为。虽然父母可能会对每个人表现出非二进制的回应,但我们还是假装孩子的行为不是坏的就是好的(两个类别)。

在第一周之后,这个孩子已经了解了一些困扰他们父母的事情,并对其他什么会打扰他们的父母可以进行有根据的猜测。在接下来的一周,孩子把那些成功的行动记录了下来,把不成功的也记录下来,每个星期,孩子都会重复这一点,注意到他们的父母的反应,调整自己的理解,知道确切的知道,什么让他们烦恼,什么不会让他们烦恼。

基于雅可比矩阵的数据集增强的工作方式与随机抽取初始数据样本并用于训练非常糟糕的替代模型相同。对抗性示例是从数据集创建的(使用之前基于梯度的攻击)。在这里,对抗性示例是模型梯度方向上的一个步骤,以确定黑盒模型是否将以与替代模型相同的方式对新数据点进行分类。

实践AI小课:了解下机器学习中的黑盒模型

替代模型的决策边界收敛于决策边界

增强数据由黑盒模型标记,用于训练更好的替代模型。就像孩子一样,替代模型可以更准确地理解黑盒模型的决策边界。经过几次迭代后,替代模型几乎与黑盒模型共享完全相同的决策边界。

替代模型甚至不需要与黑盒子相同类型的机器学习模型。事实上,一个简单的多层感知器足以学习复杂卷积神经网络足够接近的决策边界。最终,通过少量数据样本,可以成功攻击数据增强和标记的几次迭代以及黑盒模型。

点积的诅咒:

现在,回到第1点:你是对的,我是在二维空间中移动点。虽然这是为了保持示例简单,但是对抗性攻击利用了放大信号的神经网络的特性。

实践AI小课:了解下机器学习中的黑盒模型

点积放大了来自小的对抗扰动的信号

在我们的二维示例中,要在受害者模型的决策边界上移动点,我们需要使用步长来移动它。当神经网络的权重矩阵与正常输入相乘时,将每个权重和每个输入值的乘积相加。然而,在对抗性输入的情况下,对抗信号的附加求和将信号放大为总输入维数的函数。也就是说,为了实现跨决策边界所需的步长,我们需要随着输入维数的增加对每个X值进行较小的更改。输入维度越大,我们就越难注意到对抗性扰动,这种效应是MNIST的对抗性示例比使用ImageNet的对抗性示例更明显的原因之一。

基于梯度的攻击已被证明是利用深度学习模型学习和决定方式的有效方法。黑盒攻击表明,只要我们能够访问受害者模型的输入和输出,我们就可以创建足够好的模型副本以用于攻击。但是,这些技术存在缺陷。要使用基于梯度的攻击,我们需要确切地知道输入是如何嵌入的(转换为机器可读格式,如矢量)。

例如,图像通常表示为像素的二维矩阵或三维矩阵,一致的信息表示。另一方面,可以使用一些秘密的预训练词嵌入或学习嵌入来嵌入其他类型的非结构化数据,例如文本。因为我们不能对一个词求导,我们需要知道这个词是如何表示的。训练替代模型需要一组对黑盒模型可能可检测的ping信号。研究人员正在寻找越来越多的方法来保护他们的模型免受对抗性攻击。无论如何,我们必须积极了解模型的漏洞。

实践AI小课:了解下机器学习中的黑盒模型


分享到:


相關文章: