编程语言
首页 > 编程语言> > 【文章思路、算法分析】Membership Inference Attacks Against Machine Learning Models

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

作者:互联网

白菜苗


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

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

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

1、成员推理攻击目的

在这里插入图片描述

图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、阴影模型构建

在这里插入图片描述
图2:使用与训练目标模型相同的机器学习平台训练阴影模型。目标和阴影模型的训练数据集格式相同,但不相交。阴影模型的训练数据集可能重叠。所有模型的内部参数都是独立训练的。

图2想说明的是:

3、攻击模型的构造

在这里插入图片描述
图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”标签。在这里插入图片描述
  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。在这里插的式入图片描述
  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"就是没有。在这里插入图片描述
  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、算法分析

在这里插入图片描述
这个算法是用于构建数据集的,当然这个数据集代表一个类别。我们看看他是怎么操作的。

5、总结

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

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

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

标签:Inference,训练,Attacks,模型,prediction,Against,label,攻击,数据
来源: https://blog.csdn.net/weixin_43682519/article/details/110678672