差分隐私基础:从数学定义到机器学习实践
写在前面 机器学习系统越来越依赖真实用户数据:医疗图像、位置轨迹、搜索日志、推荐行为、设备传感器和文本交互都可能进入训练流程。数据越细,模型越容易学到有用模式,也越可能记住个体信息。攻击者不一定需要拿到原始数据,只要能访问模型输出、梯度更新或模型参数,就可能推断某个样本是否参与训练,甚至重构训练样本的部分特征。 差分隐私(Differential Privacy, DP)提供了一种可证明的隐私保护框架。它的核心目标不是让数据“绝对不可见”,而是限制单个个体对算法输出的影响:无论某个人的数据是否出现在数据集中,外部观察者看到输出后都不应显著改变对这个人的判断。 本文按“定义、机制、组合、机器学习实践”的顺序展开。重点不是堆概念,而是回答三个实践问题: $\epsilon,\delta$ 到底控制什么? 噪声为什么要按敏感度来加? 在深度学习中如何使用 DP-SGD,并避免常见误区? 1. 隐私风险从哪里来 1.1 成员推断攻击 成员推断攻击(membership inference attack)试图判断某条记录是否在训练集中出现过。若模型对训练样本的置信度系统性高于未见样本,攻击者就可以利用输出概率、损失值或预测排名进行判断。 例如,一个疾病风险预测模型若对某个病人的记录表现出异常高的确定性,攻击者可能推断该病人曾参与某个敏感医疗数据集。即便模型没有直接输出训练数据,这种参与关系本身也可能是隐私信息。 1.2 模型反演与梯度泄露 模型反演攻击(model inversion)尝试根据模型输出恢复输入特征;梯度泄露攻击则利用联邦学习或分布式训练中的梯度更新重构训练样本。研究表明,在小批量训练、过参数化模型和高维输入场景中,梯度可能携带大量样本信息。 联邦学习只能减少原始数据离开本地设备的风险,并不自动保证隐私。如果上传的梯度或模型更新没有额外保护,攻击者仍然可能从更新中推断本地数据。因此,联邦学习常与安全聚合、差分隐私和可信执行环境组合使用。 2. 差分隐私的形式化定义 2.1 相邻数据集 差分隐私比较的是两个相邻数据集 $D$ 和 $D^{\prime}$。常见定义有两种: add/remove 邻接:$D^{\prime}$ 比 $D$ 多或少一条记录。 replace-one 邻接:$D$ 和 $D^{\prime}$ 记录数相同,但其中一条记录不同。 不同邻接定义会影响敏感度和隐私预算解释。阅读论文或工具文档时,需要确认使用的是哪一种。 2.2 $(\epsilon,\delta)$-差分隐私 随机算法 $M$ 满足 $(\epsilon,\delta)$-差分隐私,若对任意相邻数据集 $D,D^{\prime}$ 和任意输出集合 $S$,都有 $$ \Pr[M(D)\in S]\le e^\epsilon \Pr[M(D^{\prime})\in S]+\delta. $$其中: $\epsilon$ 控制输出分布的最大可区分程度。越小,隐私越强,噪声通常越大。 $\delta$ 是允许极小概率失败的松弛项。实际中通常要求 $\delta$ 小于数据集规模倒数,例如 $\delta < 1/n$ 或更严格。 当 $\delta=0$ 时,称为纯差分隐私(pure DP);当 $\delta>0$ 时,称为近似差分隐私(approximate DP)。深度学习中常用的是近似 DP,因为高斯机制和 DP-SGD 更自然地落在 $(\epsilon,\delta)$ 框架下。 ...