夏夜,你逛到夜市最热闹的摊位前,老板神秘兮兮地亮出一台机器:“这是偏心抽签机,咱们要评‘夜市小吃王’。”规则很特别:不直接公布谁票数最高,而是给每款小吃按热度分配不同厚度的签——烤串票多,签就厚,中签概率大;凉粉票少,签就薄,但也并非全无机会。机器侧面有个“偏心旋钮”,拧得越小,签的厚薄越接近,抽谁几乎全凭运气;拧得越大,热门小吃就越容易胜出。真正聪明的是它的承诺:哪怕小偷把投票记录换成了只差一个人的版本,也分辨不出结果差异。这台机器的内核,就是差分隐私指数机制。指数机制专门解决“输出一个离散选择但不泄露个体数据”的难题。接下来,我们从旋钮的刻度开始,一步步拆解评分、敏感度、公式、工程实现和真实应用。

岗位关联

指数机制是差分隐私家族中处理非数值输出的王牌。掌握它,你就能在推荐系统、隐私投票、医疗统计等场景中安全地发布离散结果。

目录
  1. 可视化演示
  2. 1. 隐私预算:偏心旋钮的刻度
  3. 2. 评分函数:给每款小吃打分
  4. 3. 机制公式:抽签机的概率内核
  5. 4. 性质分析:随机性的双刃剑
  6. 5. 工程实现:亲手造一台抽签机
  7. 6. 应用实战:从夜市走向行业
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

动态演示差分隐私指数机制原理的核心机制,通过输入/处理/存储/输出四种模式展示关键概念与交互流程。

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

差分隐私指数机制原理:指数机制 指数机制的核心思想 效用函数与敏感度 核心机制可视化 差分隐私指数机制原理整体架构与关键组件

1. 隐私预算:偏心旋钮的刻度

抽签机最显眼的零件,是侧面一个标着数字的旋钮。老板告诉你:“这个是偏心刻度,叫 ε。把它拧到 2,烤串几乎每次都赢;拧到 0.1,抽签跟抛硬币差不多。”你追问:怎么知道拧到多少才算安全?答案藏在“差分”两个字里——机器不是保证“谁都猜不出结果”,而是保证“换掉一个人的数据,结果几乎不变”。

差分隐私的正式说法是:如果两个数据集 D 和 D′ 只差一条记录,就称它们是相邻数据集。一台满足 ε-差分隐私的随机算法 \mathcal{M},在 D 和 D′ 上运行后,对任意一组输出结果集合 S,两边概率的比值都不能超过 e^ε。用生活话讲:小偷把某个人的投票换成另一个人的,机器输出的整体面貌只会发生“微乎其微”的变化;ε 越小,变化越难察觉,隐私越安全。

下面就是 ε-差分隐私的数学定义。

把旋钮看成“保密盖的拧紧力度”。拧到 0.1 时,机器几乎无视热度差异;拧到 10 时,它变得很诚实,但小偷也更容易从结果推断出你投了哪家臭豆腐。选择 ε,永远是隐私与实用性之间的一次权衡。

Pr⁡[M(D)∈S]≤eϵ⋅Pr⁡[M(D′)∈S]\Pr[\mathcal{M}(D) \in S] \le e^{\epsilon} \cdot \Pr[\mathcal{M}(D') \in S]
这个不等式像一个“保密盖”,用 e^ε 这块天花板压住相邻数据集上输出差异的幅度。
  1. 随机算法 \mathcal{M}表示抽签机本身,它的输出带有随机性,不是确定性的。
    M(D)\mathcal{M}(D)
  2. 相邻数据集 D 和 D′只差一条记录的两个数据集,像两份只换了一名顾客的投票名单。
    D∼D′D \sim D'
  3. 输出集合 S一组可能的结果,比如“烤串获胜”或“凉粉获胜”这样的候选结果集合。
    S⊆RS \subseteq \mathcal{R}
  4. 比值上限 e^ε隐私预算放大镜;ε 越小,e^ε 越接近 1,两边概率几乎相同。
    eϵ≈1e^{\epsilon} \approx 1

2. 评分函数:给每款小吃打分

抽签机不能凭空偏心,它需要一张“热度牌”。老板请每位顾客给最爱的小吃投一票,于是每款小吃得到一个分数:烤串 8 分,炸鸡 7 分,凉粉 5 分,臭豆腐 3 分。这张牌上的数字,就是评分函数 q(D, r):给它一份数据集 D 和一个候选结果 r,它回给你一个分数,代表这个结果在当前数据下的“受欢迎程度”。

指数机制的输入里,评分函数是灵魂。候选结果 r 来自候选空间 \mathcal{R}——也就是夜市菜单上所有可能被选中的小吃。分数可以是频次、点击率、相关度、准确率等任何你能算出的效用值。关键一点:评分函数只负责打分,输出结果本身可以是类别、字符串甚至结构化决策,不必是数值。

有了分数,还要回答一个问题:一个人的数据变化最多让分数变多少?这就是全局敏感度 Δq。

要调好机器,老板得先知道“一个人最多能改多少分”。如果规则是每人一票、每票一分,Δq=1;如果改成每人可以投五票,Δq=5,签的厚薄就必须更均匀,否则一个人的意志就能左右整个结果。

Δq=max⁡r∈R  max⁡D,D′ 相邻∣q(D,r)−q(D′,r)∣\Delta q = \max_{r \in \mathcal{R}} \; \max_{D, D' \text{ 相邻}} \left| q(D, r) - q(D', r) \right|
全局敏感度是“最坏情况下,一个人的数据能撬动评分的最大幅度”。
  1. 外层最大值遍历所有候选结果,只为找到那个受影响最大的“软肋”候选。
    max⁡r∈R\max_{r \in \mathcal{R}}
  2. 内层最大值遍历所有相邻数据集对,找出评分差最大的那对邻居。
    max⁡D,D′ 相邻\max_{D, D' \text{ 相邻}}
  3. 绝对差值用绝对值保证只关心变化的幅度,不关心变大还是变小。
    ∣q(D,r)−q(D′,r)∣\left| q(D, r) - q(D', r) \right|
  4. 敏感度含义一个顾客最多能让某款小吃的评分改变 Δq 分,这是噪声设计的“标尺”。
    Δq\Delta q

3. 机制公式:抽签机的概率内核

材料齐了:偏心旋钮 ε、热度牌 q(D, r)、单人影响上限 Δq。老板开始计算每根签的厚度。他的算法很特别:签厚不是按分数线性增长,而是以分数为指数的指数级增长。这就是“指数机制”名字的来历。打分越高,权重爆炸式增长,中签概率也更高;但低分者不会被清零,永远保留一丝抽中的机会——这种“保留意外”的设计正是隐私的来源。

指数机制的定义式如下:对每个候选结果 r,计算指数权重 \exp(εq/(2Δq)),再用所有候选的权重之和做归一化,得到合法的概率分布。

签厚与热度不是线性关系,而是指数放大。偏心旋钮拧到 1.0 时,评分差 2Δq 的两款小吃,中签概率能差 e 倍以上;再拧大一点,优势会更加惊人。指数这个数字,看起来保守,放出来却很有爆发力。

Pr⁡[M(D,q,ϵ)=r]=exp⁡(ϵ q(D,r)2 Δq)∑r′∈Rexp⁡(ϵ q(D,r′)2 Δq)\Pr[\mathcal{M}(D, q, \epsilon) = r] =\frac{\exp\left(\dfrac{\epsilon \, q(D, r)}{2\,\Delta q}\right)}{\displaystyle \sum_{r' \in \mathcal{R}} \exp\left(\dfrac{\epsilon \, q(D, r')}{2\,\Delta q}\right)}
分子是某款小吃的“签厚”,分母是所有小吃“签厚”的总和,两者一除就是中签概率。
  1. 分子指数项评分越高,e 的指数越大,签越厚;指数函数让差距被迅速放大。
    exp⁡(ϵ q(D,r)2 Δq)\exp\left(\frac{\epsilon \, q(D, r)}{2\,\Delta q}\right)
  2. 分母归一化项把菜单上所有候选的签厚相加,保证所有概率加起来等于 1。
    ∑r′∈Rexp⁡(ϵ q(D,r′)2 Δq)\sum_{r' \in \mathcal{R}} \exp\left(\frac{\epsilon \, q(D, r')}{2\,\Delta q}\right)
  3. 系数 2Δq把隐私预算切成两半使用,让后面隐私证明中两边各占 e^{ε/2}。
    ϵ2 Δq\frac{\epsilon}{2\,\Delta q}
  4. 输出概率整个分式给出“这款小吃被抽中”的概率,抽签时按此概率采样。
    Pr⁡[M(D,q,ϵ)=r]\Pr[\mathcal{M}(D, q, \epsilon) = r]

4. 性质分析:随机性的双刃剑

机器摆在夜市中央,老板却开始担心:如果每次选出的都是烤串,小偷会不会反推出“那天晚上谁在烤串摊前待了很久”?答案藏在随机性里——指数机制每次抽签都可能不同,偶尔还会爆冷选中凉粉。正因为输出是概率化的,攻击者很难从单次结果锁死任何一条个人记录。

指数机制的隐私保证可以写成比值形式:对任意候选输出 r,相邻数据集 D、D′ 输出同一个 r 的概率之比不超过 e^ε。这个性质不依赖 r 是数值,不依赖候选空间的大小,是一个纯粹的 ε-差分隐私保证。

随机性是把双刃剑:太随机,选出的结果没有代表性;太偏心,又会泄露顾客口味。指数机制用 e^ε 这把放大镜,在“结果有用”和“个体安全”之间维持了一种数学上的优雅平衡。

Pr⁡[M(D)=r]Pr⁡[M(D′)=r]≤eϵ\frac{\Pr[\mathcal{M}(D) = r]}{\Pr[\mathcal{M}(D') = r]} \le e^{\epsilon}
这个比值界是隐私的“质量认证”:无论候选结果是什么,相邻数据集的输出差异都被压在天花板之下。
  1. 分子的概率原数据集 D 输出 r 的概率,对应“原名单”上 r 的分量。
    Pr⁡[M(D)=r]\Pr[\mathcal{M}(D) = r]
  2. 分母的概率邻居数据集 D′ 输出 r 的概率,对应“换了一个人后”的分量。
    Pr⁡[M(D′)=r]\Pr[\mathcal{M}(D') = r]
  3. 隐私放大上限比值不超过 e^ε;ε 越小,两个概率越难区分。
    eϵe^{\epsilon}
  4. 机制的内在结构分子分母各自差一个 e^{ε/2} 因子,合成后不超过 e^ε,2Δq 在此处功不可没。
    eϵ/2×eϵ/2=eϵe^{\epsilon/2} \times e^{\epsilon/2} = e^{\epsilon}

5. 工程实现:亲手造一台抽签机

理论讲得再漂亮,老板还得真的把机器造出来。他摊开操作手册,写了四步:第一步列菜单,把候选小吃全部写清楚;第二步称热度,算每个候选的评分和单人最大影响;第三步做签,按偏心度算每根签的厚度;第四步闭眼抽,按签的厚度比例抽出一根。这四步对应指数机制的工程实现。

具体来说,先枚举候选空间 \mathcal{R},再对每个 r 计算未归一化权重 w_r,然后求和并归一化得到概率 p_r,最后用轮盘赌采样:生成一个 0 到 1 之间的随机数 U,按累积概率确定落入哪根签。当候选数量特别大时,直接算 \exp 可能溢出——指数值一旦超过几百,浮点数就存不下了。解决办法是 log-sum-exp 技巧:所有指数项同时减去最大值,概率比例不变,数值却稳定得多。

真正造机器时,最容易被忽略的是“菜单太大”。当候选有上百万个,逐根做签、逐根比较开销惊人。工程师们于是改用下一节要讲的“报告机制”这枚速成骰子,它能在不影响隐私保证的前提下大幅提速。

w_r = \exp\left(\frac{\epsilon \, q(D, r)}{2\,\Delta q}\right), \qquadp_r = \frac{w_r}{\displaystyle \sum_{r' \in \mathcal{R}} w_{r'}}
权重公式是“签厚”,归一化公式把签厚换算成“中签概率”,两者合起来就是采样前的全部准备。
  1. 权重计算每个候选的原始签厚,由偏心度、评分和敏感度共同决定。
    wr=exp⁡(ϵ q(D,r)2 Δq)w_r = \exp\left(\frac{\epsilon \, q(D, r)}{2\,\Delta q}\right)
  2. 权重总和把菜单上所有候选的签厚加起来,作为归一化的分母。
    ∑r′∈Rwr′\sum_{r' \in \mathcal{R}} w_{r'}
  3. 概率归一化除法把任意大小的权重压缩成 0 到 1 之间的概率。
    pr=wr∑r′wr′p_r = \frac{w_r}{\sum_{r'} w_{r'}}
  4. 采样决策生成随机数后沿累积概率行走,落入哪个区间就输出哪个候选。
    U∼Uniform(0,1)U \sim \text{Uniform}(0, 1)

6. 应用实战:从夜市走向行业

夜市老板的抽签机很快被工业界抄走了。电商公司用它做“猜你喜欢”:不直接推点击最高的商品,那样会暴露你的浏览偏好,而是按点击热度评分的指数机制抽样,输出一个概率化的推荐榜单。医院用它发布“本季度最常见症状”,既服务公共卫生,又不泄露任何单个患者的信息。投票站用它统计“哪个候选提案支持率最高”,同时保护每张选票。

这些场景里,候选空间往往极大,逐一按指数权重采样太慢。于是工程师常用一个等价实现——报告机制(Report Noisy Max):先给每个候选的评分加一个 Gumbel 噪声,然后选择加噪后的最大值。这个“加噪声再取最大”的过程,与指数机制满足同样的 ε-差分隐私,但只需要一次最大值扫描,速度飞快,是工业界的常客。

如果说抽签机是按签厚抽一签,报告机制就像把所有签放在一个骰子盘上,吹一阵随机大风后再取最高的那根。风的强度由 2Δq/ε 决定——隐私预算越小,风越大,结果越随机,保护越强。

r∗=arg⁡max⁡r∈R(q(D,r)+2 Δqϵ⋅ξr),ξr∼Gumbel⁡(0,1)r^* = \arg\max_{r \in \mathcal{R}} \left( q(D, r) + \frac{2\,\Delta q}{\epsilon} \cdot \xi_r \right), \quad \xi_r \sim \operatorname{Gumbel}(0, 1)
报告机制像是给评分刮一阵“随机大风”,风越大(ε 越小),高分优势越容易被噪声掩盖,结果越随机。
  1. argmax 操作遍历所有候选,取出加噪后分数最大的那一个作为输出。
    arg⁡max⁡r∈R\arg\max_{r \in \mathcal{R}}
  2. 原始评分候选 r 在数据集 D 上的真实质量,是公平竞争的基础。
    q(D,r)q(D, r)
  3. Gumbel 噪声一种偶发大值的随机变量,模拟“大风”对评分的扰动。
    ξr∼Gumbel⁡(0,1)\xi_r \sim \operatorname{Gumbel}(0, 1)
  4. 噪声尺度2Δq/ε 控制风的强度;隐私预算越小,风越大,结果越随机。
    2 Δqϵ\frac{2\,\Delta q}{\epsilon}

AI 应用场景

推荐系统的隐私保护召回

阶段:数据治理与模型部署阶段

解决的问题:传统推荐直接输出点击率最高的 Top-K 商品,相当于把用户的浏览偏好明文公布;用指数机制按点击热度评分做概率化采样,既保留推荐质量,又让单条用户行为无法被精准反推。

具体案例:某电商平台在“猜你喜欢”模块,对百万级候选商品计算点击率评分,取隐私预算 ε=1.0,用指数机制抽样生成 10 个推荐位,替代原来的固定 Top-10。

医疗统计中的离散结果发布

阶段:数据分析与结果发布阶段

解决的问题:医院想向卫生部门发布“本季度最常见流感症状 Top5”,但直接公布频次可能暴露少数患者的就诊记录;指数机制以症状出现频次为评分,输出症状类别本身,而不是精确数值。

具体案例:某疾控中心汇总发热门诊记录,用指数机制从咳嗽、发热、乏力等症状中抽样出 5 个代表症状,公开报表的同时保护每位患者隐私。

联邦学习中的超参选择

阶段:模型训练与调参阶段

解决的问题:AutoML 直接选验证集上准确率最高的超参组合,容易过拟合验证集并泄露验证样本信息;按验证集准确率评分,用指数机制从候选超参中采样,既保留较好性能,又让验证集个体数据难以被还原。

具体案例:某公司做跨机构联邦学习时,将三个候选超参组合在验证集上的准确率作为评分,用指数机制抽样选中一组参与下一轮训练。

Python 演示

python28 行
import numpy as np def exponential_mechanism(scores, eps, sensitivity, rng=None):    if rng is None:        rng = np.random.default_rng()    weights = np.exp(eps * np.asarray(scores, dtype=float) / (2.0 * sensitivity))    probs = weights / weights.sum()    idx = rng.choice(len(scores), p=probs)    return idx, probs def report_noisy_max(scores, eps, sensitivity, rng=None):    if rng is None:        rng = np.random.default_rng()    noise = rng.gumbel(scale=(2.0 * sensitivity) / eps, size=len(scores))    noisy = np.asarray(scores, dtype=float) + noise    return int(np.argmax(noisy)) if __name__ == "__main__":    candidates = ["烤串", "炸鸡", "凉粉", "糖水", "臭豆腐"]    scores = [9, 4, 7, 2, 5]      # 夜市人气评分    eps = 1.0    delta_q = 1                   # 每个人最多影响 1 分     idx, probs = exponential_mechanism(scores, eps, delta_q)    print("候选:", candidates)    print("概率:", np.round(probs, 3))    print("指数机制选中:", candidates[idx])    print("报告机制选中:", candidates[report_noisy_max(scores, eps, delta_q)])
目的:实现指数机制的完整流程(权重计算、归一化、轮盘赌采样),并附赠报告机制的 Gumbel 噪声版本,方便对比两种实现的输出差异。
  1. def exponential_mechanism(scores, eps, sensitivity, rng=None):抽签机的入口函数,接收评分、隐私预算和敏感度。
  2. weights = np.exp(eps * np.asarray(scores, dtype=float) / (2.0 * sensitivity))计算每款小吃的“签厚”,指数放大评分差异。
  3. probs = weights / weights.sum()把签厚归一化成概率,保证总和为 1。
  4. idx = rng.choice(len(scores), p=probs)按概率做轮盘赌采样,返回选中的候选下标。
  5. noise = rng.gumbel(scale=(2.0 * sensitivity) / eps, size=len(scores))为每个评分生成 Gumbel 噪声,风的大小由 2Δq/ε 控制。
  6. noisy = np.asarray(scores, dtype=float) + noise给原始评分加上噪声,相当于吹风。
  7. idx, probs = exponential_mechanism(scores, eps, delta_q)实际调用指数机制,得到选中项和每个候选的中签概率。

常见误区

误区敏感度不就是“平均每个人影响多少分”吗?统计时常说一人一票、每票一分,所以敏感度取均值就够了。

正解敏感度是最坏情形下相邻数据集评分的最大绝对差,不是平均。比如某个顾客一次能投 5 票,虽然大多数人只投 1 票,Δq 仍按 5 算。若按平均数低估敏感度,抽签机的签会做得过厚,噪声不足,隐私保证直接失效。

为何常见:日常统计习惯用平均值代替极端值,直觉上觉得“大多数人影响很小”就够了,忽视了隐私攻击恰恰爱走最坏路径。

误区指数机制是不是给数值加噪声再四舍五入?感觉两者差不多。

正解拉普拉斯机制直接对数值查询结果加连续噪声,输出仍是数值;指数机制则直接定义在整个候选空间上的概率采样,候选可以是类别、字符串、结构体。它不是“加噪声后取整”,而是按权重分布直接抽选一个离散结果。

为何常见:很多教程先讲拉普拉斯机制,读者容易把一切差分隐私机制都理解为“数值加噪声”,忽视了指数机制面向离散选择的本质。

误区ε 是隐私参数,数值越大说明机器越努力,保护越强。

正解ε 控制的是隐私损失上限,ε 越大,相邻数据集输出概率比的上界 e^ε 越大,攻击者越容易推断某条记录是否在数据集中。ε=0 时输出与数据完全无关,ε 越大输出越接近真实结果,隐私越弱。实际系统常在 0.1 到 10 之间取值权衡。

为何常见:“越大越好”的直觉在隐私场景中不成立,人们容易把参数大小与保护强度画等号。

误区公式里有 e 的指数,肯定只能处理连续数值吧?

正解公式里的指数只是计算权重的工具,评分函数可以是任何可计算的效用分数,输出可以是类别标签、答案选项、推荐商品甚至结构化决策。这种“输出空间不要求数值化”的能力,正是指数机制区别于拉普拉斯机制的核心优势。

为何常见:数学公式中大量出现数字和指数函数,容易让人误以为整个机制被限制在数值世界里。

误区做权重计算时分母就是个常数,省略掉也能近似估计概率。

正解归一化分母 \sum_{r'} \exp(εq(D,r')/(2Δq)) 本身依赖数据集 D,换到邻居数据集 D′ 时分母会变化。隐私证明正是靠“分母之比不超过 e^{ε/2}”这一环才成立。跳过分母,既破坏了概率归一化,也会让隐私保证的推导失去根基。

为何常见:在工程调试中,人们习惯只看分子大小来比较候选,觉得分母不改变排序,从而低估了它在隐私证明中的作用。

面试题

Q1. 指数机制最擅长处理哪种类型的输出?

单选题 · easy

  • A.连续数值型查询结果
  • B.离散类别型选择结果← 正确答案
  • C.高维向量嵌入结果
  • D.时间序列预测结果

答案:B。指数机制直接对候选空间做概率采样,非常适合离散类别型选择,如投票获胜者、推荐商品等。连续数值查询一般交给拉普拉斯机制;高维向量和时间序列都不是指数机制的主场。

Q2. 隐私预算 ε 在抽签机比喻中的作用是?

单选题 · easy

  • A.控制随机抽签的偏心程度← 正确答案
  • B.控制数据集的采样规模
  • C.控制评分函数的计算次数
  • D.控制输出结果的字节长度

答案:A。ε 像偏心旋钮,ε 越大,高分候选的中签概率优势越明显;ε 越小,签厚越均匀,输出越随机。它不控制采样规模、计算次数或字节长度。

Q3. 全局敏感度 Δq 的准确定义是?

单选题 · mid

  • A.相邻数据集上评分差的最大绝对值← 正确答案
  • B.数据集中所有评分的平均值
  • C.最优候选与其他候选的评分差
  • D.评分函数随迭代次数的变化量

答案:A。Δq 遍历所有候选和所有相邻数据集对,取评分的最大绝对差,描述“一个人最多能撬动多少分”。平均值、与最优候选的差、迭代变化量都不是敏感度的定义。

Q4. 关于指数机制,下列说法正确的有?

多选题 · mid

  • A.输出空间无需是数值型← 正确答案
  • B.高评分候选被选中的概率更高← 正确答案
  • C.它直接对数值加拉普拉斯噪声
  • D.归一化分母随数据集变化← 正确答案

答案:ABD。指数机制可以输出任意类型候选,按评分构造指数权重并采样,因此 B 正确;它并不加拉普拉斯噪声,C 错误;分母依赖数据集 D 的评分分布,会随相邻数据集变化,D 正确。

Q5. 指数机制公式中系数 2Δq 的“2”主要作用是什么?

单选题 · hard

  • A.确保隐私保证是 ε 而不是 2ε← 正确答案
  • B.提升评分函数的计算精度
  • C.让所有候选权重总和为 1
  • D.避免指数运算发生数值溢出

答案:A。指数机制的隐私证明中,分子指数项和归一化分母各自最多波动 e^{ε/2},两者相乘恰好为 e^ε。如果去掉这个“2”,总隐私损失会达到 2ε,破坏 ε-差分隐私的承诺。

Q6. Report Noisy Max(报告机制)的核心做法是?

单选题 · mid

  • A.给每个评分加 Gumbel 噪声后取最大值← 正确答案
  • B.给每个评分加拉普拉斯噪声后取平均值
  • C.随机抽取一个评分然后直接输出
  • D.将所有评分取对数后输出最大值

答案:A。报告机制对每个候选评分加 Gumbel 噪声,再取加噪后得分最高的候选。它与指数机制隐私等价,但只需一次最大值扫描,工程上比完整采样更快。

Q7. 关于指数机制与拉普拉斯机制的比较,正确的是?

多选题 · hard

  • A.两者都满足 ε-差分隐私← 正确答案
  • B.拉普拉斯机制适合连续数值输出← 正确答案
  • C.指数机制适合离散选择输出← 正确答案
  • D.指数机制是拉普拉斯机制的取整版

答案:ABC。两种机制都是 ε-DP 家族成员;拉普拉斯机制服务于数值查询,指数机制服务于离散选择。指数机制不是“加噪声后取整”,而是直接在候选空间上做加权概率采样,因此 D 错误。

Q8. 候选数量巨大时,防止 exp 溢出常用的技巧是?

单选题 · easy

  • A.所有指数项同时减去最大指数项← 正确答案
  • B.把所有权重统一改成负数
  • C.直接省略最小的几个权重
  • D.用随机舍入替代指数计算

答案:A。所有指数项同时减去最大值,比值不变,数值范围却回到安全区,这就是 log-sum-exp 技巧。改成负数、省略小权重或随机舍入都会破坏概率的准确性。

Q9. 下列哪些场景适合使用指数机制?

多选题 · mid

  • A.隐私投票聚合输出获胜者← 正确答案
  • B.推荐系统中保护偏好的抽样← 正确答案
  • C.医疗统计中保护记录的离散输出← 正确答案
  • D.从原始数据中删除敏感字段

答案:ABC。投票获胜者、推荐商品、医疗症状都属于离散选择输出,适合指数机制。删除敏感字段属于数据脱敏的预处理操作,不是指数机制的功能。

Q10. 设 ε=1,甲候选的评分比乙候选高 2Δq,甲被抽中的概率约为乙的多少倍?

单选题 · hard

  • A.约等于 e 倍(e≈2.718)← 正确答案
  • B.约等于 e 的平方倍
  • C.大致是两倍的 e 倍
  • D.概率完全相等恒为一倍

答案:A。两个候选的权重比为 exp(ε(q甲-q乙)/(2Δq)) = exp(1×2Δq/(2Δq)) = e ≈ 2.718。当候选只有两个时,权重比就是概率比,因此甲被抽中的概率约为乙的 e 倍。