想象你是一家四口的旅行财务官,妈妈把整个假期的花销装进一个“隐私钱包”。每住一晚酒店、每吃一顿大餐、每买一张景区门票,都要从钱包里掏钱。如果谁想花就花,估计第三天就只能在青旅阳台看风景了。差分隐私系统面临的正是这个尴尬:每次查询数据库,都像一次消费,会消耗一点“隐私预算”。当同一个系统要服务成千上万次查询,我们总不能拍脑袋说“够用”,而是要有一个精确的账本,算出每次查询到底扣了多少钱、总共还剩多少钱。 组合定理就是这张账本的记账规则。它告诉你三种最基本的算账方式:顺序组合下,钱按加法累积——问一次扣一块,问十次扣十块;并行组合下,只要大家花的不是同一份钱,总开销只算最大那笔;而后处理定理则保证,拿到数据的“加工”环节不额外花钱。更讲究的团队还会用高级组合定理和 RDP 这种“会员折扣账本”,把多轮小额开销算得更省、更准。读完这篇,你就能在真实系统里管好隐私预算,让每一分钱都花在刀刃上。

岗位关联

对 AI 从业者:掌握组合定理是设计多轮查询系统的基本功,它让你从“靠感觉估预算”升级为“按公式算损耗”,避免隐私预算超支引发的合规事故,也是成长为隐私计算方向资深工程师的核心能力。

目录
  1. 可视化演示
  2. 隐私预算基础
  3. 顺序组合定理
  4. 并行组合定理
  5. 后处理定理
  6. 高级组合定理
  7. RDP组合
  8. 组合应用实践
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示差分隐私顺序组合预算累加、并行组合不相交数据集取最大值、高级组合√k上界对比顺序组合k×ε,交互切换查看各定理。

本节配有交互动效(进入视口后自动加载,约 3KB)。

'+_captions.seq+'

隐私预算基础

出发旅行前,妈妈做的第一件事不是订票,而是翻出记账本,郑重写下两个数字:这趟出门总共能花多少钱、每笔开销记账在哪一栏。没有总额度就没有规划,没有记账习惯就等着半路破产。差分隐私系统的第一个规矩也是定这个“总额度”——隐私预算 ε。它像一个放大镜的倍数,衡量的是数据库里某个人在不在,查询结果的“观感”差别会有多大。ε 越小,说明这个放大镜倍数越低,个人被“认出来”的风险越小,代价是每次查询都得加更多噪声,答案变得更模糊。

正式地说,一个随机查询机制 M 若满足 ε-差分隐私,那么对任意一对仅差一行数据的相邻数据集 D₁ 和 D₂,M 在它们上输出落在同一个结果集合 S 里的概率,相差不会超过 e^ε 倍。这里的 M 可以理解成“带噪声的统计员”,他嘴上说的每句话都在真实数值上掺了一点随机杂质。

所以,隐私预算不是某个拍脑袋定出来的“安全系数”,而是一笔白纸黑字的总账。就像妈妈在记账本第一页写下的“总预算:壹万元”,后面的每一次查询、每一笔加噪,都要从这里支取。

Pr⁡[M(D1)∈S]≤eε×Pr⁡[M(D2)∈S]\displaystyle \Pr[\mathcal{M}(D_1) \in S] \le e^{\varepsilon} \times \Pr[\mathcal{M}(D_2) \in S]
这个公式是差分隐私的“总纲”,意思是:有人在不在表里,查询结果的概率分布几乎一模一样,最多差 e^ε 倍。
  1. 相邻数据集 D₁ 与 D₂一对只差一行数据的“邻居表”,比如员工表里张三在不在。一个人的信息差异,就是隐私泄露的全部来源。
    D1=D2∪{x}D_1 = D_2 \cup \{x\}
  2. 机制 M 与结果集 SM 是带噪声的随机查询机制,S 是它可能输出的某个取值区间。把 S 想成“查询回答的某个结果范围”。
    M(D)=true_answer+noise\mathcal{M}(D) = \text{true\_answer} + \text{noise}
  3. e^ε 放大倍数无论 D₁ 还是 D₂,查询落在同一结果区的概率最多相差 e^ε 倍。ε 接近 0 时 e^ε 接近 1,说明攻击者几乎分不清你在不在表里。
    eε≈1+ε(ε 很小时)e^{\varepsilon} \approx 1 + \varepsilon \quad (\varepsilon \text{ 很小时})

顺序组合定理

假设全家一天逛了四个景点,每进一个门买一次门票。晚上妈妈翻账本,总支出就是这四笔门票钱直接相加——难道还能指望景区给“连续打卡折扣”?顺序组合定理说的就是这个朴素的现实:在同一份数据上连续做 k 次查询,隐私预算像门票一样一张张叠加上去。

如果第 i 次查询满足 εᵢ-DP,那么向外同时发布这 k 个查询结果,整体对外等价于做了一次总预算为各次之和的查询。换句话说,攻击者面对的是 k 份带噪回答的总和,他能拼凑出的信息,不会超过一次消耗总预算的查询能泄露的信息。这个结论不要求几次查询互不相关,哪怕攻击者根据上一轮的答案精心设计下一轮查询,累加规则依然成立。

这个定理像一条铁律刻在所有隐私工程师的脑门上:多轮查询就是分期付款,总额永远是本金相加。它解释了一个反常识的现象——明明每次只查 0.1ε,10 次之后系统照样亮红灯,因为账本上写的是 1.0ε,一分没少。

εtotal=∑i=1kεi\displaystyle \varepsilon_{\text{total}} = \sum_{i=1}^{k} \varepsilon_i
顺序组合就是“分期付款,总额相加”:连续问 k 次,隐私损耗就是 k 次 ε 的和。
  1. εᵢ——单次门票价第 i 次查询消耗的隐私预算,噪声越大 εᵢ 越小,票越“便宜”。
    εi=第 i 次查询的隐私损耗\varepsilon_i = \text{第 } i \text{ 次查询的隐私损耗}
  2. Σ——逐笔累加把 k 次查询的 εᵢ 全部加起来,代表整体隐私损失的上界。
    ∑i=1kεi=ε1+ε2+⋯+εk\sum_{i=1}^{k} \varepsilon_i = \varepsilon_1 + \varepsilon_2 + \cdots + \varepsilon_k
  3. ε_total——整本账多次查询组成的联合输出,等价于一次消耗 ε_total 的查询。
    εtotal=ε1+ε2+⋯+εk\varepsilon_{\text{total}} = \varepsilon_1 + \varepsilon_2 + \cdots + \varepsilon_k

并行组合定理

如果旅行第三天上演“兵分三路”:爸爸去博物馆、妈妈逛老街、孩子冲向游乐场,三笔消费发生在互不相干的街区,妈妈记账时就不该把它们简单相加。道理很简单——每分钱是各花各的,没有一笔钱被两个地点同时花出去。并行组合定理把这个直觉翻译成了数学。

把数据集按某个属性切分成 k 个互不相交的块 D₁,…,D_k,每个个体只掉进一个块里。第 i 块上运行满足 εᵢ-DP 的查询,那么所有块的查询结果合在一起,整体只满足各次查询 ε 中的最大值。原因在于:对于任意一个具体的人,他的数据只出现在其中一个块里,他就只被那一块上的查询“碰”过一次,其他块的噪声再大,也和他无关。

并行组合是预算管理里最划算的优惠券。工程上常借此把海量用户按 ID 哈希分桶,每个桶独立做统计,整体预算不随桶的数量膨胀。恰如全家分开逛三个街区,花出去的钱反而比一起扫街更省。

εtotal=max⁡1≤i≤kεi\displaystyle \varepsilon_{\text{total}} = \max_{1 \le i \le k} \varepsilon_i
并行组合是“分钱包管理”:数据集互不相交时,总预算只取最大那笔,不随分区数量膨胀。
  1. 切分数据集按用户 ID 或时间范围把数据分成互不重叠的桶,一个人只属于一个桶。
    D=D1∪D2∪⋯∪Dk,Di∩Dj=∅ (i≠j)D = D_1 \cup D_2 \cup \cdots \cup D_k, \quad D_i \cap D_j = \emptyset \, (i \ne j)
  2. max 而非 Σ总损耗取决于“单个个体承受的最大暴露”,而不是把所有块的损耗加起来。
    εtotal=max⁡{ε1,ε2,…,εk}\varepsilon_{\text{total}} = \max\{\varepsilon_1, \varepsilon_2, \ldots, \varepsilon_k\}
  3. 直觉验证若某人在块 j,他所在的块只消耗 εⱼ,其他块的噪声再大也与他无关。
    个体的隐私暴露≤εj≤max⁡iεi\text{个体的隐私暴露} \le \varepsilon_j \le \max_i \varepsilon_i

后处理定理

妈妈买回一堆纪念品,回家后无论装裱、塑封、还是转手送人,购买时的发票金额都不再变化。后处理定理就是这句“发票哲学”:一旦差分隐私机制把带噪结果吐出来,你在它上面做任意加工,都不会额外增加隐私损耗。

正式表述:若 M 是 ε-DP 机制,那么对任意函数 g——求均值、取中位数、画直方图、甚至拿去训练一个模型——复合流程 g(M(D)) 仍然是 ε-DP。直觉是 g 只能看到 M(D) 这个已经加了足够噪声的输出,它手里没有原始数据,自然无法“挖出”更多个人信息。

不过别忘了发票哲学的前半句:只有拿到“发票”才能谈加工,你要是直接抄了一份原始精确数据再处理,那不叫后处理,叫泄露。预算一旦花出去,后处理不会让账单金额归零——它只是保证后面的环节不再产生新账单。

若 M ⁣:D→R 是 ε-DP,则 g∘M 也是 ε-DP\displaystyle \text{若 } \mathcal{M}\colon D \to R \text{ 是 } \varepsilon\text{-DP,则 } g \circ \mathcal{M} \text{ 也是 } \varepsilon\text{-DP}
后处理定理就是“发票哲学”:拿到带噪结果后随便加工,隐私等级不变,但也不会让已花掉的预算回来。
  1. g——任意加工函数把查询结果当原料,求均值、四舍五入、可视化都算 g。
    g ⁣:R→R′g\colon R \to R'
  2. ∘ 复合先查询后加工的整体流程,隐私级别不变。
    (g∘M)(D)=g(M(D))(g \circ \mathcal{M})(D) = g(\mathcal{M}(D))
  3. 为什么成立g 只依赖 M(D) 这个“已加噪”的输出,不含原始数据的任何额外信息,所以攻击者从 g(M(D)) 里能推断的,不会比从 M(D) 里推断的更多。
    εg∘M=εM\varepsilon_{g \circ \mathcal{M}} = \varepsilon_{\mathcal{M}}

高级组合定理

普通游客买一次票算一次钱,但办了景区年卡后,反复进出就会便宜许多——总花费从线性累加变成平方根式增长。高级组合定理就是这张年卡,它在近似差分隐私框架下,给出比天真相加更紧的总隐私上界。

如果 k 个机制每个都是 (ε,δ)-DP,经过高级组合后,整个流程可以看作 (ε', kδ+δ')-DP。其中总隐私损失大约按 √k 增长而不是按 k 增长。省下的预算从哪里来?答案是风险腾挪:把一小部分“确定性保证”转移成“允许以极小概率 δ 失守”的保证。

年卡虽好,代价是你要接受小概率的“意外暴露”。工程团队选择高级组合时,就像办卡前研读条款:既要享受 √k 的优惠,又要精挑细选 δ 这个“风险准备金”,确保它小到合规审计能接受。

ε′=2kln⁡(1/δ′) ε+kε(eε−1)\displaystyle \varepsilon' = \sqrt{2k\ln(1/\delta')}\,\varepsilon + k\varepsilon(e^{\varepsilon} - 1)
高级组合是“景区年卡”:总隐私上界从线性增长变成平方根增长,但代价是引入一个小概率失败参数 δ'。
  1. √k 主导项当 ε 很小时第一项主导,预算主要按 √k 增长,比线性省得多。
    2kln⁡(1/δ′) ε∼O(k)\sqrt{2k\ln(1/\delta')}\,\varepsilon \sim O(\sqrt{k})
  2. kε(e^ε - 1)高阶补偿项,记录单次查询的“精细损耗”,当 ε 很小时可忽略。
    kε(eε−1)≈kε2(ε 很小时)k\varepsilon(e^{\varepsilon} - 1) \approx k\varepsilon^2 \quad (\varepsilon \text{ 很小时})
  3. δ' 与整体 δδ' 是允许整体出错的概率余量,它越小根号越大,预算越紧;整体失败率为 kδ+δ'。
    δtotal=kδ+δ′\delta_{\text{total}} = k\delta + \delta'

RDP组合

普通账本只记总金额,而 RDP(Rényi 差分隐私)是一本多栏明细账——每笔开销按不同“账目类型”分行记录,汇总时各栏分别加总。对动不动跑上千轮迭代的机器学习算法来说,这种精细记账能把预算边界抠到极致。

RDP 用参数 α 阶 Rényi 散度来度量两个相邻数据集上输出分布的距离,称一个机制满足 (α, ε_RDP)-DP。它最优雅的性质是组合规则:顺序组合多个 RDP 机制时,同一阶 α 的隐私损耗直接相加。所有轮次算完后,再把 RDP 账目转换回 (ε,δ)-DP,与全系统统一对账。

如果用普通账本,联邦学习动辄几千轮梯度更新,预算早就爆表;换成 RDP 多栏账本,每一轮的小额损耗都被精确记录,最后汇总出的总损耗往往比朴素累加小一个量级——这正是它在生产环境大受欢迎的原因。

Dα(M(D1)∥M(D2))≤εRDP(α),εRDP,total(α)=∑i=1kεi(α)\displaystyle D_{\alpha}(\mathcal{M}(D_1) \parallel \mathcal{M}(D_2)) \le \varepsilon_{\text{RDP}}(\alpha), \qquad \varepsilon_{\text{RDP,total}}(\alpha) = \sum_{i=1}^{k}\varepsilon_i(\alpha)
RDP 是多栏明细账:每一轮查询在不同 α 下分别记账,同阶 α 的损耗直接相加,最后统一换算回 (ε,δ)-DP。
  1. D_α——分布距离尺α 阶 Rényi 散度衡量 D₁、D₂ 上输出分布相距多远,α 越大尺子越“挑剔”。
    Dα(P∥Q)=1α−1log⁡E[(PQ)α]D_{\alpha}(P \parallel Q) = \frac{1}{\alpha-1}\log \mathbb{E}\left[\left(\frac{P}{Q}\right)^{\alpha}\right]
  2. ε_RDP(α)——按 α 记账同一机制在不同 α 下有不同的隐私读数,形成一条随 α 变化的“隐私曲线”。
    εRDP(α)=max⁡D1,D2Dα(M(D1)∥M(D2))\varepsilon_{\text{RDP}}(\alpha) = \max_{D_1, D_2} D_{\alpha}(\mathcal{M}(D_1) \parallel \mathcal{M}(D_2))
  3. 同 α 相加组合时各机制的散度按同阶 α 求和,账目清晰不串行。
    εRDP,total(α)=∑i=1kεi(α)\varepsilon_{\text{RDP,total}}(\alpha) = \sum_{i=1}^{k}\varepsilon_i(\alpha)
  4. 换算回传统 DP最终把 RDP 账本换算回 (ε,δ)-DP,就可以和全系统统一对账。
    ε=εRDP(α)+log⁡(1/δ)α−1\varepsilon = \varepsilon_{\text{RDP}}(\alpha) + \frac{\log(1/\delta)}{\alpha - 1}

组合应用实践

真正的旅行财务官不会等钱花光才翻账本。出发前设好日限额,每笔消费实时记账,余额低于阈值就自动预警。组合定理落到工程上就是这套预算仪表盘。

给定总预算 B、目前已消耗 Σεᵢ、下一次查询的单位成本 ε_next,剩余可查询次数用下面的公式估算,并随时检查是否超支。预算管理系统会在每次查询前调用预算校验,在账户余额不足以支付时拒绝请求,而不是让系统默默超支。

至此,整趟旅程的记账兵法已经齐了:顺序组合让人警惕负债,并行切分让人学会开销分流,后处理让人安心加工,高级组合与 RDP 让预算能多撑几回合。算法工程师握住这几条规则,才能真正做到“预算不超支、查询不慌乱”。

kmax⁡=⌊B−∑i=1tεiεnext⌋\displaystyle k_{\max} = \left\lfloor \frac{B - \sum_{i=1}^{t} \varepsilon_i}{\varepsilon_{\text{next}}} \right\rfloor
这是预算仪表盘的核心算式:剩余额度除以单次成本,向下取整得到还能查几次。
  1. B - Σ——剩余额度总预算减去已记账消耗,对应钱包里剩下的现金。
    Bremain=B−∑i=1tεiB_{\text{remain}} = B - \sum_{i=1}^{t} \varepsilon_i
  2. 除以 ε_next——换算成次数余量能兑换几次“下一次查询”。
    Bremainεnext=剩余可查询次数\frac{B_{\text{remain}}}{\varepsilon_{\text{next}}} = \text{剩余可查询次数}
  3. ⌊⌋ 向下取整只接受整数,宁可少算一次,绝不多承诺。
    kmax⁡=⌊3.7⌋=3k_{\max} = \lfloor 3.7 \rfloor = 3

AI 应用场景

医疗数据协作平台的查询预算管家

阶段:数据发布与受控查询

解决的问题:多家医院共享病例数据做流行病学研究,研究人员会发起成千上万次统计查询。传统方式要么直接查明细(无隐私保护),要么只开放固定报表(灵活性差)。AI 方式:平台用顺序组合核算同数据集多轮统计查询的累计损耗,用并行组合按病种把数据切成互不相交的池子,每个池子独立预算,避免彼此污染。

具体案例:某省级健康医疗大数据平台为流行病学团队提供 3 年纵向研究查询接口,总预算 ε=2.0,3000 多次带噪统计查询后仍保持在预算内,顺利通过合规审计。研究员的每一次查询都实时扣减预算,余额不足时自动降级为更低精度的回答。

联邦学习训练轮次的隐私核算

阶段:模型训练

解决的问题:联邦推荐系统中每轮本地梯度更新都要加噪,500 轮训练如果用朴素顺序组合,预算瞬间爆炸。AI 方式:用 RDP 账本记录每轮(α, ε_RDP)读数,同 α 加总后转换回 (ε,δ)-DP,动态决定还能训练几轮,让模型在预算边界内多跑若干轮。

具体案例:某大型电商的联邦 CTR 预估模型,在 ε=1.0 的预算下,用 RDP 核算把可训练轮数从朴素组合下的 80 轮提升到 300 轮,AUC 提升约 1.2 个百分点,同时通过隐私审计。

AB 实验平台的预算池隔离

阶段:实验设计与数据分发

解决的问题:多个业务团队共用同一个用户特征池做策略实验,如果不做隔离,A 团队的查询会悄悄消耗 B 团队的预算。AI 方式:按团队分配独立预算池(并行组合思想),团队内部多轮查询用顺序组合记账,预算池见底时自动暂停低优先级实验,保证核心团队的实验不被打断。

具体案例:某内容平台用差分隐私 AB 实验平台把 5 个算法团队的实验查询分配到各自预算池,配合实时预警,季度预算超支事件从 5 次降到 0 次。

Python 演示

python66 行
import mathimport random  class BudgetManager:    """差分隐私预算管理器: 模拟一家人旅行的记账本"""     def __init__(self, budget):        self.budget = budget  # 总预算: 妈妈的钱包        self.used = 0.0  # 已消耗预算        self.history = []  # 每笔查询记录     def sequential_query(self, eps):        """顺序组合: 多轮查询在总账上直接叠加"""        if self.used + eps > self.budget:            raise RuntimeError("budget exhausted")        self.used += eps        self.history.append(eps)        return True     def parallel_query(self, eps_list):        """并行组合: 不相交数据集只记最大一笔"""        cost = max(eps_list)        if self.used + cost > self.budget:            raise RuntimeError("budget exhausted")        self.used += cost        self.history.append(eps_list)        return True     def remaining(self):        return self.budget - self.used     def remaining_queries(self, eps_query=0.1):        return int(self.remaining() // eps_query)  def laplace_noise(scale, rng):    """生成拉普拉斯噪声: 差分隐私的模糊滤镜"""    u = rng.random()    v = rng.random()    return -scale * math.log(u) * (1 if v > 0.5 else -1)  def noisy_query(true_answer, sensitivity, eps, rng):    """一次带噪声的差分隐私查询"""    if eps <= 0:        raise ValueError("eps must be positive")    noise = laplace_noise(sensitivity / eps, rng)    return true_answer + noise  if __name__ == "__main__":    rng = random.Random(42)    manager = BudgetManager(budget=1.0)    print("initial remaining:", manager.remaining())    try:        for i in range(2):            answer = noisy_query(100 + i * 5, 1, 0.3, rng)            manager.sequential_query(0.3)            print("query {} result: {:.2f}".format(i + 1, answer))            print("remaining:", manager.remaining())        manager.parallel_query([0.2, 0.2, 0.2])        print("after parallel, remaining:", manager.remaining())        print("can still run {} queries of 0.1".format(manager.remaining_queries()))    except RuntimeError as err:        print("budget warning:", err)
目的:演示一个差分隐私预算管理器——顺序组合按加法扣款,并行组合只取最大一笔,实时掌握剩余预算和可查询次数。
  1. self.used = 0.0钱包初始余额,记录已经花掉的隐私预算。
  2. if self.used + eps > self.budget:每笔消费前先查账,余额不足立即拒绝,绝不超支。
  3. self.used += eps顺序组合的入账方式:多轮查询的损耗直接叠加。
  4. cost = max(eps_list)并行组合的入账方式:不相交数据集只记最大那一笔。
  5. noise = laplace_noise(sensitivity / eps, rng)噪声尺度与 ε 成反比,预算越小噪声越大,答案越模糊。
  6. print("can still run {} queries of 0.1".format(manager.remaining_queries()))把剩余预算换算成“还能查几次”,对应仪表盘上的剩余次数。

常见误区

误区我只要把多次查询放到多线程里同时跑,它们就不算“叠加消耗”了吧?毕竟并行组合定理说了并行就不累加。

正解并行组合的“并行”指的是数据集不相交,而不是时间上的并发。同一份数据上,哪怕在同一微秒里发起十次查询,每个个体仍被扎扎实实接触了十次,顺序组合照样适用。只有当数据被切分成互不相交的分区、个体只出现在一个分区里,才能按 max 记账。

为何常见:中英文里 “parallel“ 在计算机领域太常指并发执行,直觉被带偏;加上有的框架文档口号式地写”并行查询省预算“,省略了”数据集不相交”这个前提。

误区后处理不花钱,那我先用 SQL 把精确结果查出来,然后对精确结果做差分隐私加噪,这样答案又准又满足后处理定理。

正解后处理定理的前提是输入已经带噪。你先取精确值,信息泄露已经完成,再对精确值加噪只是“亡羊补牢”——精确值本身不满足 DP,你加的那点噪声只能带来极弱的保护。正解是把噪声加在查询内部,把带噪结果交给下游加工。

为何常见:大家容易把“后处理”理解成“什么时候处理都可以免费”,忽略了它是一条关于“差分隐私输出”的性质,不是万能补丁。

误区用了高级组合定理,100 次查询的预算消耗只相当于 10 次,公司可以放开查了。

正解高级组合定理只是给出了更紧的上界,并没有让真实的隐私损失消失。它把一部分确定性保证转化为允许小概率 δ 失守的概率性保证,ε' 公式里的 δ' 就是这根“风险杠杆”。δ 定得越宽松,预算越省,但合规风险越高,审计时越难解释。

为何常见:√k 的曲线太诱人,让人盯着数学上“省了多少”,忽略了背后的概率风险条款。

误区每次查询设 ε=0.1,组合起来就是把 ε 相加,δ 是什么能吃吗?

正解纯 ε-DP(δ=0)的场景下顺序组合可以直接相加;但只要涉及近似 DP、高级组合或 RDP,δ 就是账本上必须记账的“风险准备金”,不同组合定理对 δ 的累积方式不同。忽视 δ 会导致预算算得过于乐观,真实隐私保证名不副实。

为何常见:教材从纯 DP 讲起,初学者先入为主地只盯 ε;而生产环境为了可用性又普遍用近似 DP,两套账目容易混在一起。

面试题

Q1. 在同一份数据集上连续执行 3 次 ε=0.1 的差分隐私查询,按顺序组合定理,总隐私预算消耗是多少?

单选题 · easy

  • A.0.1
  • B.0.3← 正确答案
  • C.0.03
  • D.0.9

答案:B。顺序组合定理的核心就是累加,三个 0.1 叠加得 0.3,相当于三张门票一张都不能少。A 是并行组合的记法,C 把方向搞反了,D 是平方了预算。

Q2. 并行组合定理成立的核心前提是什么?

单选题 · easy

  • A.多个查询同时发起
  • B.待查询数据集互不相交← 正确答案
  • C.每个查询都使用相同的 ε
  • D.查询结果经过后处理

答案:B。并行组合成立的前提是数据集互不相交,每个人的数据只出现在一个分区。时间上并发与否不影响结论,相同 ε 和后处理也都不是前提。

Q3. 将数据按用户 ID 哈希分成 5 个互不相交的分区,分别做 ε=0.2、0.3、0.4、0.1、0.2 的差分隐私查询,整体隐私预算是多少?

单选题 · mid

  • A.1.2
  • B.0.4← 正确答案
  • C.0.3
  • D.1.0

答案:B。5 个互不相交的分区对应并行组合,总隐私预算取最大值 max(0.2,0.3,0.4,0.1,0.2)=0.4。A 是顺序组合的错误加法,C 拿错了值,D 是混淆。

Q4. 关于后处理定理,以下哪项操作不消耗额外隐私预算?

单选题 · mid

  • A.对原始数据库实施一次全量统计
  • B.对差分隐私查询结果求中位数后发布← 正确答案
  • C.对同一数据集再次运行不同 ε 的查询
  • D.将原始数据与噪声查询结果拼接发布

答案:B。对差分隐私查询结果求中位数属于后处理,不消耗额外预算。对原始库全量统计和拼接原始数据都会直接破坏隐私,再跑一次查询会叠加预算。

Q5. 某系统总预算 ε=1.0,已消耗 0.6,后续每次查询需 ε=0.1,最多还能发起几次查询?

单选题 · easy

  • A.3
  • B.4← 正确答案
  • C.5
  • D.6

答案:B。(1.0-0.6)/0.1=4,向下取整后最多还能做 4 次。3 次太保守,5 次和 6 次会超支。

Q6. 高级组合定理相比朴素顺序组合的主要优点是什么?

单选题 · hard

  • A.完全消除隐私损失
  • B.总上界近似平方根增长← 正确答案
  • C.无需设置失败概率参数
  • D.可以免除全部噪声添加

答案:B。高级组合定理的总隐私上界主导项是 √k 量级,远小于线性累加。它不会消除隐私损失,必须设置 δ',也绝不能免除加噪。

Q7. 对于 k 个 (ε,δ)-DP 机制,高级组合定理给出的总隐私上界主导项形式是什么?

单选题 · extreme

  • A.kε
  • B.ε√(k ln(1/δ'))← 正确答案
  • C.√k · e^ε
  • D.ε²·k

答案:B。主导项是 √(2k ln(1/δ'))·ε 的量级,对应 ε√(k ln(1/δ')) 的形态。kε 是朴素线性上界,其余两项不是高级组合的主导项形态。

Q8. 以下哪些方法可以降低多次查询的总隐私预算消耗?

多选题 · mid

  • A.将数据集切分为互不相交的分区后进行查询← 正确答案
  • B.对已发布的差分隐私结果做聚合后处理← 正确答案
  • C.用 RDP 核算多轮训练的总隐私损耗← 正确答案
  • D.把每轮查询的 ε 从 0.1 调高到 0.5

答案:ABC。分区查询对应并行组合只取 max,后处理不增加预算,RDP 更精确核算能避免过度悲观估计。把 ε 调高反而增加单次消耗,不可能降低总开销。

Q9. 关于 RDP 组合,正确的说法有哪些?

多选题 · mid

  • A.RDP 用 α 阶 Rényi 散度度量输出分布差异← 正确答案
  • B.不同 α 下的 RDP 隐私损耗可以直接相加
  • C.顺序组合时各机制的 RDP 损耗需在同阶 α 下求和← 正确答案
  • D.RDP 账本最终可转换为 (ε,δ)-DP 与系统统一对账← 正确答案

答案:ACD。RDP 在 α 阶 Rényi 散度下度量隐私,同阶 α 的隐私损耗才可相加,不同 α 不能混加;最终可转换为 (ε,δ)-DP 与系统统一对账。

Q10. 差分隐私预算耗尽后,工程上合理的处置方式包括哪些?

多选题 · hard

  • A.立即停止当前数据上的所有新查询← 正确答案
  • B.将后续查询切换到与该数据集不相交的其他数据分区← 正确答案
  • C.对已发布结果做复杂度更高的统计建模← 正确答案
  • D.无条件重置预算并继续原样查询

答案:ABC。预算耗尽后应立即停止放行新查询;换到不相交分区启动新池在并行组合下合法;对已发布结果做统计建模是合法后处理。无条件重置预算等于撕毁隐私承诺,绝不可取。