成员推理攻击是一种面向AI模型的数据隐私窃取,攻击者以判断==数据是否来源于AI模型的训练集==为目标,本质上是对未知来源的数据进行==二分类==,给出成员数据或者非成员数据的判定。
攻击者训练一个二分类器,该分类器将==目标分类器==预测的数据样本的置信度分数向量作为输入,预测该数据样本是目标分类器训练数据集的成员数据还是非成员数据。
**目标分类器**:已经被训练的机器模型,通常用于分类任务
**数据样本的置信度分数向量**:当一个数据样本被输入到分类器中时,分类器不仅会预测样本属于哪一个类别,而且通常会输出一个置信度分数向量。这个向量包含了对于每个可能类别的预测置信度。例如,在一个猫狗图片分类任务中,对于一个输入的图片,分类器可能会输出一个向量 [0.8, 0.2],表示模型预测这张图片为“猫”的置信度为80%,为“狗”的置信度为20%。
Membership Inference Attacks Against Machine Learning Models
模型的查询仅限于给出**input**,返回模型的**output**(黑盒子问题),在训练集和模型结构位置的情况下,我们面临的最大问题就是**如何训练attacker模型**,因此本论文提出了**影子模型**,通过影子模型对attacker进行训练。
**1.构造影子模型**
- **目的**:构建一个或多个影子模型来模==拟目标模型的行为==。影子模型不需要和目标模型完全相同,但应该具有类似的结构和训练方式。
- **实现**:对于目标模型中的每个类别标签,可以构建一个或多个影子模型。例如,如果目标模型是一个用于识别图片中猫和狗的分类器,可以为“猫”和“狗”的类别各构建一个影子模型。
- **数据**:对于每个影子模型,需要准备训练和测试数据。这些数据应尽可能模拟目标模型的训练数据的统计特性。
**2.训练攻击器**
- **目的**:使用从影子模型的输出中得到的数据来训练一个攻击器,该攻击器能够区分输入样本是否属于模型的训练数据集。
- **实现**:通过影子模型对其训练数据和非训练数据(例如验证数据)进行推断,==收集输出的置信度分数==。然后,用这些分数作为特征,训练一个二分类器,==标签为“是训练数据”或“非训练数据”。==
3.攻击目标模型
- **目的**:利用训练好的攻击器来推断目标模型的输入样本是否为其训练数据。
- **实现**:使用目标模型产生的==输出置信度分数向量==作为攻击器的输入,得到推断结果。
#### 具体例子
假设有一个目标模型,用于根据文本内容分类新闻文章为“政治”或“体育”。攻击者没有目标模型的训练数据,但他们可以收集公开的政治和体育新闻来构建影子模型。
1. **构建影子模型**:
- 攻击者构建两个影子模型,一个针对“政治”类别,另一个针对“体育”类别。
- 每个影子模型都使用从网上收集的政治或体育新闻数据进行训练。
2. **训练攻击器**:
- 攻击者用影子模型对其各自的训练数据和从其他新闻源收集的非训练数据进行分类,收集分类的置信度分数。
- 收集到的数据(置信度分数)用来训练一个二分类器,该分类器的目标是识别输入样本是否属于影子模型的训练集。
3. **攻击目标模型**:
- 使用目标模型对一篇新的新闻文章进行分类,并记录输出的置信度分数向量。
- 攻击者使用这个置信度分数向量作为输入,通过训练好的攻击器来推断这篇文章是否为目标模型的训练样本。
**这个方法的核心依据是什么**
核心的推理依据是机器学习模型在**处理训练集中的数据时通常会展现出更高的置信度和准确性**,因为模型是直接在这些数据上学习到的**规律和特征**。相反,对于模型未曾训练过的数据,即使能做出正确的预测,其输出的置信度分数往往较低,表现出更多的不确定性。**这种行为上的差异是攻击者试图利用的漏洞**。
## 黑盒设置中的成员推理攻击步骤
1. **数据记录查询**:
- 攻击者选择一个数据记录,向目标模型提交这个记录,并请求模型对其进行分类。
2. **获得预测结果**:
- 目标模型处理提交的记录后,输出一个概率向量,其中包含了该记录属于每个可能类别的概率。这个向量就是模型的置信度分数向量,反映了模型对每个类别判定的置信程度。
3. **传递预测向量和实际标签**:
- 攻击者将获得的预测概率向量和该记录的实际标签(如果可得)一同作为输入传递给另一个攻击模型。这里的攻击模型是专门训练来执行成员推理的。
4. **攻击模型进行推断**:
- 攻击模型根据输入的预测概率向量和实际标签来推断原始数据记录是否是目标模型训练集中的一部分。基于训练时观察到的模式(例如,如果预测向量中特定类别的概率非常高,并且与实际标签相匹配,可能表明该记录是训练数据),攻击模型会尝试区分训练数据和非训练数据。
#### 实例解释
假设目标模型是一个分类器,用于识别文本属于“科技”、“体育”或“艺术”类别。一个记录是关于“科技”的文章。攻击者提交这篇文章到模型,获得一个如[0.9, 0.05, 0.05]的预测向量,意味着模型认为这篇文章属于“科技”类的概率是90%。攻击者将这个向量和“科技”这个实际标签传给攻击模型。如果攻击模型经过训练能够识别出当模型对一个类别有很高的置信度时,该数据很可能是训练集中的数据,那么它可能会推断这篇文章是目标模型训练时使用的。
**在构造影子模型之前要先构造用于训练影子模型的数据集**
## ****Model-based synthesis****
在描述的“Model-based synthesis”(基于模型的合成)方法中,攻击者采用了一个精心设计的策略来生成合成数据,这些数据在统计上与目标模型的训练数据相似。这种方法主要用于在缺乏真实训练数据的情况下,创建数据以训练影子模型,进而进行有效的成员推理攻击。下面,我将详细解释这种方法的两个阶段:
#### 阶段1:使用爬山算法搜索高置信度输入
- **爬山算法**:这是一种启发式搜索算法,用于在可能的解空间中找到局部最优解。在这个上下文中,它被用来找到能被目标模型以高置信度分类的数据记录。
- **搜索过程**:攻击者初始设定或随机生成一个或多个数据记录作为起点,然后逐步调整记录的特征,以增加目标模型对这些记录的置信度。例如,在图像识别模型中,攻击者可能会调整像素值;在文本模型中,可能调整词汇使用或句子结构。
- **目标**:找到目标模型认为属于某一类别的概率极高的输入数据。这种数据很可能与模型的训练数据在特征分布上相似。
#### 阶段2:从搜索到的记录中提取合成数据
- **数据提取**:一旦通过爬山算法找到多个高置信度的输入,攻击者会使用这些输入作为合成数据。
- **用途**:这些合成数据随后用于训练影子模型。影子模型的目的是模仿目标模型的行为,使得攻击者能够通过影子模型来练习和完善其成员推理攻击技术。
- **重复过程**:攻击者可能需要生成大量的合成数据以充分训练影子模型。因此,这一过程可能会被重复多次,直到影子模型的训练数据集被认为足够大,能够有效地模拟目标模型的行为。
#### 示例说明
假设目标模型是一个用于识别不同类型动物的图像分类器。攻击者可能首先生成一些随机的动物图片,然后使用爬山算法调整图片的特征(如颜色、形状、背景等),以最大化目标模型对某个类别(比如说“猫”)的置信度。一旦找到了几张目标模型以高置信度识别为“猫”的图像,这些图像就可以作为合成数据用于影子模型的训练。
通过这种方式,攻击者希望影子模型能够学习到与目标模型类似的决策边界和特征偏好,从而使得基于这个影子模型的成员推理攻击更加精准。这种攻击策略展示了如何在仅有限的或无访问权限的情况下,通过智能化的合成数据生成方法来逼真地模拟目标模型的训练环境。
## **Statistics-based synthesis**
攻击者利用了关于目标模型训练数据的一些已知的统计信息,特别是不同特征的边缘分布。这种信息的利用显著增强了攻击的效果,因为它允许攻击者构建更接近真实训练数据的影子模型。下面我将详细解释这一过程及其重要性:
#### 边缘分布的理解
**边缘分布**描述了单个变量的概率分布,不考虑其他变量的影响。例如,在图像数据中,某个特定像素点的亮度值的分布就是一个边缘分布;在文本数据中,某个特定词出现的频率也可以视作边缘分布。了解这些分布可以帮助攻击者更好地模拟目标模型可能使用的数据。
#### 利用边缘分布生成影子模型训练数据
1. **取样过程**:
- 攻击者根据每个特征的已知边缘分布独立地进行取样。这意味着每个特征都被视为相互独立,忽略特征之间的可能关联或条件依赖。
- 独立取样虽然忽略了特征间的联合分布,但简化了数据生成过程,且在某些情况下依然能够提供足够好的近似。
2. **生成合成记录**:
- 使用从边缘分布中得到的样本值,攻击者构建新的数据记录。这些合成记录应在统计上与目标模型的真实训练数据相似,尽管它们是人工生成的。
- 这种方法特别适用于当攻击者没有访问真实训练数据,但能够获得关于数据分布的信息时。
3. **训练影子模型**:
- 这些合成数据被用来训练一个或多个影子模型,目的是让影子模型在行为上尽可能接近目标模型。
- 影子模型的输出(即对合成数据的预测结果)将被用来训练攻击模型,攻击模型的任务是区分数据是否属于目标模型的训练集。
#### 攻击模型的效果
- **有效性**:如果边缘分布被准确地估计并用于生成数据,即使简化了特征间的依赖关系,攻击模型仍然可能表现出高效性。这是因为合成数据在统计特性上足够接近真实数据,使得影子模型能够学习到与目标模型相似的决策过程。
- **攻击成功**:最终,影子模型的行为越接近目标模型,由此训练的攻击模型就越可能准确地识别出哪些数据是目标模型的训练数据,因此攻击的成功率更高。
总结来说,通过独立从每个特征的边缘分布中取样来生成影子模型的训练记录,攻击者能在没有直接访问目标训练数据的情况下,有效地模拟和攻击目标模型。这种方法在数据生成的灵活性和攻击模型训练的有效性方面提供了一种实用的平衡。
攻击者拥有一些与目标模型训练数据相似的数据,这些数据可以被视为“噪声”版本。通过对这些数据进行一些随机扰动,攻击者可以生成一个用于训练影子模型的合成数据集。这种方法进一步提升了影子模型的效力,即使这些数据与目标模型的训练数据不完全相同。以下是详细的解释和步骤:
## **Noisy real data**
#### 基本思想
攻击者通过对手头已有的数据进行一定比例的特征值翻转或扰动,生成“噪声”数据集。这个噪声数据集被用来训练影子模型,以使影子模型的行为接近目标模型。尽管影子模型的训练数据与目标模型的训练数据不是完全相同的,或者是以不同方式采样的,这种方法仍然可以有效地模拟目标模型的行为。
#### 具体步骤
1. **获取相似数据集**:
- 攻击者首先需要获得一些与目标模型训练数据相似的数据集。这个数据集可能来自于同一个数据来源或同一个领域,但不是目标模型的实际训练数据。
2. **生成噪声数据集**:
- 为了模拟噪声版本,攻击者随机选择特征并翻转这些特征的值。例如,如果一个数据集包含位置数据(如GPS坐标),攻击者可以随机选择10%或20%的特征值进行扰动(如将某些位置坐标微调)。
- 这个过程确保了生成的噪声数据集在统计特性上仍然与原始数据类似,但包含一定程度的随机扰动。
3. **训练影子模型**:
- 使用生成的噪声数据集,攻击者训练影子模型。尽管这些数据与目标模型的训练数据不是完全相同,影子模型仍然能够学到与目标模型类似的特征和模式。
- 影子模型的数量可以根据不同类别或标签进行增加,以进一步提高攻击的准确性。
4. **训练攻击模型**:
- 攻击者使用影子模型的输出(即对噪声数据集的预测结果)来训练一个攻击模型。这个攻击模型的任务是根据输入的置信度分数向量推断某个数据记录是否属于目标模型的训练数据集。
#### 实例解释
假设目标模型是一个用于预测城市中某些位置的房价的回归模型。攻击者能够访问一些与目标训练数据相似的房产数据集。这些数据集包含房屋位置、面积、房龄等特征。
1. **获取相似数据集**:
- 攻击者获得某个城市房产市场的数据,这些数据在特征分布上与目标模型训练数据类似。
2. **生成噪声数据集**:
- 攻击者随机选择10%的房产数据并翻转一些特征值,例如将房龄从20年改为19年,将面积从100平方米改为98平方米。
3. **训练影子模型**:
- 使用这个包含随机翻转特征的噪声数据集,攻击者训练影子模型。
4. **训练攻击模型**:
- 通过影子模型对噪声数据集的预测结果,攻击者训练一个攻击模型,使其能够区分输入数据是否属于目标模型的训练数据。
通过这种方法,攻击者有效地利用了相似数据集并添加噪声,来生成用于训练影子模型的数据,从而提升了成员推理攻击的成功率。即使数据不是完全相同的,总体上的相似性和随机扰动仍然能使影子模型在模拟目标模型方面表现良好。
## 影子模型的训练
在成员推理攻击中,影子训练技术利用了模型在相似数据上的相似行为来构建攻击模型。通过训练多个影子模型,攻击者能够更精确地模拟目标模型的行为,从而提高攻击的准确性。以下是对这个过程的详细解释:
### 基本思想
影子训练技术背后的主要思想是:**相似的数据记录在相同服务上训练的模型会表现出相似的行为**。因此,通过在相似数据集上训练影子模型,攻击者可以获得与目标模型行为相似的模型。这些影子模型的输出可以用于训练一个攻击模型,该攻击模型能够推断输入数据是否属于目标模型的训练数据集。
### 详细步骤
1. **收集相似数据集**:
- 攻击者收集与目标模型训练数据相似的数据记录。这些数据集应该覆盖目标模型的不同类别。
2. **生成影子数据集**:
- 根据收集的数据记录,生成多个影子数据集。每个影子数据集应包括不同类别的样本,这些样本在特征上尽可能与目标模型的训练数据相似。
- 可以通过扰动部分数据特征来生成这些影子数据集,以增加数据的多样性。
3. **训练影子模型**:
- 为每一类样本训练一个或多个影子模型。例如,如果目标模型有N个类别,每个类别可以训练一个影子模型。影子模型越多,影子模型在模拟目标模型行为方面的多样性和准确性就越高。
- 使用相应类别的影子数据集训练影子模型,使其在行为上尽可能接近目标模型。
- 就是把每个数据的置信度分数向量标记上“训练数据”或“非训练数据”用于训练攻击模型
1. **收集影子模型输出**:
- 通过影子模型对其训练数据和非训练数据进行分类,收集每个输入数据记录的输出置信度分数向量。
- 标记这些数据记录为“训练数据”或“非训练数据”,以便后续用于训练攻击模型。
5. **训练攻击模型**:
- 使用从影子模型收集的输出置信度分数向量作为输入,训练一个二分类器(攻击模型)。这个模型的目标是根据输入的置信度分数向量推断输入数据记录是否属于目标模型的训练数据集。
- 影子模型越多,提供的数据样本越多,攻击模型的训练就越充分,攻击的准确性也就越高。
6. **攻击目标模型**:
- 使用训练好的攻击模型,输入目标模型对某一数据记录的预测置信度分数向量,判断该数据记录是否属于目标模型的训练数据集。