Differential Privacy
差分隐私会添加经过校准的噪声,使算法在移除某个人的数据后,其输出几乎不会改变。涵盖 Epsilon、隐私预算和 DP-SGD。
差分隐私(DP)是针对数据分析算法的一种隐私数学定义:如果某个人的记录被加入或移出输入,算法的输出分布几乎不发生变化,那么该算法就是满足差分隐私的。观察者从输出中学到的内容,几乎与没有该个人数据时学到的内容相同,因此结果几乎不会泄露与该个人有关的具体信息。差分隐私用于发布数据分析结果,也用于在医疗图像和键盘输入等敏感数据上训练机器学习模型。Cynthia Dwork、Frank McSherry、Kobbi Nissim 和 Adam Smith 在 2006 年的论文《隐私数据分析中的噪声校准与敏感度》中提出了这一概念,他们的工作后来获得了 2017 年哥德尔奖。无论攻击者掌握多少外部信息,该保证都成立;这正是传统匿名化的弱点所在:去除标识符的记录仍可能通过与其他数据库关联而被重新识别。
Epsilon、敏感度与隐私预算#
如果对于任意两个仅有一条记录不同的数据集 D 和 D′,以及任意输出集合 S,均有 Pr[M(D) ∈ S] ≤ e^ε × Pr[M(D′) ∈ S],那么随机算法 M 就满足 ε-差分隐私。参数 epsilon(ε)限定了一个人对输出的影响程度:数值越小,隐私保护越强,但结果噪声也越大。较宽松的(ε, δ)版本允许该界限以极小的概率 δ 失效;δ 通常远小于记录总数的倒数。
噪声会根据敏感度进行校准,也就是一条记录对结果可能造成的最大影响。计数的变化幅度最多为 1,因此拉普拉斯机制会在真实计数上加入尺度为 1/ε 的拉普拉斯噪声。隐私损失也会累积:每次以 ε 回答查询,回答 k 次最多会消耗 k × ε,因此组织会为数据集设定隐私预算,并在预算耗尽后停止回答。以下代码片段会在三个隐私级别下发布一次计数,并同时测量误差,以及看到输出的攻击者判断某个人是否在数据中的准确率:
import numpy as np
rng = np.random.default_rng(0)
# A count over 1,000 records, and a neighboring dataset with one person removed
true_count = 412
neighbor_count = true_count - 1
for epsilon in (0.1, 1.0, 10.0):
# Laplace mechanism: a count has sensitivity 1, so the noise scale is 1 / epsilon
released = true_count + rng.laplace(scale=1 / epsilon, size=100_000)
released_neighbor = neighbor_count + rng.laplace(scale=1 / epsilon, size=100_000)
# Utility: average error. Privacy: accuracy of guessing whether the person is included
error = np.abs(released - true_count).mean()
threshold = true_count - 0.5
attack = ((released > threshold).mean() + (released_neighbor <= threshold).mean()) / 2
print(f"epsilon={epsilon:<4} mean error={error:6.2f} attacker accuracy={attack:.1%}")当 ε = 0.1 时,平均误差为 9.98,攻击者的判断正确率为 52.5%,仅略高于抛硬币。当 ε = 1 时,误差降至 1.00,攻击者的正确率升至 69.5%;当 ε = 10 时,误差为 0.10,攻击者的成功率则达到 99.7%。针对 ε-差分隐私发布结果,攻击者能够达到的最高准确率为 e^ε / (1 + e^ε),其中 ε = 0.1 时为 52.5%,ε = 1 时为 73.1%。
差分隐私训练#
DP-SGD 由 Martín Abadi 和 Google 的同事于 2016 年提出,通过修改随机梯度下降,使深度学习满足差分隐私。它会将每个训练样本的梯度裁剪到最大范数,避免任何单个样本对模型权重造成过大影响;在每个批次的梯度总和中加入高斯噪声,并使用隐私会计器跟踪训练过程中消耗的 ε 总量。这样可以限制训练后的模型对任何单个样本的记忆程度,从而直接限制成员推断攻击。代价是准确率降低、计算量增加,因此 DP 模型通常需要更大的批次和数据集。Google 于 2025 年发布的 VaultGemma,是一个包含 10 亿参数的大语言模型,完全使用 DP-SGD 进行预训练,满足 ε ≤ 2.0 和 δ ≤ 1.1e-10。
Meta 的 Opacus 等库可以为 PyTorch 计算 DP-SGD 所需的逐样本梯度,并拒绝会混合不同样本信息的层。批归一化是常见情况,因为每个样本的归一化值都取决于同一批次中的其他样本。像 Ultralytics YOLO26 这样的卷积检测器,其卷积块会在每次卷积后应用批归一化,因此在 DP-SGD 训练之前,需要将这些层替换为组归一化;Opacus 的 ModuleValidator.fix() 会自动完成这项替换。
差分隐私的应用场景#
- 官方统计:2020 年美国人口普查是首个采用差分隐私发布结果的十年一次人口普查。
- 本地差分隐私:Google 在 Chrome(2014 年)中使用的 RAPPOR,以及 Apple 的 iOS 功能(2016 年),都会在数据离开设备前于设备上添加噪声。这样,公司可以了解汇总趋势,例如哪些表情符号很受欢迎,而无需收集任何用户的真实数值。
- 联邦学习:数据保留在设备上;在共享模型更新中加入 DP,可以限制更新所泄露的任何单个用户数据。
- 合成数据:使用 DP 训练的生成器可以生成可共享的数据集,并为原始数据中的个人提供相同的 ε 保证。
差分隐私是更广泛的数据隐私领域中的一种技术,与保护数据在存储和处理期间免遭未授权访问的数据安全和机密 AI相辅相成。NIST 的 SP 800-226 于 2025 年 3 月定稿,为评估差分隐私保证提供了指导,并提醒人们:只有结合隐私保护的单位(例如单个事件或个人),ε 声明才有实际意义。










