在机器学习快速发展的格局中,差分隐私 (Differential Privacy, DP) 已成为在敏感数据上训练模型的黄金标准。理论上,DP 保证了数据集中任何个人的贡献都不会显著影响模型的输出。然而,理论与实践之间往往存在巨大的鸿沟。实现中的错误、浮点误差或宽松的理论分析都可能导致模型的隐私性低于预期。
这就需要进行实证隐私审计 (Empirical Privacy Auditing) ——对隐私保护算法进行“压力测试”。通过扮演攻击者并攻击模型,审计人员可以验证声称的隐私参数在现实中是否成立。
历史上,审计面临着一种二分困境: 要么计算成本高昂 (需要数千次训练运行) ,要么统计上不严谨 (提供的隐私下界很弱) 。在这篇文章中,我们将探讨 Meta FAIR 研究人员提出的一项新方法: “Auditing f-Differential Privacy in One Run” (单次运行审计 f-差分隐私) 。这项工作提出了一种更紧致、高效的审计程序,仅需一次训练运行,并利用 \(f\)-差分隐私 (\(f\)-DP) 的精细分析来提供明显更准确的隐私估计。
问题所在: 信任但要验证
当一种机制,例如差分隐私随机梯度下降 (DP-SGD) ,声称满足 \((\epsilon, \delta)\)-DP 时,这是一个数学承诺。但是,如果不简单地相信数学证明,我们该如何验证这一承诺呢?
实证审计将训练算法视为黑盒。审计员注入已知的数据点 (金丝雀,canaries) ,训练模型,然后尝试确定哪些金丝雀在训练过程中被使用了。如果审计员能以高置信度猜对,说明隐私保证较弱。
效率瓶颈
对于大型模型来说,传统的审计方法在计算上是令人望而却步的。为了建立隐私泄露具有统计意义的估计,审计员传统上必须在略有不同的数据集上训练模型数千次。对于现代大型语言模型 (LLM) 或深度视觉网络而言,这是不可能的。
Steinke 等人 (2023) 最近的工作带来了一项突破: 单次运行审计 (Auditing in One Run) 。 通过利用训练数据本身的随机性 (具体来说,随机包含或排除金丝雀) ,他们推导出了仅需训练模型一次的界限。然而,他们的分析依赖于标准的 \((\epsilon, \delta)\)-DP 核算。正如我们将看到的,这种近似方法浪费了大量的“隐私预算”,导致估算值远低于模型的真实隐私水平。
背景: 行业工具
要理解作者的贡献,我们必须首先确立标准 DP 和 \(f\)-DP 之间的区别,以及审计博弈是如何运作的。
标准差分隐私 vs. \(f\)-差分隐私
标准 DP 使用两个标量来描述隐私: \(\epsilon\) (隐私损失) 和 \(\delta\) (失败概率) 。虽然有用,但这个定义通常依赖于对区分两个数据集时假阳性和假阴性之间真实权衡的宽松近似。
\(f\)-差分隐私 (\(f\)-DP) 提供了更完整的视角。它不是使用固定参数,而是使用权衡函数 \(f\) 来描述隐私。该函数完全描述了区分数据集 \(S\) 及其相邻数据集 \(S'\) 的假设检验难度。

如上所示,如果在一个数据集下输出落入集合 \(T\) 的概率受到应用于相邻数据集下概率的权衡函数的限制,则该机制是 \(f\)-DP 的。这种函数形式允许精确的核算,特别是对于在私有深度学习中处于核心地位的高斯机制。
审计博弈
审计过程被建模为审计员和算法之间的博弈。
- 设置: 审计员选择一组“金丝雀” (特殊数据点) 。
- 随机化: 对每只金丝雀抛硬币。如果是正面,金丝雀加入训练集;如果是反面,则排除。
- 训练: 机制在数据集 (包括选定的金丝雀) 上进行训练。
- 猜测: 审计员 (攻击者) 检查最终模型,并试图猜测每只金丝雀的硬币状态 (包含/排除) 。
这个博弈的输出是一对整数:
- \(c'\): 攻击者选择进行的猜测总数。
- \(c\): 正确猜测的数量。


新框架的目标是利用这些观察到的计数 (\(c\) 和 \(c'\)) ,在数学上反向推导,找到能合理解释该成功率的最紧致 \(f\)-DP 曲线。
核心方法: 通过递归分析进行紧致审计
这篇论文的主要贡献是在“单次运行”博弈中攻击者的成功率与 \(f\)-DP 曲线之间建立了严格的数学联系。
为什么以前的方法很宽松
以前的“单次运行”审计 (Steinke 等人) 使用从 \(\epsilon\) 导出的二项分布来限制攻击者的成功率。他们实际上是在问: “如果模型是 \(\epsilon\)-私有的,攻击者最多能做出多少次正确猜测?”
然而,这种方法只在单一点上近似隐私曲线。真实的机制,如高斯机制,具有弯曲的权衡曲线。通过检查单个 \((\epsilon, \delta)\) 点的隐私,以前的方法未能利用隐私机制的全部几何约束,导致了悲观的估计 (审计值远低于理论真值) 。
新方法: 界定尾部
作者提出分析整个 \(f\)-DP 曲线 。 他们推导出一个递归关系,用于界定攻击者恰好做出 \(i\) 次正确猜测的概率。
论文的中心定理 (定理 9) 提供了一个对于任何 \(f\)-DP 机制都必须成立的不变量。

这个不等式看起来可能令人生畏,但它编码了一个强大的“洗牌 (shuffling) ”论证。直觉如下:
- 对称性: 金丝雀的具体身份并不重要,重要的只是正确猜测的数量。分析假设金丝雀是被置换 (洗牌) 过的。
- 条件化: 作者通过以第一次猜测成功为条件,分析了获得特定数量正确猜测的概率。
- 递归界限: 他们推导出了一种基于 \(0\) 到 \(i-1\) 次正确猜测的概率来界定概率 \(p_i\) (\(i\) 次正确猜测的概率) 的方法。
通过迭代这个界限,他们可以在数值上构建分布的“尾部”——即攻击者至少猜对 \(c\) 次的累积概率。
算法 3: 数值审计器
理论界限通过数值算法 (论文中称为算法 3) 实现。
- 输入: 观察到的正确猜测数 \(c\),总猜测数 \(c'\),以及假设的权衡函数 \(f\)。
- 过程: 算法递归计算先前状态概率的下界。
- 决策: 它检查这些概率之和是否导致矛盾 (即总概率 > 1) 。
- 输出: 如果发现矛盾,意味着假设的隐私水平 \(f\) 过高,无法解释攻击者的成功率。该假设被拒绝。
这允许审计员测试各种隐私曲线 (例如,具有不同噪声水平的高斯曲线) ,并找到与攻击结果基本一致的“最强”隐私曲线。
推广: 重构攻击
该论文将此推广到了简单的“在或不在”成员推断之外。它还支持重构攻击 , 即攻击者试图从 \(k\) 个选项中识别出使用了哪一个数据点。

在这个变体中,数学公式进行了调整,以适应从 \(k\) 个选项中猜中 1 个的难度,而不仅仅是二元分类。这种推广使得审计框架适用于更广泛的隐私威胁。
实证隐私与结果
为了展示这种新方法的有效性,作者将他们的 实证 \(\epsilon\) (从攻击中审计出的隐私水平) 与 理论 \(\epsilon\) (数学上证明的隐私) 以及 Steinke 等人 (2023) 的结果进行了比较。
一个“理想”的审计员得出的实证 \(\epsilon\) 应完全等于理论 \(\epsilon\)。一个“宽松”的审计员得出的值则会低得多。
高斯机制上的比较
下图是论文中最能说明问题的结果。它比较了标准高斯机制在不同噪声水平下的审计性能。

解读:
- 绿线 (理论值) : 基本事实的隐私水平。
- 蓝线 (Steinke 等人) : 之前的最先进技术。注意随着金丝雀数量 (x 轴) 的增加,它明显下降,特别是在较低噪声水平下。
- 橙线 (本文方法) : 提出的新方法。它始终比基线更紧贴理论线。关键是,随着金丝雀数量的增加,界限改善 (上升) ,而基线则在退化。
这证明了分析完整的 \(f\)-DP 曲线捕捉到了点式 \((\epsilon, \delta)\) 分析所遗漏的隐私保证。
真实世界训练: CIFAR-10
作者还在使用 DP-SGD 在 CIFAR-10 数据集上训练的真实神经网络上验证了他们的方法。他们在白盒设置 (可访问中间模型更新) 下执行了基于梯度的成员推断攻击。

趋势再次保持一致。对于理论 \(\epsilon=8\) 的模型,新方法认证了约 6.5 的实证 \(\epsilon\),而先前方法认证的值明显更低。这种“差距的缩小”允许从业者在不改变训练过程的情况下,仅仅通过使用更好的审计工具,就能为其模型声称更强的隐私保证。
实验参数的影响
审计的有效性取决于“猜谜博弈”的参数,例如重构攻击的桶大小 (\(k\)) 和猜测次数 (\(c'\)) 。

结果表明,使用更大的桶大小 (使攻击者的重构任务更难) 允许审计数学提取更紧致的界限,进一步缩小与理论极限的差距。
结论与启示
“单次运行”审计框架代表了迈向实用隐私验证的关键一步。通过消除多次训练运行的计算障碍,它使大规模 AI 模型的审计变得触手可及。
Mahloujifar、Melis 和 Chaudhuri 的具体贡献——将 \(f\)-差分隐私 集成到该框架中——解决了第二个主要障碍: 准确性。通过利用整个隐私曲线而不是宽松的近似值,他们提供了:
- 更紧致的界限: 与理论真值更接近的实证估计。
- 可扩展性: 随着审计员注入更多金丝雀,界限会改善而不是退化。
- 灵活性: 适用于成员推断和重构攻击的统一框架。
虽然实证隐私和理论隐私之间仍存在差距,但这项工作显著缩小了这一差距。对于部署 DP 模型的工程师和研究人员来说,这意味着他们可以更自信地验证其实陈,确保理论上花费的“隐私预算”在实践中确实保护了用户。
](https://deep-paper.org/en/paper/2410.22235/images/cover.png)