论文笔记:Membership Inference Attacks Against Machine Learning Models

Membership Inference Attacks Against Machine Learning Models

简介:这篇文章关注机器学习模型的隐私泄露问题,提出了一种成员推理攻击:给出一条样本,可以推断该样本是否在模型的训练数据集中——即便对模型的参数、结构知之甚少,该攻击仍然有效。其核心在于其提出的shadow learning技术。

问题设定

考虑多分类问题,模型的输出是一个预测向量(prediction vector),每一维代表样本属于对应类别的可能性。攻击者知道模型输入和输出的取值空间,可以以black-box的方式使用模型:向模型查询记录并获得输出,但不知道模型的结构和参数。另外,攻击者可以训练相同的模型,即使它不知道模型的结构、算法(这主要使针对Machine learning as a service而言,本文中即指Google Prediction API和Amazon Machine Learning,用户只需提供数据,这些服务即可训练模型,但具体训练算法不由用户指定)。

成员推理攻击

攻击方式

出发点: 机器学习模型在其训练数据和初次遇见的数据上的表现往往不同,可据此推断某条数据是否在其训练数据集中。

基本思想: 若已知目标模型的训练集,那么对于样本 ( x , y ) (\textbf{x}, y) (x,y), 设目标模型的输出为预测向量 y \textbf y y, 根据其是否在目标模型的训练集中,可以构建 ( y , y , i n ) (y, \textbf{y}, in) (y,y,in) ( y , y , o u t ) (y, \textbf{y}, out) (y,y,out), 将 y \textbf{y} y作为feature, i n in in o u t out out 作为label,可以训练二分类模型。即攻击模型是一个二分类模型,其以目标模型的输出作为输入,判断样本是否在目标模型的训练集中。
在这里插入图片描述

​ 该想法的关键在于攻击者其实不知道目标模型的训练集,因此文章提出了影子学习的技术,构建与原目标模型训练集相似的数据集,在此数据集上训练同种模型(影子模型,shadow model),用影子模型来构建 ( y , y , i n ) (y, \textbf{y}, in) (y,y,in) ( y , y , o u t ) (y, \textbf{y}, out) (y,y,out)
在这里插入图片描述

影子模型

影子学习的关键在于如何构建与目标模型相似的训练集,文章给出了三种途径:

Model-based synthesis: 直观上,如果目标模型以很高的概率给出了某条record的类别,那么该record与目标模型训练集中的数据应该是十分相似的。所以,可以用目标模型本身来构建影子模型的训练数据:
在这里插入图片描述
该算法可以生成一条 c c c类别的数据:先随机初始化 x \textbf x x, 若目标模型在 x \textbf x x上的输出为类别 c c c y c \textbf{y}_c yc 大于其他维的取值)且大于一个阈值 c o n f m i n conf_{min} confmin,那么接受 x \textbf{x} x;否则随机改变 x \textbf x x k k k个属性,继续上述步骤。 k k k的大小可以控制搜索速度。

Statistics-based synthesis: 攻击者知道目标模型训练数据的分布信息,比如feature的边缘分布,那么可以直接由分布生成数据。

Noisy real data: 攻击者也许可以获得和目标模型训练集数据相似的数据,可以认为是目标模型训练集的噪声版本,直接利用之。

攻击模型

训练 k k k 个影子模型,然后对于每一个影子模型,利用其训练集构建 ( y , y , i n ) (y, \textbf{y}, in) (y,y,in)作为样本加入到攻击模型的训练集中,再对每一个影子模型构建一个与其训练集同样大小且不相交的测试集,利用其构建 ( y , y , o u t ) (y, \textbf{y}, out) (y,y,out),加入到攻击模型的训练集中.

得到攻击模型的训练集后,根据 y y y的取值将其分为 c t a r g e t c_{target} ctarget(y的种类数)部分,每一部分训练一个二分类器。训练二分类器的算法无限定。这样,当给定样本 ( x , y ) (\textbf{x}, y) (x,y), 则可先将其 x \textbf{x} x输入目标模型,得到 y \textbf{y} y,再根据 y y y的取值将 y \textbf{y} y输入相应的二分类器,判断该样本是否在目标模型的训练数据集中

实验设计

数据集

CIFAR: CIFAR-10:32x32的彩色图像,有10个类别,每类6000张图,总共50000张训练图片,10000张测试图片。CIFAR-100有100个类别,每类600张图,其中500训练,100测试。本文实验中,对CIFAR-10,训练集大小分别设置为2500,5000,10000和15000;CIFAR-100则是4600,10520,19920和29540。

Purchases: Kaggle提供的数千人的shopping历史数据,每一个用户的记录包括其一年内的交易记录,包括产品名、店铺、数量和日期。本文采用了简化版本:197324条数据,每一条由600个二进制位构成,每一位表示是否购买了某一产品。将这些数据聚成多个类别,每一类表示一种购物风格。本文实验中的任务是给定一个600位的向量,判断其购物类别。实验中,类别总数分别设置为2,10,20,50,100。每次实验随机选择10000条数据作为目标模型的训练数据,其余的作为其测试数据和影子模型的训练数据。

Locations: 四方的check-in数据。包含11592个用户和119744个位置,共1136481条签到数据。经过处理后每条记录由446个二进制位组成。将所有数据聚类成30个类,实验中任务是给定向量,判断其所属类别。 随机选择了1600条数据作为目标模型的训练数据,其余的作为其测试数据和影子模型的训练数据。

Texas hospital stays: 实验使用的数据包括67330条记录,每个记录由6170个二进制位组成。随机选择10000条数据作为目标模型的训练数据。

MNIST: 70000张32x32的手写图像数据,随机选择10000条数据作为目标模型的训练数据。

UCI Adult(Census Income): 48842条人口普查数据,每条记录由14个属性构成,包括年龄、性别,受教育程度、工作时长等。实验任务是判断一个人年收入是否超过50K刀。随机选择10000条数据作为目标模型的训练数据。

目标模型

Google Prediction API: 无参数可调节,用户只能上传数据并获得查询API

Amazon ML: 可调节maximum number of passes和L2 regularization amount,实验中分别设为 ( 10 , 1 e − 6 ) (10, 1e-6) (10,1e6) ( 100 , 1 e − 4 ) (100, 1e-4) (100,1e4)

Neural networks: 使用Torch7来构建神经网络

在CIFAR数据集上,训练了一个包含两个卷积层和最大池化层以及一个全连接层和一个softmax层的CNN。激活函数为Tanh,学习率为0.001,学习率衰减为 1 e − 07 1e-07 1e07,最大epochs为100。

在purchase训练了一个包含一个隐藏层和一个softmax层的全连接神经网络。

实验设置

CIFAR数据集只训练本地神经网络。

purchase数据集训练了本地神经网络、Google以及Amazon的机器学习服务(这三个目标模型的相同的训练集)。

其他数据集只在Google或Amazon的机器学习服务上训练。

影子模型数量:CIFAR为100,purchase为20,Texas hospital stay 为10,location为60,MNIST为50,Adult为20。

评价方式

从目标模型的训练集和测试集中选出相同数量的样本向攻击模型查询,计算查询结果的precision和recall。相同数量是为了使攻击模型的baseline accuracy 为0.5。

对不同的类别分别计算上述评价标准,因为同一数据集和同一目标模型,攻击模型对不同类别样本的推理能力有很大不同。

实验结果

本文实验非常详细,具体实验结果及分析见原文。

总结评价

本文将成员攻击转换成了机器学习问题,影子学习的想法比较有意思。

不过,从实验结果看,我个人认为其方法只是利用了目标模型再训练数据上的预测向量熵值低而在非训练集数据上的预测向量熵值高这一点。比如,目标模型对训练数据的输出往往是(0.1,0.1,0.8)这种很集中的向量,而对非训练数据大都是(0.3,0.3,0.4)这种。尽管文章实验分析很多,但我认为能攻击的基础还是在这里。
在这里插入图片描述
从上图很容易看出这一点,只有当目标模型在测试集和训练集上的预测效果差距很大且训练集上效果很好的情况下,攻击模型才能有较好的表现,其他情况和瞎猜区别不大。

文章分析中也认为这是攻击能奏效的一种因素,并提出了提高预测向量熵值的方案来抵御攻击。至于这种方法能在多大程度上抵御攻击,有待实验验证,有时间的时候试试。

另外,文章在评价攻击模型时,从目标模型的测试集和训练集中取出相同数量的记录向攻击模型查询,并以此将文章的baseline定为0.5,也就是说攻击模型随便猜的话会有0.5的准确率。然而,结合文章给出的目标模型在训练集和测试集上的准确率表:
在这里插入图片描述
我们可以提出一个很naive的攻击模型:只要目标模型分类正确,我们就认为相应记录时训练集中的;反之,只要分类错误,就认为是测试集中的。估算一下这个模型的准确率:根据上表,取目标模型在训练集上的准确率为平均值0.94,在测试集上为平均值0.57。那么概率naive攻击模型的准确率为0.685。这比0.5要高得多

  • 25
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 24
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值