Lazy loaded image
论文精读
📄Unlearning综述-01 ⭐⭐⭐⭐⭐
Words 6409Read Time 17 min
2025-9-17
2025-9-17
type
status
date
slug
summary
tags
category
icon
password
📖
标题:A survey of machine unlearning

摘要

机器学习模型通常会 "记住 "旧数据。当代对训练有素的模型的对抗性攻击已经证明,我们可以学习某个实例或属性是否属于训练数据,即machine unlearning

1 Intro

研究背景和问题

  • 数据爆炸时代:当前计算机系统存储大量个人数据,数据产生、记录和处理量激增(如YouTube每日40亿次观看)
  • 核心矛盾:丰富的数据推动了AI发展,但同时威胁用户隐私并导致数据泄露
  • 法律要求:新法规赋予用户"被遗忘权",要求系统能够根据用户请求删除其数据

机器学习中的记忆问题

  • 记忆机制:机器学习模型表现得像有损数据压缩机制,会"记住"训练数据
  • 删除困难:仅从后端数据库删除数据无法满足AI系统要求,因为模型参数与训练数据的关系不明确
  • 隐私风险:对抗攻击研究证明可以从训练好的模型中提取私人信息

机器遗忘(Machine Unlearning)概念

  • 定义:一种新的范式,旨在从机器学习模型中移除数据而无需完全重新训练
  • 目标:既维护用户的被遗忘权,又避免模型所有者频繁且昂贵的重训练成本

主要挑战

  • 训练随机性:由于训练过程的随机性,难以确定每个数据点对模型的具体影响
  • 技术复杂性:缺乏通用框架和资源来完全解决机器遗忘问题

2 unlearning框架

2.1 unlearning工作流程

该部分介绍了机器遗忘的典型工作流程,包含两个核心组件:
1.学习组件
包含当前数据、学习算法和当前模型,初始模型从完整数据集训练得到
2.遗忘组件
包含遗忘算法、遗忘后模型、优化要求、评估指标和验证机制,处理数据移除请求,使模型“忘记”相应信息,考虑完整性、及时性和隐私保证等要求
验证流程
  • 遗忘后的模型需要通过验证来证明确实忘记了请求数据
  • 验证方法包括特征注入测试、成员推理攻击、遗忘度量等
  • 如果验证通过,模型可用于下游任务;否则需要重新训练

2.2 遗忘请求类型

1. 项目移除(Item Removal)

  • 最常见的遗忘请求
  • 移除训练数据中的特定样本/项目

2. 特征移除(Feature Removal)

  • 问题背景:隐私泄露可能源于具有相似特征或标签的数据组
  • 挑战:顺序遗忘计算昂贵,过多遗忘会降低模型性能
  • 解决方案
    • Warnecke等人:基于影响函数的技术,使用一阶和二阶导数
    • Guo等人:基于解耦表示,主要适用于图像领域的深度神经网络

3. 类别移除(Class Removal)

  • 应用场景:如人脸识别中用户退出系统
  • 挑战:比项目移除更复杂,数据分割不利于学习类别差异
  • 解决方案
    • Tarun等人:基于数据增强,引入噪声最大化目标类别的分类错误
    • Baumhauer等人:基于线性过滤算子,按比例将目标类别样本分类转移到其他类别

4. 任务移除(Task Removal)

  • 背景:现代机器学习模型常用于多任务学习/持续学习
  • 动机:类似人脑,多任务学习可以相互受益,解决数据稀疏和冷启动问题

2.3 设计要求

一个理想的机器学习“遗忘算法”应满足以下几个核心设计要求:
  1. 完整性(Completeness / Consistency)
      • 定义:遗忘后的模型与重新训练(去除了需遗忘数据)的模型,在任何输入样本上的预测结果应一致(无论预测正确或错误)。
      • 测量方法:计算测试集上两个模型预测一致的比例。
      • 设计建议:可将模型输出的差异作为优化目标;可参考对抗攻击相关研究进行建模。
  1. 及时性(Timeliness)
      • 问题:重新训练虽能完全解决遗忘,但耗时大,尤其在需遗忘数据分布未知时。
      • 取舍:存在 完整性 vs. 及时性 的权衡。
        • 少量数据需要遗忘 → 遗忘方法更有优势(对模型精度影响小)。
        • 大量数据需要遗忘 → 多次遗忘可能使精度灾难性下降,此时重新训练可能更优。
      • 测量方法:遗忘请求触发后,与重新训练相比的加速比。
  1. 准确性(Accuracy)
      • 要求:遗忘后的模型在测试集上的准确率应与重新训练模型相当。
      • 挑战:重新训练成本高,通常无法直接获得作为对照。
      • 解决方法:可使用新测试集,或与遗忘前的原始模型进行对比。
  1. 轻量化(Light-weight)
      • 背景:遗忘过程可能需要存储模型检查点、历史更新、训练数据等。
      • 要求:算法应能在大规模数据场景下运行,减少不必要的计算开销,仅在时间与存储成本上有最低消耗。
  1. 可证明保证(Provable guarantees)
      • 除重新训练外,大多数遗忘方法本质上是近似的。
      • 要求:提供可证明的遗忘效果边界(bounded approximation),比如参数接近则精度接近的假设。
  1. 模型无关性(Model-agnostic)
      • 要求:遗忘方法应适用于不同类型的模型与算法,且在可能的情况下提供可证明保证。
      • 挑战:不同模型的学习机制差异很大,实现通用框架困难。
  1. 可验证性(Verifiability)
      • 用户不仅关心遗忘请求是否执行,还希望能验证模型是否保护了隐私。
      • 方法示例:利用后门攻击(backdoor attacks)作为验证手段——在训练数据中注入后门样本,如果原模型可检测到而遗忘模型不可检测,即视为成功。
      • 局限:这种方法可能过于侵入性,且后门检测本身存在不确定性和误报风险。

2.4 unlearning验证

unlearning的验证方法是证明人们无法轻易区分未学习模型和重新训练的模型

1.Feature Injection Test(特征注入测试)

  • 思路:向需要被遗忘的数据添加一个特殊特征,且此特征仅出现在待遗忘集(值为非零)且与标签完全相关;其它数据该特征为零。
  • 过程
      1. 模型训练时,该特征会被赋予显著权重(对线性/逻辑回归明确可见)。
      1. 完成遗忘后,该特征的权重应接近 0。
      1. 对比遗忘前后该权重的变化量,评估遗忘效果。
  • 限制
    • 适用于线性/逻辑模型(深度学习注入信号困难)。
    • 需构造带注入特征的训练集。

2.Forgetting Measuring(遗忘度量)

  • 背景:即使删除目标数据,模型可能仍保留可检测的痕迹。
  • 方法(Jagielski et al.):基于隐私攻击(如 membership inference)定义 α-forget
    • 如果针对某样本的攻击成功率 ≤ α,即认为模型对该样本实现 α-遗忘。
    • 比差分隐私更灵活:样本可被临时学过,再随着时间完全遗忘。
  • 衡量“样本被遗忘需要多久”。

3.Information Leakage(信息泄露)

  • 现象:模型在更新/遗忘过程中可能泄露信息。
  • 方法
    • 通过比较遗忘前后的模型来度量泄露程度。
    • 攻击方式:
      • Salem等:图像域可重建已删除样本。
      • Brockschmidt等:文本域类似方法。
      • Chen等:改进 membership inference,利用原模型与遗忘模型的输出分布,提出两指标:
          1. Degradation count:在新攻击中比传统攻击更高置信度推断的目标样本比例。
          1. Degradation rate:新攻击相较传统攻击置信度的平均提升率。

4.Membership Inference Attacks(成员推理攻击)

  • 用途:检测模型是否泄露训练集信息,从而检验遗忘有效性。
  • 原理
    • 训练一个推理模型来识别某样本是否在训练集。
    • Shokri等方法(2017):用多个浅层模型生成预测,喂入攻击模型判断成员关系。
  • 在遗忘验证中的作用:帮助检测已删除数据是否仍被模型保留。

5.Backdoor Attacks(后门攻击)

  • 原理:注入后门触发模式的数据,若遗忘无效,触发样本仍会被预测为目标类别。
  • 过程
      1. 在训练集中混入带后门的“毒数据”。
      1. 删除带后门数据用户的记录。
      1. 检查遗忘后模型是否仍将触发样本预测为目标类别。
  • 局限:无法绝对保证该判别规则成立,但增加毒样本数量可降低失败概率。

6.Slow-down Attacks(减速攻击)

  • 动机:部分遗忘理论考虑可区分性保证,但忽略计算成本。
  • 攻击:通过数据投毒,使得遗忘算法在删除该子集时计算成本最大化。
  • 开放问题:如何对不同类型的遗忘方法统一计算成本度量。

7.Interclass Confusion Test(类别混淆测试)

  • 思路:不是看参数空间差异,而是基于输出空间分析是否仍能从模型中推断被遗忘信息。
  • 方法
      1. 从两类数据中随机取样形成集合 S;
      1. 随机交换它们的标签生成“混淆集” S′;
      1. 用 D′ = (D \ S) ∪ S′ 训练新的模型;
      1. S′ 视为遗忘数据,通过评估模型对这些混淆样本的输出,衡量遗忘效果。

3 unlearning定义

3.1 问题形式化(Problem Formulation)

  • 应用背景 Machine Unlearning 的动机来源广泛,包括隐私保护、安全性、可用性、模型一致性等。
    • 隐私保护:用户要求删除其数据及其对模型的影响
    • 安全性:移除已检测到的对抗样本及其影响
    • 可用性 & 可靠性:移除错误或损坏数据的影响
  • 挑战 从数据库删除数据很简单,但从已训练模型中移除数据影响才是主要研究问题。
  • 符号定义(主要符号见表 2)
    • :样本空间(example space)
    • :训练集
    • :要忘掉的数据(forgetting set)
    • :剩余数据(retained set)
    • :训练算法
    • :反遗忘算法
    • :假设空间
    • :分别表示不同场景下的模型参数(全数据训练、已移除数据后训练、unlearning 后)
  • 学习与遗忘过程
    • 学习: 为训练好的模型
    • 遗忘: ,返回与 类似的模型
    • 都是随机化算法(如SGD、浮点数随机性)

3.2 精确遗忘(Exact/Perfect Unlearning)

  • 本质:比较两种模型分布:
      1. 从剩余数据 重新训练的模型分布
      1. 直接在原模型上执行 U 后的模型分布
  • 定义 1(Special Case)
  • 定义 2(General Case) 对任意模型子集 ,均满足:
  • 两种视角的精确性
      1. 权重分布相等
      1. 输出分布相等(弱遗忘 Weak Unlearning):
  • 特点与局限
    • 直接重训(retraining)可保证精确性,但计算代价高(大模型尤其如此)
    • 批量数据移除时重训效率低
    • 计算分布距离(在权重/输出空间)成本高

3.3 近似遗忘(Approximate / Bounded / Certified Unlearning)

  • 动机:降低重训的高计算成本
    • 方法:修改最终权重、调整模型结构、过滤输出等
  • 定义 1(ε-Approximate) 对删除单个样本 z ,有:
  • 定义 3 ((ε, δ)-Approximate) 加入 δ — 允许概率上限失败的情况:
  • 与差分隐私的关系
    • DP 满足近似遗忘,但过于严格,往往导致模型精度显著下降
    • 机器遗忘与 DP 之间存在冲突:DP 模型本身不会记住个体数据

3.4 不可区分性度量(Indistinguishability Metrics)

用于衡量 的距离:
  1. 距离
      • 比较权重向量的欧氏范数(verification error)
      • 缺点:计算需重训,且训练随机性导致难以设定阈值
  1. KL 散度 / Jensen-Shannon 散度
      • 作用于参数分布
      • 缺点:需对模型分布进行估计,过程复杂且计算量大

4 其它机器“遗忘”场景

除了精确遗忘和近似遗忘外,在某些场景中,出于安全或隐私限制,对数据(无论是要遗忘的还是要保留的)的访问会受到限制。作者介绍了三种典型场景:

4.1 Zero-glance Unlearning(零查看遗忘)

定义
  • 传统方法假设在遗忘前可以访问所有训练数据,但 Zero-glance 更严格:
    • 一旦接到用户遗忘请求(如人脸识别模型中的人脸),组织不得再使用待遗忘样本,甚至不能为了修改模型权重而查看它们。
    • 遗忘算法只能使用保留数据的子集 ,其中
    • 子集越小,隐私性越强。 方法 – Error-maximizing noise(最大化误差噪声)[Tarun et al., 172]
  • 当无法访问 时,将问题转化为已知"要遗忘的类别集 "。
  • 生成噪声样本 ,其目标是最大化模型损失,以破坏模型在这些类别上的表现。
  • 步骤:
      1. 训练 1 个 epoch → 损坏模型在 上的性能;
      1. 再用 训练 1 个 epoch → 修复保留类的性能;
      1. 训练轮数和子集大小可调整,权衡准确率和运行时间。
  • 本质是生成近似的 ,将问题转换回"可获得 "的原始遗忘问题形式。

4.2 Zero-shot Unlearning(零样本遗忘)

定义
  • 遗忘方法无法访问原始训练数据 和保留数据,仅能得知类别信息
  • 遗忘目标是使未学习模型 的输出接近"重新训练去掉 后的模型"
方法
  1. Error-minimization noise(最小化误差噪声)[Chundawat et al., 29]
      • 继承 Tarun 等人的最大化误差噪声破坏遗忘类;
      • 新增最小化误差噪声来近似生成保留类数据,从而修复受损性能。
  1. Gated Knowledge Transfer(有门控的知识蒸馏)
      • 解决噪声生成随意性导致遗忘效果差的问题;
      • 在知识蒸馏时引入"门控机制",防止教师模型将关于待遗忘类 的知识传递给学生模型。

4.3 Few-shot Unlearning(少样本遗忘)

定义
  • 遗忘算法只能获得待遗忘数据 中的少量样本 )。
适用场景:
  • 数据 含有错误标签;
  • 想移除部分数据对模型带来的恶意影响;
  • 实际上受隐私法规约束,往往难以访问全部
方法
  1. Model inversion(模型反演)[Yoon et al., 207]
      • 从模型中通过反演获取对原训练集的近似代理数据;
      • 通过过滤删除可能导致不良行为的数据,并插值少量目标样本;
      • 用这些数据进行再训练;
      • 可在无法访问原始训练数据的情况下工作,但仅适用于交叉熵分类模型
  1. Influence approximation(影响估计)[Peste et al., 138]
      • 基于影响函数计算样本对模型的影响,移除目标样本;
      • 传统方法需计算 Hessian 矩阵及其逆矩阵,成本高;
      • 使用经验 Fisher 信息矩阵(FIM)做近似,并进行秩一更新 → 更易计算且快速求逆,实用性高。

对比

场景
数据可访问性
核心思想
优势
局限
Zero-glance
仅保留数据子集
生成最大化误差噪声模拟
无需直接访问
生成的近似精度受限
Zero-shot
无原始数据,仅类别信息
结合最大化/最小化误差噪声 + 门控蒸馏
可在数据不可见时操作
噪声质量影响效果
Few-shot
少量 样本
模型反演/影响函数近似
样本少,成本低
覆盖有限,适用性受模型类型限制

5 遗忘算法

1. Model-agnostic方法 强调与具体模型类型无关的unlearning思路,尽管不少方法的理论保证只在特定模型(如线性模型)成立,但思想可迁移到复杂模型。
  • Differential Privacy:通过ε-DP限制单个样本对模型的影响,ε=0时等价完全不学习该样本,但实际上会损害模型学习能力。Gupta等提出支持自适应流式删除的差分隐私unlearning机制(依赖DP发布函数保证删除前后模型差异可控),但只能给出与完全重训相比的上界保证。
  • Certified Removal Mechanisms:按近似unlearning定义设计,比如对SGD类算法在梯度更新残差中加入噪声(可用一阶或影响函数近似Hessian),理论上可界定与重训模型的接近度,噪声不够时需退回重训;Neel等拓展了正则化和分布式版本,Ullah定义了总变差稳定性ρ-TV-stable来处理流式请求。
  • Statistical Query Learning:用统计查询而非直接访问数据来训练,删除时只需基于剩余数据重算统计量,效率高,可扩展到部分流式删除或零样本场景,但对深度模型不适用(统计量数目巨大)。
  • Decremental Learning:源于减少SVM、线性分类等冗余样本的目标,关注精度而非完全性。典型做法是量化+数据分区来减少重训范围,适用特征数量相对少的情况。
  • Knowledge Adaptation / Distillation:如“双教师法”(competent+incompetent)让学生同时模仿保留数据与遗忘数据的输出;后续有ERM-KTP、KGA、Layer Attack等变种,灵活但缺少统一理论保证。
  • MCMC Parameter Sampling:在忘却集很小时,用MCMC从原模型后验采样构造参数分布并最大化保留数据的后验概率,无需访问忘却集。
2. Model-intrinsic方法 针对特定模型类型设计的unlearning,虽然“内生性”强,但类型间可类比迁移。
  • Softmax classifiers:利用线性滤波算子,把待遗忘类别的决策概率线性转移到其它类别,只适合类移除。
  • Linear models:基于影响函数的近似Hessian更新,支持小批量样本遗忘;也有在线删除(流式到达的删除指令)和受限内存版本。
  • Tree-based models:如极随机树,通过设计鲁棒split(少数样本移除不改变分裂)和维护子树候选,删除时切换最佳候选来避免全树重建,过大忘却集会导致存储开销高。
  • Bayesian models:在后验分布层面定义精确unlearning,离散参数或共轭先验可直接采样,非共轭时用最小化KL近似防止灾难性遗忘;还有证书化Bayesian unlearning将KL界限作为保证。
  • DNN-based models:多层结构中凸激活层可用certified removal机制,非凸层可先缓存常驻数据再微调用户数据;也有基于影响函数的Taylor展开、DeltaGrad、Fisher-based等,但大忘却集时不稳定,Hessian近似计算昂贵,常需用FIM近似+加噪防泄漏。
3. Data-driven方法 利用数据组织结构来提升unlearning效率,或直接从数据入手干预模型更新。
  • Data Partitioning:SISA等框架按shard/slice切分数据,每份对应子模型并存储中间检查点,请求删除时只重训受影响的切片模型,再聚合。还有图结构跟踪依赖的优化。
  • Data Augmentation(error噪声):error-minimizing noise能在训练前保护特定样本;error-maximizing noise用于破坏某个类别模型性能(类移除更易)。
  • Data Influence:显式建模数据对参数的影响,多存训练历史梯度/参数,删除时“减去”相关更新;也有在训练时加正则化项或近似FIM来高效计算更新。存在顺序依赖导致灾难性遗忘风险,且多数为近似无严格保证。Yamasita等提出利用类特定mnemonic code训练,在删除时通过加噪无需保留原始数据,节省存储。

8.1 研究现状与趋势

  1. 影响函数是主导方法
      • 通过分析单个数据对模型参数和性能的影响,可以显著加速删除数据的过程(反向更新相关参数)。
      • 虽然可能有偏差,但已有研究证明偏差可被限制。
  1. 模型参数可达性问题
      • 现有定义多要求“删除目标数据后再训练”与“忘却模型”具有同等准确率。
      • 需考虑模型参数在有无某些数据情况下是否可达,以及遗留数据影响导致的“假阳性”风险。
  1. 遗忘验证(数据审计)的必要性
      • 验证特定数据是否确已从模型中被删除,对“被遗忘权”法规落地关键。
      • 现有研究很少且验证标准存在争议,不同应用领域的阈值不同。
  1. 联邦遗忘的兴起
      • 在联邦学习中,通过历史更新可精确删除某个客户端数据,避免传统设置下的灾难性遗忘。
      • 但需注意数据非独立同分布(non-IID)或仅部分数据删除等复杂情况。
  1. 通过遗忘进行模型修复
      • 用于应对投毒攻击:删除恶意数据并更新模型,而非高成本重训。
      • 用于去偏(如删除偏置特征),可在保持模型性能的同时去除不公数据影响。
      • 修复过拟合模型:主动遗忘无用/冗余数据,缓解灾难性遗忘。
      • 遗忘在信息瓶颈理论下也可能提升模型精度(相当于压缩冗余信息)。
unlearning算法
语言
平台
机器学习模型
代码仓库
SISA [10]
Python
-
模型无关
Athena [166, 167]
Python
-
模型无关
AmnesiaML [63]
Python
-
模型无关
Kpriors [38]
Python
-
模型无关
ERM [126]
Python
Pytorch
模型无关
ShallowAttack [28]
Python
Pytorch
模型无关
UnrollingSGD [173]
Python
-
模型无关
DeltaGrad [201]
Python
-
模型无关
Amnesia [152]
Rust
-
模型无关
SCAR [9]
Python
-
模型无关
KGA [192]
Python
Pytorch
模型无关
MUPy [12]
Python
LensKit
KNN
DelKMeans [27]
Python
-
KMeans
CertifiedRem [64]
Python
-
随机森林
CertAttack [116]
Python
Tensorflow
神经网络
PRU [79]
Python
-
线性模型
DeltaBoost [203]
Python
-
基于树的模型
HedgeCut [153]
Python
-
基于树的模型
DaRE-RF [11]
Python
-
基于树的模型
MCMC-Unlearning [49]
Python
-
贝叶斯模型
BIF [50]
Python
-
贝叶斯模型
L-CODEC [121]
Python, Matlab
-
深度学习
SelectiveForgetting [60, 61]
Python
-
深度学习
Neurons [33]
Python
-
深度学习
上一篇
算法笔记-01-模板总结
下一篇
算法笔记-01-模板总结