中文译名:针对机器学习模型的成员推理攻击
会议名称:2017 IEEE Symposium on Security and Privacy (SP)
发布链接:Membership Inference Attacks Against Machine Learning Models | IEEE Conference Publication | IEEE Xplore
CODE:GitHub - csong27/membership-inference: Code for Membership Inference Attack against Machine Learning Models (in Oakland 2017)
我认为有必要看看人家的代码怎么写的。
阅读原因:要做一个成员推理攻击的任务,需要了解什么是成员推理攻击
探讨的核心内容:给定一个数据集和一个黑盒模型,决策是否这个数据集是模型的训练集。
1.研究背景:
机器学习即服务(可简单理解为云端大模型)可能侵害了用户的隐私来作为模型的训练数据。由于大模型公布出来的大多都是黑盒模型,用户无法得知自己的隐私数据是否被拿去非法当作训练集,隐私问题是需要被严肃对待的,因此提出了本文的研究方向:判断给定数据是否被作为训练集投入模型的构建中。
2.问题描述:
考虑这样一件事:有一组标注过的且分类过的数据集,假设使用机器学习算法来训练分类模型,该模型捕获数据记录内容和标签之间的关系。
置信度:对于任何输入的数据,模型输出记录该数据属于某个类的预测概率向量(每类一个这样的预测向量),把这些概率记作置信度。
选择预测概率最高的一个类别作为数据的预测类别。
假设攻击者具有对模型的查询访问权限,并且可以在任何数据记录上获取模型的预测向量。攻击者知道模型的输入和输出的格式,包括它们的数量和它们可以采用的值范围。还假设攻击者 (1) 知道机器学习模型的类型和架构,以及训练算法,或者 (2) 对用于训练模型的机器学习预测机(例如,“机器学习即服务”平台)具有黑盒访问权限。在后一种情况下,攻击者先验地不知道模型的结构或元参数。
攻击者可能对从中提取目标模型的训练数据集的总体有一些背景知识。例如,他可能独立地从总体中抽取样本,与目标模型的训练数据集脱节。或者,攻击者可能知道一些关于总体的一般统计数据,例如,特征值的边缘分布。
如果攻击者可以正确的判断是否数据集是模型的训练数据与否,则攻击者获胜。评价攻击精确率的标准矩阵是:准确率和召回率
3.成员推理:
总述
对于训练好的模型,都会天然地对训练数据集有着过拟合的效果:模型在面对训练数据集和从未见过的数据集的表现通常情况下是不同的。攻击者的目标是构建一个可以识别模型对成员 or 非成员这类数据输出表现的 不同之处的攻击模型。这样就可以依赖目标模型的输出来判断数据集是成员还是非成员。
为了训练攻击模型,作者构建了多个影子模型,目的是模仿目标模型的行为,使得二者输出相似。与目标模型相反,对于每一个构建的影子模型,都可以知道其真实事实,也就是特定的数据是否在其训练的数据集中。
基于此可以使用监督学习,对影子模型的输入和相应输出上进行监督训练(分别的标签是in或者out),教会攻击模型如何区分影子模型对其训练数据集成员的输出和非成员输出。(影子模型和攻击模型是不同的东西。影子模型是在模仿黑盒目标模型的输出形式,攻击模型是最终需要构建的一个二分类器,学习依据是目标模型的预测结果和标签值,输出是in / out OF 成员)
主要的挑战在于,当攻击者不知道目标模型的内部参数,只能通过公共 API 对其进行有限的查询访问时(黑盒),如何训练攻击模型以区分目标模型训练数据集中的成员和非成员。为了解决这个难题,作者开发了一种影子训练技术,使得可以在代理目标(影子模型)上训练攻击模型,而我们确实知道这些目标(影子模型)的训练数据集,因此可以对其进行监督训练。
个人小总结:首先要构建一些影子模型来完成对目标模型的模拟,然后对这些已经可以模拟目标模型的影子模型进行训练,记录训练的数据集,这些数据集是天然的影子模型的成员,是已知标签,因此可以进行有监督学习,训练攻击模型。
影子模型
对影子模型的训练:如果影子模型的训练数据集刚好和目标黑盒模型的训练数据集有重叠部分,那将会很好;如果没有任何重叠,这将是最差的情况。对影子模型的训练数据集来说倒是无所谓,只要能和目标模型的输出类似即可(相当于小蒸馏了)。
影子模型必须和目标模型使用相同的方法来训练,如果目标模型的训练算法和模型结构已知的话很容易,但是机器学习及服务的类型和结构均未知,不过攻击者可以使用与训练目标模型完全相同的服务(如谷歌预测 API)来训练影子模型,如上图。
影子模型越多,攻击模型就越精准。当影子模型在自己的训练数据集上运行时,攻击模型会识别出影子模型的行为与它们在训练期间未遇到的输入之间的差异。因此,更多的影子模型可以为攻击模型提供更多的训练素材。
生成影子模型的数据集
要训练影子模型,攻击者需要与目标模型训练数据分布相似的训练数据。文章提到了几种方法:
1.基于模型的综合
如果攻击者既没有真实的训练数据,也没与关于真实训练数据的分布统计,那么可以直接使用目标模型本身来为影子模型生成训练数据。直觉是,被目标模型以高置信度分类的记录在统计上应与目标的训练数据集相似,从而为影子模型提供良好的素材。生成数据集需要分两步:
(1)检索
使用爬山算法,在可能的数据记录空间中寻找被目标模型高置信度分类的输入;
(2)样本
根据这些记录合成数据。这个过程合成一条记录后,攻击者就可以重复这个过程,直到影子模型的训练数据集满为止。
合成过程的伪代码见算法 1。首先,确定攻击者希望生成合成数据的类 c。第一阶段是一个迭代过程。首先随机初始化一条数据记录 x。假设攻击者只知道数据记录的语法格式,则从该特征的所有可能值中均匀随机采样每个特征的值。在每次迭代中,提出一条新记录。只有当提出的记录能提高爬山目标(即被目标模型归类为 c 类的概率)时,才会被接受。
2.基于统计的综合
攻击者可能具有一些有关人口的统计信息,这些人口是从中提取目标模型的训练数据的。 例如,攻击者可能具有不同特征的边缘分布的先验知识。我们从阴影模型的边缘分布中独立地抽取每个特征的值,从而生成阴影模型的综合训练记录。 由此产生的攻击模型非常有效。
3.真实数据噪声化
攻击者可以访问一些与目标模型的训练数据相似的数据,并且可以将其视为“噪声”版本。在作者对位置数据集的实验中,通过翻转10%或20%随机选择特征的(二进制)值来模拟这一点,然后在产生的噪声数据集上训练阴影模型。这种情况下,目标和阴影模型的训练数据不是从完全相同的总体中采样,或者以非均匀的方式采样的情况。
训练攻击模型
如上图所示,训练攻击模型的流程:把所有影子模型的输出添加到攻击模型的训练集上,其中,对于影子模型的训练集及其经过影子模型的输出的集合添加标签IN;对于影子模型的测试集及其经过影子模型的输出的集合添加标签out,这样做到了监督学习。
图中影子模型的输入是数据集和对应的类别(这个类别:机器学习模型学习了多种类别的预测,文中为每一个类别设计了一个影子模型来专门模仿机器学习在该类别中的表现)
攻击模型的数据集需要的:预测结果(这个预测结果是影子模型的输出)、类别标签(字面意思)和 in/out标签(这个标签是人工标注的,参与影子模型训练的数据就是in标签;测试的就是out标签。
那么攻击模型的任务实际上可以认为是一个二分类任务,输入的所有数据是(prediction, class label),对应的标签就是in/out
评价
1.数据集
CIFAR:CIFAR-10由10个类别的32×32彩色图像组成,每个类别有6,000个图像。 总共有50,000个训练图像和10,000个测试图像。 CIFAR-100具有与CIFAR-10相同的格式,但是它具有100个类,每个类包含600张图像。每个类有500张训练图像和100张测试图像。 在攻击实验中使用了该数据集的不同部分,以显示训练数据集大小对攻击准确性的影响。
购买记录数据集:基于Kaggle的“获得有价值的购物者”挑战数据集,其中包含数千个人的购物记录。挑战的目的是设计准确的优惠券促销策略。 每个用户记录都包含其一年内的交易。 交易包括许多字段,例如产品名称,连锁店,数量和购买日期。
对于论文中的实验,作者导出了一个简化的购买数据集(包含197、324条记录),其中每个记录包含600个二进制特征。 每个功能对应一个产品,并表示用户是否购买了它。 为了设计分类任务,首先将记录分为多个类别,每个类别代表不同的购买方式。 在实验中,使用5种不同的分类任务,分别使用不同数量的类{2,10,20,50,100}。分类任务是在给定600个特征向量的情况下预测用户的购买风格。 使用从购买数据集中随机选择的10000条记录来训练目标模型。 数据集的其余部分有助于阴影模型的测试集和(如有必要)训练集。
位置信息数据集:从Foursquare社交网络中公开使用的移动用户位置“签到”集中创建了一个位置数据集,仅限于曼谷地区,并于2012年4月至2013年9月收集了11592位用户和119744个位置,共计1136481个签到位置。
文中筛选出签到少于25次的用户和访问量少于100次的场所,留下了5010个用户个人资料。 对于每个位置地点,都有地理位置及其位置类型(例如,印度餐厅,快餐等)。 位置类型总数为128。我们将曼谷地图划分为0.5 k m × 0.5 k m 的区域,从而产生318个区域,每个区域至少有过一个用户签到。
德州住院数据集:德克萨斯州卫生服务部于2006年至2009年发布的医院出院数据公共用途文件。文中使用10000个随机选择的记录来训练目标模型。
MINST:70000个手写数字组成的数据集,格式化为32×32的图像并进行标准化
人口普查收入数据集:使用随机选择的10000条记录来训练目标模型。
2.目标模型(黑盒)
Google Prediction API、amazonml、本地的卷积神经网络
3.评价指标
精度、召回率
4.结论
我们设计、实现并评估了针对机器学习模型的第一次成员推断攻击,特别是使用Google Prediction API和Amazon ML在云中训练的黑匣子模型。我们的攻击是一种通用的、定量的方法来理解机器学习模型如何泄漏其训练数据集的信息。在选择要训练的模型类型或使用的机器学习服务类型时,我们的攻击可以作为选择指标之一。
我们的关键技术创新是阴影训练技术,它训练攻击模型,以区分目标模型对训练数据集成员和非成员的输出。我们证明在这种攻击中使用的阴影模型可以有效地使用合成或噪声数据创建。在由目标模型本身生成的合成数据的情况下,攻击不需要任何关于目标模型训练数据分布的先验知识。
从隐私角度来看,住院和其他医疗数据集的成员资格是敏感的。因此,我们的结果具有实质性的实际隐私含义。