高级组合定理:提高隐私预算利用率

高级组合定理:提高隐私预算利用率

原文课程: Lecture 6 — Advanced Composition (Gautam Kamath, CS 860, Fall 2020)

隐私预算就像钱包里的钱——你希望每笔"查询"花的钱越少越好。纯 DP 的基本组合定理告诉我们:运行 k 个 ε-DP 算法,整体是 kε-DP。隐私预算线性增长,这太奢侈了!

高级组合定理(Advanced Composition Theorem)改变了游戏规则:它允许隐私预算按 O(√k) 增长而非 k——这是数量级上的提升。


1. 基本组合 vs 高级组合

假设你要回答 10,000 个查询,每个查询使用 ε=0.01 的隐私预算:

组合方式总隐私损失可用性
基本组合ε_total = 10,000 × 0.01 = 100❌ 隐私完全崩溃
高级组合ε_total ≈ 0.01 × √(2×10,000×log(1/δ)) ≈ 1.4✅ 仍然可接受

这是 70 倍的差距!

高级组合 - O(√k)增长

1个查询: ε

10个查询: ~3ε

100个查询: ~10ε

10,000个查询: ~100ε ✅

基本组合 - 线性增长

1个查询: ε

10个查询: 10ε

100个查询: 100ε

10,000个查询: 10,000ε ❌


2. 高级组合定理的正式表述

定理(高级组合):对于所有 ε, δ, δ’ > 0,设 M = (M₁, …, Mₖ) 是一系列 自适应选择 的 (ε, δ)-差分隐私算法。那么整体算法满足 (ε̃, δ̃)-差分隐私,其中:

ε̃ = ε·√(2k·ln(1/δ’)) + k·ε·(e^ε - 1)/(e^ε + 1)

δ̃ = kδ + δ’

看起来很复杂?让我们拆解一下:

三项的含义

  1. 主导项: ε·√(2k·ln(1/δ’)) —— 从 k 变为 √k 的核心
  • 当 k 很大时,这一项主导
  • δ’ 是一个"调优参数"——让它越大,√k 前的系数就越小
  1. 二阶项: k·ε·(e^ε - 1)/(e^ε + 1)
  • 当 ε 很小时(高隐私区),(e^ε - 1)/(e^ε + 1) ≈ ε/2
  • 此时二阶项 ≈ k·ε²/2 —— 对很小的 ε 可以忽略
  1. δ 累积: δ̃ = kδ + δ’
  • k 个算法各自的 δ 累积
  • δ’ 是额外的调优参数

简化版本(高隐私区)

当 ε 很小(比如 ε ≤ 1)且忽略常数因子时:

(ε̃, δ̃)-DP,其中 ε̃ ≈ O(ε·√(k·log(1/δ)))


3. 直观理解:为什么能从 O(k) 变成 O(√k)?

关键直觉在于隐私损失变量的随机性

基本组合的错误假设

基本组合假设最坏情况:每次查询的隐私损失方向都相同(每次都是"坏"方向)。就像连续抛硬币总是正面——概率极低,但基本组合保守地考虑了这种情况。

高级组合的正确洞察

高级组合认识到:隐私损失变量是一个均值为 0 的随机变量。就像抛硬币一样,大多数时候正面和反面会互相抵消。

  • 平均总隐私损失 ≈ 0(中心极限定理)
  • 总隐私损失 ≥ t 的概率 ≈ exp(-t²/2kε²)
  • 所以 t ≈ ε·√k 就能使这个概率很小

第1次查询 隐私损失 L₁

组合隐私损失

第2次查询 隐私损失 L₂

...

第k次查询 隐私损失 Lₖ

总损失 = ∑Lᵢ~ N(0, kσ²)

|总损失| ≥ ε̃ 的概率 ≤ δ


4. 一个实际例子

假设你要用 DP 训练一个深度学习模型,每轮梯度更新(SGD step)使用 ε=1, δ=10⁻⁵。如果你训练 1,000 轮:

组合方式总 ε可用性评估
基本组合ε_total = 1,000❌ 完全不可用
高级组合ε_total ≈ 1·√(2·1000·ln(1/0.01)) ≈ 30⚠️ 还可以
高级组合(调优到 δ’=0.1)更小的 ε̃✅ 实用

这就是 DP-SGD(差分隐私随机梯度下降)的核心——通过高级组合定理来摊销隐私成本,使得在成千上万轮迭代后仍然保持有意义的隐私保障。


5. 自适应查询 vs 非自适应查询

高级组合定理的一个强大特性是支持自适应查询

查询类型含义高级组合支持?
非自适应所有查询事先确定
自适应下一个查询可依赖于前面的答案

这意味着研究者可以根据之前的结果动态选择下一个分析方向,而不必提前决定所有问题——这更符合现实的数据分析流程。

DP算法 分析师 "DP算法" "分析师" DP算法 分析师 "DP算法" "分析师" 高级组合:总隐私 = 不论查询如何选择 查询1(根据公共知识) 加噪回答1 查询2(根据回答1设计) 加噪回答2 查询3(根据回答1,2设计) 加噪回答3

6. 用代码计算高级组合隐私预算

下面这个 Python 函数可以帮你计算任意场景下的总隐私预算,非常适合实际部署时使用:

import numpy as np
import math

def basic_composition(epsilon, k):
    """基本组合:总隐私 = k × ε(线性)"""
    return k * epsilon

def advanced_composition(epsilon, delta, k, delta_prime=1e-6):
    """
    高级组合定理:总隐私预算计算

    参数:
        epsilon: 每次查询的隐私预算
        delta: 每次查询的δ
        k: 查询次数
        delta_prime: 调优参数(越小ε̃越小,但δ̃略增)
    返回:
        (epsilon_total, delta_total)
    """
    term1 = epsilon * math.sqrt(2 * k * math.log(1 / delta_prime))
    term2 = k * epsilon * (math.exp(epsilon) - 1) / (math.exp(epsilon) + 1)
    epsilon_total = term1 + term2
    delta_total = k * delta + delta_prime
    return epsilon_total, delta_total

# ===== 场景对比 =====
print("=== 基本组合 vs 高级组合 ===\n")

scenarios = [
    ("少量精确查询", 10, 0.5, 1e-5),
    ("中等规模查询", 100, 0.1, 1e-5),
    ("DP-SGD 100轮", 100, 0.1, 1e-5),
    ("DP-SGD 1000轮", 1000, 0.1, 1e-5),
    ("普查级大规模", 10000, 0.01, 1e-6),
]

for name, k, eps, d in scenarios:
    basic = basic_composition(eps, k)
    adv_eps, adv_delta = advanced_composition(eps, d, k)
    print(f"场景: {name}")
    print(f"  k={k}, ε={eps}, δ={d}")
    print(f"  基本组合: ε_total = {basic:.2f}  {'❌' if basic > 5 else '⚠️' if basic > 1 else '✅'}")
    print(f"  高级组合: ε_total = {adv_eps:.2f}, δ_total = {adv_delta:.2e}  {'❌' if adv_eps > 5 else '⚠️' if adv_eps > 1 else '✅'}")
    print()

# ===== 关键可视化:增长趋势对比 =====
print("--- k从1到10000的ε_total增长对比 ---")
ks = [1, 10, 50, 100, 500, 1000, 5000, 10000]
for k in ks:
    basic = basic_composition(0.1, k)
    adv, _ = advanced_composition(0.1, 1e-5, k)
    print(f"  k={k:5d}: 基本={basic:.1f}  高级={adv:.2f}  (比值={basic/adv:.0f}x)")

运行这段代码,你会看到在 k=10000 时基本组合的 ε=1000(完全不可用),而高级组合仅约 9.2(仍可接受),差距超过 100 倍

7. 与基本组合的对比总结

特性基本组合高级组合
增长方式O(k)O(√k)
隐私定义ε-DP 或 (ε,δ)-DP(ε,δ)-DP
是否支持自适应
数学复杂度简单中等
k=10, ε=0.1 的结果ε_total = 1.0ε_total ≈ 0.4
k=100, ε=0.1 的结果ε_total = 10.0 ❌ε_total ≈ 1.3 ✅

小结

高级组合定理是差分隐私走向实用化的关键里程碑之一。它解决了基本组合中隐私预算线性增长这一致命缺陷,使得在大规模查询场景(如机器学习多轮训练、普查数据发布)中使用差分隐私变得可行。

概念要点
基本组合总隐私 = k × ε(线性)
高级组合总隐私 ≈ O(√k) × ε(次线性)
实现机制识别隐私损失变量的随机性,利用抵消效应
δ 调优通过 δ’ 参数控制 ε̃ 和 δ̃ 的权衡
实践意义DP-SGD、普查数据发布等大规模应用的基础

下一讲,我们将介绍指数机制——当要输出的不是数值而是一个"对象"时(如选择最佳价格或最佳模型参数),我们该如何保护隐私?


下一篇: 指数机制:从数值到对象的隐私保护

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值