【文章思路、算法分析】Membership Inference Attacks Against Machine Learning Models

白菜苗


如果你不小心又亦或是专门寻找这篇文献相关知识,那么很高兴能和你们分享这篇文章。

何谓成员推理攻击,陌生而又抽象?莫慌,现在我们就来探讨下针对机器学习的成员推理攻击是如何实现的,其实这也是本文的中心思想,如果了解了成员推理攻击的目的、如何实现的,那么这篇文章的核心思想你已经掌握了,后面的实验都是一些对比性实验和一些攻击防御策略,稍微次要点,

废话少说,那么我们按照文章的思路来。

1、成员推理攻击目的

【文章思路、算法分析】Membership Inference Attacks Against Machine Learning Models

图1:黑盒设置中的成员推理攻击。攻击者使用数据记录查询目标模型,并获得模型对该记录的预测。预测是记录属于某个类的概率向量,每个类一个。这个预测向量和目标记录的标签一起传递给攻击模型,由攻击模型推断记录是否在目标模型的训练数据集中。

图1想说明的是:

  1. 如果你有一个数据 d a t a ( r e c o r d , l a b e l ) data(record,label) data(record,label),你可以理解为你输进的是 d a t a ( x , y ) data(x,y) data(x,y),其中 x x x就是特征, y y y就是你数据的标签(例如属于哪个类别),好啦,你把它输进目标模型 T a r g e t M o d e l Target Model TargetModel,那么目标模型的输出结果是一个预测向量 p r e d i c t i o n prediction prediction,里面包含的元素都是概率(例如 [A:0.2,B:0.3,C:0.5],不一定这样,方便理解而已),这个向量的元素在[0,1]中,加起来等于1。这些概率也称为置信度值。 选择具有最高置信度值的类别作为数据记录的预测标签。
  2. 然后,我们获得了预测向量 p r e d i c t i o n prediction prediction,将它和真实标签 l a b e l label label(也就是我举例的 y y y),两个作为输入 ( p r e d i c t i o n , l a b e l ) (prediction, label) (prediction,label)输入到攻击模型 a t t a c k attack attack,然后攻击模型会输出一个结果。这个结果就会告诉你,你这个数据是否是属于目标模型 T a r g e t M o d e l Target Model TargetModel的训练集这个就是整篇论文想干的事。

2、阴影模型构建

【文章思路、算法分析】Membership Inference Attacks Against Machine Learning Models
图2:使用与训练目标模型相同的机器学习平台训练阴影模型。目标和阴影模型的训练数据集格式相同,但不相交。阴影模型的训练数据集可能重叠。所有模型的内部参数都是独立训练的。

图2想说明的是:

  • 首先,我们这个是黑盒攻击,不知道模型的算法,结构,超参数,那怎么办?那么阴影模型的意义就体现出来了,我构建阴影模型,你有10个类,我就构建10个阴影模型去模仿你的每个类别的行为。数据集格式相同,内容相似,在同样的ML API接口,是不是模型的输出结果也相似。换句话说,阴影模型的意义就是模仿目标模型,例如我们模仿一个人,是不是我模仿你的行为越多,说明我和你越相似,类似这个道理,我的每一个类,相当于你的每一个行为。 所以后面提到阴影模型越多,攻击效果越好也是基于这个原因,就越像嘛。

3、攻击模型的构造

【文章思路、算法分析】Membership Inference Attacks Against Machine Learning Models
图3:根据阴影模型的输入和输出训练攻击模型。对于影子模型训练数据集中的所有记录,我们查询模型并获得输出。这些输出向量被标记为“in”,并添加到攻击模型的训练数据集中。我们还查询了测试数据集与训练数据集不相交的阴影模型。该集合上的输出被标记为“out”,并被添加到攻击模型的训练数据集中。在构造了一个反映阴影模型在其训练和测试数据集中的黑匣子行为的数据集之后,我们训练了一组ctarget攻击模型,每个目标模型的输出类都有一个。

图3想说明的是:

  1. 首先,我们先看这个图:在这里,他用测试集和训练集(每个类别的)输入到自己对应的阴影模型里,然后阴影模型就会输出相应的 p r e d i c t i o n prediction prediction,那么我们再看看最右边数据集里的数据 ( p r e d i c t i o n , l a b e l , i n / o u t ) (prediction, label, in/out) (prediction,label,in/out),这是哪里来的呢,我们可以看看, p r e d i c t i o n prediction prediction是阴影模型输出的结果,那么这个我们是已知的,label又哪里来呢?是由我们测试集和训练集 ( r e c o r d , l a b e l ) (record, label) (record,label)来的,in/out又怎么区分呢,这个是我们认为打上的标签,参与阴影模型训练的就为“in”标签,参与测试的就为“out”标签。【文章思路、算法分析】Membership Inference Attacks Against Machine Learning Models
  2. 有了 ( p r e d i c t i o n , l a b e l , i n / o u t ) (prediction, label, in/out) (prediction,label,in/out)数据我们是不是可以训练我们的攻击模型呢?答案是的,我们可以细想,我们要判别的是一个数据是否是参与过目标模型的训练,那么结果有两个,一个是“是”,一个是“不是”,这就可以转化为二分类问题了。我们可以把 ( p r e d i c t i o n , l a b e l ) (prediction, label) (prediction,label)当成一个整体X(代表特征), i n / o u t in/out in/out代表标签 y y y。【文章思路、算法分析】Membership Inference Attacks Against Machine Learning Models
  3. 有了这个想法,那么我们是不是可以理解图1了,我们输入一个数据到目标模型,获得了预测向量 p r e d i c t i o n prediction prediction,将它和真实标签 l a b e l label label(也就是我举例的 y y y),两个作为输入 ( p r e d i c t i o n , l a b e l ) (prediction, label) (prediction,label)输入到攻击模型 a t t a c k attack attack,然后攻击模型会输出一个“in”/“out”的结果。"in"就说明参加了目标模型训练,"out"就是没有。【文章思路、算法分析】Membership Inference Attacks Against Machine Learning Models
  4. 那么怎么确保我我攻击模型输出的结果是真的呢,例如我们可以拿一个数据,这个是我们已知的 d a t a data data,参加过阴影模型训练的数据。我们是不是也知道它属于“in”标签,那么我们将 d a t a data data输入到目标模型,获得了预测向量 p r e d i c t i o n prediction prediction,将它和真实标签 l a b e l label label(也就是我举例的 y y y),两个作为输入 ( p r e d i c t i o n , l a b e l ) (prediction, label) (prediction,label)输入到攻击模型 a t t a c k attack attack,然后攻击模型会输出一个“in”的结果。是不是说明我们的攻击模型确实是可以正确判断的(当然这也并不能说明带有“in”标签的数据一定是在目标模型的数据集里,因为我们并不知道目标模型的数据集到底有什么数据)。

4、算法分析

【文章思路、算法分析】Membership Inference Attacks Against Machine Learning Models
这个算法是用于构建数据集的,当然这个数据集代表一个类别。我们看看他是怎么操作的。

  • 步骤1-5是对数据的初始化。 6-25是一整个迭代过程,那我们来细细研究探讨下。
  • 步骤7,将数据集x输入到目标模型,会得到一个预测向量y
  • 步骤8 y c y_c yc​>= y c ∗ y^*_c yc∗​,这一步骤我理解为是提纯操作,从步骤15可以看见,每次 y c y_c yc​赋值给 y c ∗ y^*_c yc∗​,说明每次迭代后都要进行比较,这个概率值只会越来越大,因为不符合条件, y c ∗ y^*_c yc∗​的值是不会变的。
  • 步骤9说明 y c y_c yc​要大于一个阈值 c o n f m i n conf_{min} confmin​,同时在预测向量y中判别为类别C的概率要为最大才符合条件。
  • 步骤10这个不太懂,因为文中也没有说明。
  • 步骤14-16就是数据更新。
  • 步骤17-23,我这样概括吧,k可以理解为特征,一开始它取最大值,当前面的if不符合条件是,就会进入步骤17-23。我举个例子说明,当我们描述一个人的时候,是不是越详细,越能确定一个人(就是k越大)。例如,我要对男生和女生进行分类,穿黑色衣服和牛仔裤的人就是女生,结果还有一些女生没算进来,那么是不是放宽要求,喔,原来只穿黑色衣服的也是女生,是不是能找到的人就更多了,K值得意思就这样,最大找不到符合要求的数据,那么我们就减小一下。
  • 步骤24就是把符合要求得数据集更新一下。

5、总结

文章的中心思想算是介绍完了,后面涉及一些实验,大部分都是对比试验,例如数据集大小对攻击效果的影响、不同平台API接口,哪个生成的目标模型更易受攻击,还有过拟合带来的影响等等,后面也提及到了一些缓解攻击的防御策略,这里就没有详细说了,看的话应该都能比较容易理解,当然有些我也不一定完全懂。如果有什么问题欢迎探讨!

【全文翻译】Membership Inference Attacks Against Machine Learning Models

好 啦 ! 到 此 结 束 , 希 望 能 帮 助 到 你 \color{maroon}{好啦!到此结束,希望能帮助到你} 好啦!到此结束,希望能帮助到你

上一篇:java-BufferedInputStream如何使读取操作更快?


下一篇:Linux c 开发-22 ZLog使用