[论文精读]Membership Inference Attacks Against Machine Learning Models

中文译名:针对机器学习模型的成员推理攻击

会议名称: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在云中训练的黑匣子模型。我们的攻击是一种通用的、定量的方法来理解机器学习模型如何泄漏其训练数据集的信息。在选择要训练的模型类型或使用的机器学习服务类型时,我们的攻击可以作为选择指标之一。

我们的关键技术创新是阴影训练技术,它训练攻击模型,以区分目标模型对训练数据集成员和非成员的输出。我们证明在这种攻击中使用的阴影模型可以有效地使用合成或噪声数据创建。在由目标模型本身生成的合成数据的情况下,攻击不需要任何关于目标模型训练数据分布的先验知识。

从隐私角度来看,住院和其他医疗数据集的成员资格是敏感的。因此,我们的结果具有实质性的实际隐私含义。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1550046.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

34 | 实战一(上):通过一段ID生成器代码,学习如何发现代码质量问题

在前面几篇文章中,我们讲了一些跟重构相关的理论知识,比如:持续重构、单元测试、代码的可测试性、解耦、编码规范。用一句话总结一下,重构就是发现代码质量问题,并且对其进行优化的过程。 前面的内容相对还是偏理论。…

中腾国际团餐产业集团经验谈:如何让上海央厨配送更高效、更安心

上海作为国际大都市,近些年对餐饮行业的效率与品质提出了更高要求。中央厨房(央厨)以其规模化、标准化生产的优势,成为提升餐饮供应链效率的关键一环。而央厨配送,作为连接央厨与消费者的重要桥梁,其重要性不言而喻。中腾国际团餐…

HTTPS协议详解:从原理到流程,全面解析安全传输的奥秘

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storm…

uniapp实战教程:如何封装一个可复用的表单组件

在uniapp开发过程中,表单组件的使用场景非常广泛。为了提高开发效率,我们可以将常用的表单组件进行封装。本文将带你了解如何在uniapp中封装一个表单组件,让你只需要通过属性配置轻松实现各种表单,效果图如下: 一、准备…

ZYNQ PS 最小系统

ZYNQ PS 最小系统 ZYNQ 嵌入式开发流程 【正点原子】ZYNQ领航者V2之ARM篇 最小系统框图 最小系统步骤 创建 PS 双击 ZYNQ IP 核,启动配置界面: DDR 配置 小技巧,自动设置列宽: 串口配置 串口原理图: 配置串口引脚&…

sql注入工具升级:自动化时间盲注、布尔盲注

项目地址:https://github.com/iamnotamaster/sql-injecter 给我之前写的sql注入脚本进行了一些升级,此文章就是对升级内容的分析,升级内容如下: 使用占位符foo来填充payload里需要经常修改的部分 自动判断循环 支持爆破和二分查…

六练习题笔记

ps: 所有rpm包安装后的配置文件模板所在目录:/usr/share/doc/ x ### vsftpd有两种工作模式 连接方式: 命令连接(命令信道):21 数据连接(数据信道):20 和 随…

django的URL配置

1 django如何处理一个请求 首先Django要使用根URLconf模块,通过setting.py配置文件的ROOT_URLCONF来设置。 加载该模块后并查找变量 urlpatterns。这是一个Python的django.conf.urls.url()实例列表。 Django按顺序运行每个URL模式,并在匹配所请求的…

CHItrans简介--DVM

DVM基础flow 注:上图中,没有画出DVM指令对应的snoop request,相关snp请求如下所示: 对应的snp请求 Non-sync DVM trans flow Sync DVM trans flow Flow Control 后续的说明,参考: CHI协议之DVM操作_dvm r…

spring-boot 整合 mybatis

文章目录 Spring boot 整合Mybatis将数据返回到浏览器1、准备数据2. 创建一个 pojo 包,创建User实体类3. 创建一个mapper包,写一个UserMapper接口4. 创建一个service包,写一个UserService接口。5. 在 Service 包下创建一个子包,im…

如何制作Linux系统盘

文章目录 引言系统盘制作准备工作开始烧录 引言 有时候不想使用虚拟机来运行 linux 或者想要装个双系统,这时候就需要物理安装 linux 了。 其实跟装 windows 是一模一样的。 先烧录 u 盘,然后电脑插上 u 盘,重启电脑时换个启动盘&#xff…

吐血整理:国内一站式儿童有声绘本创作平台

儿童绘本儿童故事这个领域在Stable Diffusion、Midjourney、ChatGPT产品推出后开始有大量自媒体达人纷纷发布教程,热度一直都在。但由于创作门槛较高、需要对AI类和制作类软件都需要掌握、流程制作复杂,且由于创作者提示词的影响出图效果不稳定&#xff…

四气两尘监测站中空气质量传感器推荐

在快速发展的工业化进程中,空气质量已成为衡量一个地区环境健康水平的重要指标。随着公众环保意识的增强,对空气质量的关注不再局限于直观的蓝天白云,而是深入到更为细微、复杂的污染物层面,其中,“四气两尘”便是这一…

在matlab中Application Compiler后的软件无法打开

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&am…

jenkins 构建报错ERROR: Error fetching remote repo ‘origin‘

问题描述 修改项目的仓库地址后,使用jenkins构建报错 Running as SYSTEM Building in workspace /var/jenkins_home/workspace/【测试】客户端/client-fonchain-main The recommended git tool is: NONE using credential 680a5841-cfa5-4d8a-bb38-977f796c26dd&g…

基于SSM的学校运动会信息管理系统【附源码】

基于SSM的学校运动会信息管理系统(源码L文说明文档) 目录 4 系统设计 4.1 系统概述 4.2 系统结构设计 4.3 数据库设计 4.3.1数据库E-R图设计 4.3.2数据库表设计 5.1 用户功能模块的实现 5.1.1用户注册界面 5.1.2用户登录界…

PID控制算法(六)

#include <stdio.h> #include <stdlib.h>// 定义PID结构体 typedef struct {float SetSpeed;float ActualSpeed;float err;float integral;float vo_out; //控制器输出float err_last;float Kp;float Ki;float Kd;float limit_min; // 输出限制最小值flo…

2024最新版网络安全图成长路线图,从零基础到精通_网络安全防御技术发展路线图

学习网络安全一定要培养兴趣&#xff0c;兴趣是最好的老师 刚开始抱着去尝试的心态。先坚持看完一套基础视频&#xff0c;或者看几本入门书。了解信息安全到底是干嘛的。 带着尝试的心态去干靶场。 不断去练习&#xff0c;不管是打靶场还是去挖漏洞&#xff0c;遇到问题去请教…

使用Flask和Python开发自己的API

点击下方卡片&#xff0c;关注“小白玩转Python”公众号 本文章将一步一步教你如何使用Flask和Python从头开始设置自己的API。教程结束时&#xff0c;你将能够从头开始设置你自己的API。我将一步一步指导你&#xff0c;使你能够基于Flask和Python开发你自己的API。 什么是API&a…

Linux 应用层自定义协议与序列化

文章目录 一、应用层1、协议2、序列化 && 反序列化3、通过Json库进行数据的序列化 && 反序列化Json::Value类Json::Reader类Json::Writer类 二、为什么read、write、recv、send和Tcp支持全双工&#xff1f;发数据的本质&#xff1a;tcp支持全双工通信的原因&am…