调试差分隐私:隐私审计的一个案例研究
Debugging Differential Privacy: A Case Study for Privacy Auditing
作者用隐私审计(membership inference)发现 Backpropagation Clipping 开源实现不满足其声称的 (0.21, 10⁻⁵)-DP,实测 ε 下界 > 2.79。
- 差分隐私有证明不代表实现无误,实现或证明中的错误常见且难发现。作者用一个真实开源 DP 训练实现做案例,检验隐私审计能否发现这类错误。
- 对 Backpropagation Clipping 的官方实现做隐私审计:在 MNIST 与加入一个投毒样本的 MNIST' 上各训练 100,000 个模型,用基于损失阈值的 membership inference 攻击区分两个数据集,再用 Clopper-Pearson 置信区间把 TPR/FPR 换算成 ε 的经验下界。
- 攻击 TPR 为 4.922%、FPR 为 0.174%(Figure 1),在 p < 10⁻¹⁰ 下推出 ε > 2.79,比声称的 ε = 0.21 高 10 倍。作者定位到实现把每层梯度敏感度多除了 batch size,导致加噪过小;原作者已承认并计划通过加大噪声修复。
- 论文为单一系统案例研究,未讨论方法本身的局限。实验只覆盖 MNIST 上一个实现和一组超参数;投毒样本与阈值的选择是启发式的,作者称无理论依据。
- 威胁模型
- 攻击者能观察训练好的模型参数,对目标样本做 membership inference(判断样本是否在训练集中);被审计的 Backpropagation Clipping 实现作为黑盒,输入训练数据集、输出训练好的模型。
- 被测模型
- MNIST model
- 基准
- MNIST
- 指标
- TPRFPRε 下界(Clopper-Pearson 置信区间)
Florian Tramer 等六位研究者的 arXiv 论文(2202.12219)展示,隐私审计除了估计差分隐私算法的隐私损失下界,还能用来找出声称满足差分隐私的方案中的缺陷。作为案例研究,作者审计了一个近期开源的差分隐私深度学习算法实现,以 99.99999999% 的置信度发现该实现不满足其声称的差分隐私保证。
深度解读
这篇论文试图解决什么问题?
作者用隐私审计找 DP 实现中的错误,审计一个开源实现并推翻其声称的 (0.21, 10⁻⁵)-DP 保证。
核心问题:差分隐私算法有证明不等于实现正确,作者检验隐私审计能否用来发现(声称满足 DP 的)实现中的错误。
- 问题场景:DP 为训练数据提供可证明的隐私保证,但作者认为证明的存在不排除错误的存在,且实现或证明中的错误常见、又难察觉。
- 现有做法的不足:以往的隐私审计(auditing)用于估计 DP 算法 ε 的下界、评估证明的紧性;作者提出审计也可以反过来用于找 bug——当测得的下界超过声称的上界时即说明实现有误。
- 案例选择:作者审计 Backpropagation Clipping [SND+ 22] 的开源实现,该实现在 MNIST 上以 (0.21, 10⁻⁵)-DP 达到 98.9% 准确率。作者称选它是因为实现易用高效、是真实系统而非作者构造,且作者称其性能超过现有最优 30 倍。
- 威胁模型:
- 攻击者目标:对单个样本做 membership inference,判断它是否在训练数据集中。
- 知识与能力:把被审计算法当黑盒,输入训练数据集 D、得到训练好的模型 fθ;可构造相差一个样本的数据集对 D、D′。
- 受害系统:Backpropagation Clipping 的官方开源实现及其声称的 (0.21, 10⁻⁵)-DP 保证。
- 论文产出:一次真实审计,作者报告以 99.99999999% 置信度认定该实现不满足其声称的 DP 保证,并定位到一类作者称过去见过多次的实现 bug。
有哪些相关研究?
相关工作分三组:DP 与 DP-SGD 基础、Backpropagation Clipping 被审对象、以及用审计估计 ε 下界的既有工作。
差分隐私与私有训练基础
- Dwork 等 [DR+ 14]——给出 (ε, δ)-差分隐私的定义框架。
- Kairouz 等 [KOV15]——证明对任意 (ε, δ)-DP 算法,membership inference 攻击的 TPR 与 FPR 满足 (TPR − δ)/FPR < e^ε,这是本文审计不等式(Equation 1)的来源。
- Abadi 等 [ACG+ 16]——DP-SGD:逐样本裁剪梯度再加高斯噪声;本文在建议部分以其为例,说明形式化算法描述应明确写出单个样本。
被审计对象
- Stevens 等 [SND+ 22]——Backpropagation Clipping,把 DP-SGD 的梯度裁剪改为逐层在前向和反向传播中裁剪(输入裁剪到范数 C1、反向信号裁剪到 C2),并按层做组合;附带开源实现,是本文的审计对象。
隐私审计(估计 ε 下界)
- Jagielski 等 [JUO20] 与 Nasr 等 [NST+ 21]——用强 membership inference 攻击加 Clopper-Pearson 置信区间 [CP34] 建立 ε 的概率下界,并讨论了统计有效性问题;本文沿用这套分析,但用途从评估紧性改为发现实现错误。本文投毒样本设计借用了 [JUO20] 的 backdoor 样本思路。
基线与基准:本文不是提出新方法再与基线对比的论文,没有对比基线方法;实验基准为 MNIST(60,000 训练样本),被审对象即 [SND+ 22] 的官方实现。
定位:作者称以往审计用于评估 DP 证明的紧性,本文把同一工具用于调试实现——实测下界超过声称上界即暴露 bug;作者还提到两个类似的 DP 实现错误先例([Par18] 已由作者在同行评审前修复,[Tra20] 仍在处理中),说明这类错误并非孤例。
论文如何解决这个问题?
在相差一个投毒样本的两个 MNIST 数据集上各训练 10 万个模型,用损失阈值攻击测 TPR/FPR,换算成 ε 下界并与声称上界比较。
整体思路:把被审算法当黑盒,构造相差一个样本的数据集对,用 membership inference 攻击的 TPR/FPR 经 Equation 1 推出 ε 的经验下界;若下界超过声称的 (ε, δ) 上界,则实现有误。
判定原理
- 依据 [KOV15] 的界:对任意 (ε, δ)-DP 算法,(TPR − δ)/FPR < eε;攻击越强,推出的 ε 下界越高。
- 统计有效性:用 Clopper-Pearson 置信区间下界 TPR、上界 FPR,避免小样本偶然得到无穷大下界(作者举例:N 个样本中仅 1 个真正例、0 假正例时下界无意义)。
实验构造
- 数据集:MNIST(60,000 样本)与 MNIST′ = MNIST ∪ {(x_p, y_p)}(60,001 样本),投毒样本取自 MNIST 测试集、故意错标,并在图像角落加 checkerboard 图案(借用 [JUO20] 的 backdoor 直觉,作者注明无理论依据)。
- 训练超参数照抄 [SND+ 22] 论文 Figure 2 中最准确的 MNIST 配置:25 epochs、batch size 4096、输入裁剪范数 1.0、梯度裁剪范数 0.01、每迭代 rho = 10⁻⁵,对应声称的 (0.21, 10⁻⁵)-DP。
- 攻击:基于损失的 membership inference,阈值 τ = 2.64,损失低于 τ 判为 member。
两阶段流程(保证统计有效性)
- 预选阶段:先用 1,000 个模型逐一测试 MNIST 测试集前 25 张图(共 26,000 个模型),选 ε 下界最大的样本作投毒样本;再训练 2,000 个模型(MNIST/MNIST′ 各半)扫描所有阈值,选出 τ = 2.64。这些模型全部丢弃。
- 正式审计:从头训练 100,000 个 MNIST 模型和 100,000 个 MNIST′ 模型,统计损失低于 τ 的频数,用 Clopper-Pearson 区间在联合 p 值下换算 ε 下界。
调试与建议
- 定位 bug:实现使用平均交叉熵损失,每个样本的反向误差已被 1/|B| 缩放,但敏感度计算又除了 batch size,使每层梯度敏感度被多缩小 |B| 倍,加噪也相应过小;作者认为正确敏感度应为 C1·C2。
- 建议:用三角不等式做 sanity check(‖g‖ ≤ |B|·s,作者报告原实现违反该式);DP 论文应给出与实现贴近的形式化算法描述、明确写出单个样本(以 [ACG+ 16] 为例)。
论文做了哪些实验?
各训 10 万个模型,TPR 4.922%/FPR 0.174%,推得 ε > 2.79(p < 10⁻¹⁰),推翻声称的 ε = 0.21。
实验设置
- 被审系统:Backpropagation Clipping [SND+ 22] 官方开源实现,黑盒对待;论文不涉及对多个机器学习模型的评测,实验产物是 MNIST 分类模型。
- 数据集:MNIST 训练集(60,000 样本)与 MNIST′(加入 1 个错标并带 checkerboard 图案的测试集样本,共 60,001 样本)。
- 超参数:25 epochs、batch size 4096、输入裁剪范数 1.0、梯度裁剪范数 0.01、rho = 10⁻⁵,取自 [SND+ 22] 的 Figure 2。
- 攻击与指标:损失阈值 membership inference(τ = 2.64),指标为 TPR、FPR 及由 Equation 1 换算的 ε 下界;统计方法为 Clopper-Pearson 置信区间,δ 取 10⁻⁵。
- 样本量:正式实验 MNIST、MNIST′ 各 100,000 个模型;预选样本用 26,000 个、选阈值用 2,000 个,均丢弃。作者脚注称总共在 8 块 V100 GPU 上训练超过 250,000 个模型、耗时 50 小时。
主结果
指标 数值 出处 TPR(MNIST′ 模型) 4.922%(4,922/100,000) Figure 1 及第 3 节 FPR(MNIST 模型) 0.174%(174/100,000) Figure 1 及第 3 节 ε 经验下界 > 2.79(p < 10⁻¹⁰) Figure 1 及第 3 节 声称的 DP 保证 (0.21, 10⁻⁵)-DP 第 1、3 节 实现准确率 98.9% ± 0.1%(MNIST) 第 3 节 - 作者称 Clopper-Pearson 区间给出 FPR 几乎确定小于 274/10⁵、TPR 几乎确定大于 4491/10⁵,联合 p 值 p < 10⁻¹⁰。
- 作者称 ε 下界 2.79 比声称值 0.21 高 10 倍,据此推翻该实现的 DP 声称。
- Figure 1 展示了两个数据集上模型在投毒样本处的损失分布(各 100,000 个模型)及阈值 τ = 2.64 的位置。
所需实验规模
- 作者称 100,000 个模型并非必需:1,000 个模型即可以 99% 置信度拒绝声称的 ε = 0.21。
- 按 MNIST 模型在 V100 上每分钟训 2 个估算,约需 8 GPU 小时;作者称额外实验只是为了把下界推到声称值的 10 倍并让图更美观。
根因分析
- 测了什么:检查实现中每层梯度敏感度的计算。
- 结果:实现把敏感度误算为 C1·C2/|B|,比正确值 C1·C2 小 |B| 倍,噪声也相应过小;作者用三角不等式 sanity check(‖g‖ ≤ |B|·s)验证原实现违反该式。
- 作者称改用 s = C1·C2 后 sanity check 通过,但因噪声增大,模型效用下降(论文未给具体数字)。
其他消融与分析
- 投毒样本选择:对 MNIST 测试集前 25 张图各训 1,000 个模型,取 ε 下界最大者(第 3.1 节)。
- 阈值选择:2,000 个模型上扫描所有 τ,最优为 τ = 2.64(第 3.1 节)。
- 错标 vs 对抗样本:作者称先前工作发现对抗样本效果更好,但本文错标已足够(第 3.1 节)。
- 后续:作者称 [SND+ 22] 作者承认了分析的正确性,计划通过在梯度下降中加大噪声使实现与理论一致(第 1 节)。
有什么可以进一步探索的点?
论文未专门讨论自身局限;作者给出防范建议,实验只覆盖单一实现、MNIST 和一组超参数。
作者指出的局限与后续方向
- 论文未以 Limitations 小节专门讨论自身方法的局限。
- 作者建议提出新 DP 算法的论文给出与实现尽量贴近的形式化算法描述,逐样本明确写出裁剪对象(第 4 节 Recommendations)。
- 作者建议用三角不等式对梯度敏感度做 sanity check(第 4 节)。
- 作者鼓励未来工作即使在结果可证明正确时也使用强审计技术(第 5 节)。
- 作者认为未来工作可以设计出更强、有原则的审计样本(第 3 节脚注)。
- 作者建议未来论文效仿 [SND+ 22] 随算法公开代码(第 5 节)。
实验覆盖范围
- 被审计对象只有 Backpropagation Clipping 的一个官方开源实现(第 3 节)。
- 数据集只有 MNIST,超参数只有一组([SND+ 22] Figure 2 的最准确配置)。
- 投毒样本与阈值 τ 的选择是启发式的,作者注明无理论依据(第 3.1 节及脚注)。
- 正式实验每个数据集训练 100,000 个模型;预选与选阈值阶段的模型均丢弃以保证统计有效性(第 3.1 节)。
- 修复后的效用影响只有定性描述:作者称修正敏感度后效用下降,论文未报告具体数字(第 4 节)。
总结一下论文的主要内容
一次真实隐私审计:实测 ε 下界 2.79 远超声称的 0.21,暴露实现把梯度敏感度多除了 batch size 的 bug。
一篇关于差分隐私调试的案例研究:作者提出隐私审计不仅能评估 DP 证明的紧性,还能发现实现错误,并在一个真实开源系统上做了演示。
- 问题:DP 有证明不代表实现正确,这类错误常见且难察觉;作者主张把审计作为常规检查手段。
- 方法:把 Backpropagation Clipping [SND+ 22] 的官方实现当黑盒,在 MNIST 与加入一个错标投毒样本的 MNIST′ 上各训练 100,000 个模型,用损失阈值(τ = 2.64)做 membership inference,再用 Clopper-Pearson 区间把 TPR/FPR 换算成 ε 的经验下界。
- 主要结果:TPR 4.922%、FPR 0.174%(Figure 1),在 p < 10⁻¹⁰ 下推得 ε > 2.79,比声称的 ε = 0.21 高 10 倍;作者称 1,000 个模型(约 8 GPU 小时)即可以 99% 置信度拒绝声称值。
- 根因:实现使用平均交叉熵损失,反向误差已含 1/|B| 因子,敏感度计算却又除了 batch size,导致加噪过小 |B| 倍;作者给出三角不等式 sanity check 作为检测手段。
- 结论(作者口吻):作者称被审作者已承认分析正确并计划加大噪声修复;作者建议 DP 论文公开代码、给出贴近实现的形式化描述,并鼓励未来工作即使结果可证明正确也进行强审计。