想象你把所有隐私数据存进一家“隐私银行”:你的病历、购物记录、运动轨迹都锁在保险柜里。银行对每一位来访的分析师承诺——您可以查询统计结果,但绝无法准确认出任何一位储户。可承诺凭什么可信?靠合同上两个数字:ε 和 δ。ε 像你每个月能花的零花钱,是“允许泄露多少信息”的额度,每笔查询都从里面扣;δ 像银行保险柜本身的瑕疵概率,指系统级事故(雷击、停电、内部泄漏)造成承诺彻底失效的极小可能。本文就用这家“隐私银行”的视角,带你搞懂 ε/δ 是什么、怎么算、怎么花、怎么在真实训练中落地。

岗位关联

职业价值:读懂 ε/δ,你才能设计出既满足合规要求、又不牺牲模型效果的隐私保护方案——这是隐私计算时代算法工程师和数据科学家的必备基本功。

目录
  1. 可视化演示
  2. 隐私预算基础概念
  3. 敏感度分析
  4. 噪声机制
  5. 组合性质
  6. 预算分配策略
  7. 工程实践应用
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示差分隐私中ε和δ参数如何控制隐私保护强度、隐私预算的组合定理,以及多阶段训练中的预算分配策略。

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

'+captions.epsilon+'

隐私预算基础概念

你第一次走进“隐私银行”开户时,柜员递来一份《保密承诺书》。上面写着:无论谁来查询,银行保证他无法在输出结果中准确认出任何一个储户。可这句话太空了——到底“无法认出”到什么程度?合同上真正有约束力的,是两个冷冰冰的数字:ε 和 δ。ε 是“泄密额度”,像你每个月给孩子的零花钱,有上限;δ 是“保险瑕疵”,指保险柜系统本身有极小概率发生灾难性故障,让上面的承诺一夜作废。

这两个数字共同出现在差分隐私的正式定义里。设想一对“双胞胎数据集” D₁ 和 D₂:它们只差一条记录——比如 1000 份病历里,只有张先生的记录不同。银行用某个随机算法 $\mathcal{M}$ 回答查询。定义要求:对任意可能的输出集合 $S$,算法在 D₁ 上输出落在 $S$ 里的概率,至多是 D₂ 上的 $e^{\varepsilon}$ 倍,再加上一个微小的 $\delta$。

回到开户那一刻:柜员把《保密承诺书》念给你听时,你真正该关注的,就是 ε 这位“额度管理员”和 δ 这位“保险精算师”。之后每一次查询,都像是在这份合同上盖章扣款,直到额度耗尽。

Pr⁡[M(D1)∈S]≤eε×Pr⁡[M(D2)∈S]+δ\Pr[\mathcal{M}(D_1) \in S] \le e^{\varepsilon} \times \Pr[\mathcal{M}(D_2) \in S] + \delta
这个不等式把“隐私”翻译成一句话:换掉一个人的数据,查询结果的概率分布几乎不变;变化的程度被 $e^{\varepsilon}$ 封顶,超出部分被 $\delta$ 兜底。
  1. 概率表达式左边是算法 $\mathcal{M}$ 在数据集 $D_1$ 上输出落在集合 $S$ 的概率,$S$ 可以理解为“分析师观察到的任意答案区间”。
    Pr⁡[M(D1)∈S]\Pr[\mathcal{M}(D_1) \in S]
  2. e 的 ε 次方倍右边允许 $D_2$ 的输出概率最多放大 $e^{\varepsilon}$ 倍。ε 越小,放大倍数越接近 1,两条概率曲线越难区分,隐私保护越强。
    eεe^{\varepsilon}
  3. 乘号连接整个乘法项表示“正常情况下输出分布至多有这么点偏差”。
    ×\times
  4. 加 δ 兜底最后加上 δ,相当于给承诺买个免责保险:就算上面的倍数关系被极端事件打破,这种坏情况发生的总概率也不会超过 δ。
    + δ+ \ \delta

敏感度分析

银行给每笔查询定“手续费”之前,得先回答一个问题:这笔查询有多“挑人”?同样是统计,“全体患者的平均血压”谁也对不上号,便宜;“张先生上个月住院了吗”简直是指名道姓,贵。贵不贵,取决于如果把数据集里一个人的记录换掉,查询结果最多会变多少——这个变化的极限,就是敏感度,记作 $\Delta f$。

先明确“换掉一个人”的数学说法。两个数据集 $D_1$ 和 $D_2$ 如果互为相邻数据集(只相差一条记录),那么对任意查询函数 $f$,敏感度就是它在所有相邻数据集对上输出差异的最大值:

现在你再听柜员报价就有数了:平均类查询的敏感度是 $1/n$(n 为样本数),人越多越便宜;计数查询敏感度恒为 1,永远一个价。敏感度越高,手续费越贵,后面要花的 ε 越多——所以聪明的银行会劝你把“指名道姓”的查询改成“群体平均”,把贵的问题翻译成便宜的问题。

Δf=max⁡D1∼D2∥f(D1)−f(D2)∥1\Delta f = \max_{D_1 \sim D_2} \lVert f(D_1) - f(D_2) \rVert_1
敏感度是查询函数自身的“涨价因子”:它不依赖具体数据长什么样,只依赖“改一条记录会造成多大扰动”。它决定了后面加噪声要用多厚的马赛克。
  1. 取最大$\max$ 表示遍历所有相邻数据集对,找出最坏情况下输出差多少——银行按最坏的客人定价,不按普通客人定价。
    max⁡D1∼D2\max_{D_1 \sim D_2}
  2. 相邻数据集对$D_1 \sim D_2$ 表示二者互为相邻数据集,即仅相差一条记录,这是差分的“差分”二字的来历。
    D1∼D2D_1 \sim D_2
  3. 向量差的 1 范数$\lVert \cdot \rVert_1$ 把多维输出的各分量差的绝对值求和,L1 敏感度常用于计数、求和类查询;L2 敏感度则用平方和开根,常用于高斯机制。
    ∥f(D1)−f(D2)∥1\lVert f(D_1) - f(D_2) \rVert_1

噪声机制

柜员收了手续费,就得干事。但银行从不说真话——它总在真答案上“念得含糊一点”,这就是噪声机制:把答案悄悄扰动一下,让你知道个大概,却永远抠不出某个具体的人。马赛克糊多厚?由敏感度 Δf 和这笔查询分到的 ε 共同决定。

最经典的是拉普拉斯机制:在真答案上加一个服从拉普拉斯分布的随机数,噪声尺度正好是 $\Delta f / \varepsilon$。它满足纯 (ε, 0)-差分隐私,适合计数、求和等 L1 敏感度场景:

拉普拉斯是“纯马赛克”,但它有个兄弟叫高斯机制,噪声服从正态分布,尺度 $\sigma = \Delta f \cdot \sqrt{2\ln(1.25/\delta)} / \varepsilon$。高斯分布算不出 $\delta = 0$ 的严格承诺,所以它必须搭配一个正数 δ 使用——这正是 (ε, δ)-差分隐私存在的意义。此外还有指数机制,用于在离散选项里“带偏好地随机挑一个”,比如挑选推荐商品时既照顾效用又不泄露个人口味。三种机制共用同一本账:花多少 ε,就糊多厚的马赛克。

M(D)=f(D)+Lap(Δfε)\mathcal{M}(D) = f(D) + \mathrm{Lap}\left(\frac{\Delta f}{\varepsilon}\right)
该公式说明:敏感度越高(查询越“挑人”)、或 ε 分得越少(额度越紧),加的噪声就越大,答案就越模糊。
  1. 真答案$f(D)$ 是数据集上的真实统计结果,比如“平均住院天数 = 5.3 天”,这是扰动前的基础值。
    f(D)f(D)
  2. 拉普拉斯噪声$\mathrm{Lap}(b)$ 表示从以 0 为中心、尺度为 $b$ 的拉普拉斯分布中抽一个随机数——它两端拖尾较厚,偶尔给出离谱偏移,正好掩盖单个人的影响。
    Lap(Δfε)\mathrm{Lap}\left(\frac{\Delta f}{\varepsilon}\right)
  3. 尺度公式$\Delta f / \varepsilon$ 表明噪声尺度与敏感度成正比、与 ε 成反比:敏感度翻倍,马赛克翻倍;ε 减半,马赛克也翻倍。
    Δfε\frac{\Delta f}{\varepsilon}

组合性质

一个季度里,分析师不会只来一次。他可能周一查平均血压、周二查患病比例、周三查通勤距离……银行得回答一个扎心的问题:这么多笔查询加在一起,隐私承诺还成立吗?答案是“成立,但额度要记账”。串行组合定理说:对同一份数据依次做 k 次互不影响的查询,总预算直接相加,每一笔都在同一张额度卡上扣款:

不过银行也有个“免单”条款:并行组合定理。如果把数据拆成互不重叠的几组,分别回答关于各组的查询,那么总隐私消耗只由单组里最贵的一次决定,而不是各组相加——因为任何人只可能“暴露”在恰好一组数据里。这就好比把钱分装在几个独立口袋里,每个口袋各花各的,互不牵连。实际工程里,训练集的批次切分、联邦学习的分片用户,都在悄悄利用并行组合省预算。

εtotal=∑i=1kεi\varepsilon_{\text{total}} = \sum_{i=1}^{k} \varepsilon_i
串行组合是“同一口袋花钱”:查一次扣一次,扣完卡就废了。所以做多次查询必须把总预算切成 k 份,每份只够一次用。
  1. 总预算$\varepsilon_{\text{total}}$ 是 k 次查询累计消耗的隐私预算总额,训练模型时它由隐私会计逐轮累加而来。
    εtotal\varepsilon_{\text{total}}
  2. 求和符号$\sum_{i=1}^{k}$ 表示从第 1 次到第 k 次,把每次的 ε_i 全部加起来——隐私像流水一样只增不减。
    ∑i=1kεi\sum_{i=1}^{k} \varepsilon_i
  3. 等号含义串行组合的结论是“和”,不是“最大值”也不是“平均值”,所以同样的总预算下,查询次数越少,每笔能分的额度越宽裕。
    ==

预算分配策略

既然总预算有限,怎么花就成了理财问题。最朴素也最稳的策略是均匀分配:总共 ε_total,k 笔查询,每笔分到:

均匀分配之外,还有自适应分配:训练早期模型还没学会,噪声大点无所谓;后期收敛阶段需要精细更新,就多分点额度、少加点噪声。这就像学期初省着花、考试周多买咖啡的理财法。但理财一定有代价:预算与效果的权衡是隐私保护的永恒主题——ε 给得越多,噪声越小、模型越准,但隐私承诺越弱;ε 压得越低,隐私越漂亮,模型可能直接“糊到没法用”。

实际调参时,业界有个经验区间可参考:常规统计查询常用 ε 在 0.1 到 1 之间;DP 模型训练常在 1 到 10 之间;若 ε 超过 10,隐私保护基本名存实亡,需要重新审视方案设计。δ 则一般设成小于 $1/N$(N 为样本数),比如 $10^{-5}$ 量级,确保“单个人被兜底暴露”的概率小于随机猜中他的概率。

εi=εtotalk\varepsilon_i = \frac{\varepsilon_{\text{total}}}{k}
均匀分配像把零花钱平均切成 k 份,每笔查询一份。它的好处是简单可控、绝不会中途透支;坏处是“平均主义”忽略了不同阶段的重要性。
  1. 单次份额$\varepsilon_i$ 表示第 i 笔查询偷偷摸摸能用的最大额度,所有份额加起来严格等于总额。
    εi\varepsilon_i
  2. 除法运算$\varepsilon_{\text{total}} / k$ 把总额除以查询次数,得到每笔的平均额度——这是串行组合定理直接推出来的必要约束。
    εtotalk\frac{\varepsilon_{\text{total}}}{k}

工程实践应用

把上面的理论搬进模型训练,主角自然登场:DP-SGD(差分隐私随机梯度下降)。传统训练里,模型每看一批数据就更新一次参数,几十万次更新里任何一次都可能泄露训练样本;DP-SGD 给这个过程装了一条“自动取款 + 马赛克流水线”:先给每个样本的梯度戴上面具(裁剪),再往聚合梯度里统一倒噪声(加噪),最后在隐私账本上记一笔(会计)。

第 t 轮迭代的更新梯度约等于:

每完成一轮,隐私会计就把本轮消耗的 ε 累加进总账,用强化组合(如 Rényi DP)算出比朴素相加更紧的累计界,让训练几千轮后总额度仍在可接受范围。于是,隐私银行的全套业务在训练闭环里跑通了:裁剪是控制敏感度,加噪是掩盖个体,会计是记账限额——三者缺一不可。

g~t=1B(∑i∈Btclip(gi,C)+N(0,σ2C2I))\tilde{g}_t = \frac{1}{B} \left( \sum_{i \in \mathcal{B}_t} \mathrm{clip}(g_i, C) + \mathcal{N}(0, \sigma^2 C^2 \mathbf{I}) \right)
公式左边是“加过马赛克的梯度”,右边依次做了三件事:逐个样本裁剪梯度、求和、注入高斯噪声并除以批次大小 B——噪声尺度由 ε/δ 按高斯机制反推得到。
  1. 逐样本裁剪$\mathrm{clip}(g_i, C)$ 把每个样本梯度的范数限制在半径 C 的球内,让单个人的梯度影响力被“铐住”,从而把敏感度压到 C 级别。
    clip(gi,C)\mathrm{clip}(g_i, C)
  2. 批量求和$\sum_{i \in \mathcal{B}_t}$ 累加当前批次里所有裁剪后的梯度,只有“大家一起的贡献”被保留,“你单独长什么样”被抹掉。
    ∑i∈Bt\sum_{i \in \mathcal{B}_t}
  3. 高斯噪声项$\mathcal{N}(0, \sigma^2 C^2 \mathbf{I})$ 是均值为零、协方差 $\sigma^2 C^2$ 的高斯噪声,σ 由高斯机制公式从 ε、δ 反解出来——δ 越小,噪声越大。
    N(0,σ2C2I)\mathcal{N}(0, \sigma^2 C^2 \mathbf{I})
  4. 平均与缩放前面的 $\frac{1}{B}$ 把加噪后的梯度除以批次大小,保证更新量级与普通 SGD 可比,模型照样能收敛。
    1B\frac{1}{B}

AI 应用场景

医疗数据统计查询平台

阶段:数据可信层 / 隐私保护查询

解决的问题:医院想对外开放统计数据(如某种疾病的区域发病率),帮助科研机构做流行病学研究;但直接给原始数据等于把病人的隐私拱手奉上。传统做法是“脱敏后发布”,可攻击者用背景知识一关联就破功。差分隐私方案给每个统计口径加一层拉普拉斯噪声,并把 ε 预算切成多份,按查询次数逐笔扣除,超限立即停止服务。

具体案例:某三甲医院上线“统计查询开放平台”,研究者可查“近三年糖尿病患者占比”等指标,平台按每次查询消耗 0.1 ε 记账,日总预算 1.0 ε。查询 10 次后平台自动拒绝新请求,管理员重置预算后才恢复。医院既拿出了数据价值,又守住了“无法反推任何一位病人”的承诺。

大模型 DP-SGD 训练中的隐私预算监测

阶段:模型训练 / 差分隐私训练

解决的问题:用用户对话数据微调大语言模型时,模型可能“背下”个别用户的敏感句子。DP-SGD 在每轮参数更新前裁剪梯度并加高斯噪声,同时用隐私会计动态累加 ε;训练到预算上限就自动提前终止,防止模型在过多轮次后把个体记忆“背熟”。

具体案例:某公司用 100 万条客服对话微调对话模型,设总预算 ε = 3、δ = 1e-6,每轮按 subsampling 后的实际贡献记账,训练 12 轮后会计显示已用 2.71 ε,接近上限。团队据此决定只训 10 轮微调版上线,并对外公布模型满足 (3, 1e-6)-差分隐私,审计通过。

Python 演示

python72 行
import mathimport random  def lap_sample(scale):    """生成服从 Laplace(0, scale) 的随机噪声"""    v = 1.0 - random.random()    u = random.random()    return -scale * math.copysign(1.0, u - 0.5) * math.log(v)  def gauss_sample(sigma):    """生成服从 N(0, sigma^2) 的随机噪声"""    return random.gauss(0.0, sigma)  class PrivacyBudget:    """隐私账本:记录已消耗的 eps,超出总预算则拒绝查询"""     def __init__(self, total_eps, delta=0.01):        self.total_eps = total_eps        self.delta = delta        self.spent_eps = 0.0        self.query_count = 0     def spend(self, eps, query_name):        if self.spent_eps + eps > self.total_eps:            raise RuntimeError(                "预算不足:已用 %.3f,想用 %.3f,总额 %.3f"                % (self.spent_eps, eps, self.total_eps)            )        self.spent_eps += eps        self.query_count += 1        return self.spent_eps  def laplace_query(budget, data, sensitivity, eps, query_name):    """用拉普拉斯机制回答一次统计并扣除预算"""    budget.spend(eps, query_name)    true_value = sum(data) / len(data)    return true_value + lap_sample(sensitivity / eps)  def gauss_query(budget, data, sensitivity, eps, query_name):    """用高斯机制回答一次统计并扣除预算"""    budget.spend(eps, query_name)    true_value = sum(data) / len(data)    sigma = sensitivity * math.sqrt(2.0 * math.log(1.25 / budget.delta)) / eps    return true_value + gauss_sample(sigma)  def main():    random.seed(42)    data = [1 if random.random() < 0.3 else 0 for _ in range(1000)]    budget = PrivacyBudget(total_eps=1.0, delta=1e-5)    eps_each = 0.2    queries = ["平均收入", "患病比例", "居住面积", "通勤距离", "运动时长", "睡眠小时"]    for i, name in enumerate(queries):        try:            answer = laplace_query(budget, data, 0.001, eps_each, name)        except RuntimeError as exc:            print("第 %d 笔查询 %s 被拒绝:%s" % (i + 1, name, exc))            break        print(            "第 %d 笔查询 %s:答案为 %.4f,已用预算 %.3f / %.3f"            % (i + 1, name, answer, budget.spent_eps, budget.total_eps)        )    return 0  if __name__ == "__main__":    main()
目的:模拟“隐私银行”的完整业务——用 1000 条 0/1 数据代表敏感个体,依次发起 6 笔统计查询,每笔按拉普拉斯机制加噪并扣预算,第 6 笔因超出总预算被自动拒绝。
  1. class PrivacyBudget:定义隐私账本类,spent_eps 记录已消耗额度,总余额由 total_eps 硬约束。
  2. budget.spend(eps, query_name)每次查询前先检查余额,够则记账,不够则抛异常拒绝,体现“预算只减不增”。
  3. lap_sample(sensitivity / eps)生成尺度为 Δf/ε 的拉普拉斯噪声,敏感度越高或单笔 ε 越小,马赛克越厚。
  4. def gauss_query(...)高斯机制示例,σ 由 ε、δ 联合反推:δ 设置得越小,ln(1.25/δ) 越大,噪声越大。
  5. data = [1 if random.random() < 0.3 else 0 ...]模拟 1000 位“储户”的敏感属性,mean 查询的敏感度正好是 1/1000。
  6. except RuntimeError as exc:捕获预算不足异常,打印拒绝原因,模拟真实平台上“超限即熔断”的工程行为。

常见误区

误区反正 δ 也是隐私参数,那我把它设成 0 或者 $10^{-30}$,隐私保护不就无敌了吗?ε 再小我都不怕。

正解δ 不是免费的“加强剂”。高斯机制的噪声尺度正比于 $\sqrt{2\ln(1.25/\delta)}$,δ 每降一个数量级,噪声就要明显增大;δ 设为 0 时高斯机制直接失去有限 ε 的保证。现实中 δ 一般取 $\le 1/N$(N 为样本数),追求更小的 δ 只会让模型精度崩溃,属于“花钱买了个用不上的极致安全”。

为何常见:人们容易把 ε 和 δ 都理解成“越小越好”的旋钮,却没意识到 δ 是高斯机制的入门票——它用一点点失败概率换来了实用噪声,二者是联动关系而非独立旋钮。

误区我给每次查询都设 ε = 0.1,那总共查了 100 次,隐私保护还是 0.1 吧?反正每次都这么小。

正解串行组合定理说了,同一份数据上多次查询的 ε 会相加,100 次 × 0.1 = 10.0,隐私承诺早已名存实亡。正确的做法是用隐私会计把每次消耗累加起来,总预算超限就停止查询。很多人栽跟头,就是把“单次 ε”和“累计 ε”混为一谈。

为何常见:因为 ε 的定义在形式上只约束“一次算法调用”,初学者默认它天然每次独立,忽略了组合定理这条“记账铁律”。

误区那我干脆设 ε = 0,一点信息都不泄露,总该完美了吧?模型或者查询结果应该照样能用。

正解ε = 0 意味着输出分布完全与数据无关,等价于抛弃数据随机瞎猜——统计答案彻底失真,模型训练也学不到任何东西。差分隐私的目标从来不是“零泄露”,而是“把泄露控制在可接受的 ε 内”,在隐私与效用之间找平衡。设置 ε = 0 不是安全,是摆烂。

为何常见:“越小越安全”的直觉没错,但忽略了隐私保护的本质是“有限度地提供价值”,而不是“完全拒绝服务”。

误区δ 就是给隐私开的后门,是拉普拉斯机制不争气才需要的东西,实际应该永远用 δ = 0 的纯差分隐私。

正解δ > 0 不是作弊,而是工程必然。纯 (ε, 0)-差分隐私只有拉普拉斯这类重尾机制能实现,但深度学习中更自然的是高斯噪声,它在小批量反复采样下统计效率高得多。高斯机制以 δ 为代价换取实用噪声,只要 δ 严格控制在上限之内,就是学术界和工业界都认可的严格保证。

为何常见:教材通常先讲纯 DP 再讲近似 DP,给人“纯的才正宗”的错觉;实际上现代大规模 DP 训练几乎全部依赖 (ε, δ) 框架和 RDP 会计。

误区训练跑着跑着发现 ε 快超了,那我把后面几轮的噪声调大一点,把预算“省回来”不就行了?

正解已经消耗的预算无法通过事后加噪回退——隐私损失是单调累积的,过去每轮已真实地见过数据,账本上记下的 ε 不会因为你后面变谨慎而抹掉。正确做法是在训练前就把总预算、轮数和噪声超参一并规划好,或采用自适应提前终止:预算快耗尽时直接停训,而不是临时改噪声尺度。

为何常见:因为“加噪”看起来像是实时调节的保护旋钮,让人误以为它和预算记录之间可以互相抵消;实际上它是“事前设计”,不是“事后补救”。

面试题

Q1. 在(ε,δ)-差分隐私中,ε 的主要作用是什么?

单选题 · easy

  • A.控制输出噪声的分布形状
  • B.限定查询的信息泄露额度← 正确答案
  • C.决定数据集的采样数量
  • D.指定模型训练的总轮数

答案:B。ε 是隐私预算本身,像零花钱总额,限定单次或累计查询最多泄露多少信息。A 描述的是噪声机制的结果(ε 影响噪声尺度从而影响分布形状),并不反映 ε 的本职角色;C、D 与 ε 无直接关系。

Q2. δ 在(ε,δ)-差分隐私中的正确含义是?

单选题 · easy

  • A.攻击者掌握的背景知识量
  • B.数据集中的样本总数
  • C.ε 隐私保证失效的概率上界← 正确答案
  • D.每次查询消耗的预算量

答案:C。δ 是“保险瑕疵”,指差分隐私不等式整体失效的概率上限,对应保险柜系统故障的极小可能。A 是攻击模型里的背景知识假设,B 是样本量 N,D 是单次 ε_i,三者都与 δ 定义无关。

Q3. 两个数据集互为“相邻数据集”是指?

单选题 · mid

  • A.二者存储在同一台服务器上
  • B.二者拥有完全相同的记录
  • C.二者仅相差一条记录← 正确答案
  • D.二者的属性列数完全一致

答案:C。相邻数据集定义为只差一条记录,这是“差分”的由来,也是敏感度计算的前提。A、D 只关乎存储和结构,与个体隐私无关;B 是相等数据集,不会产生任何差分。

Q4. 拉普拉斯机制的噪声尺度为 Δf/ε,这说明?

单选题 · mid

  • A.敏感度越高噪声越大,预算越多噪声越小← 正确答案
  • B.敏感度越高噪声越小,预算越多噪声越大
  • C.噪声与敏感度和预算均没有关系
  • D.只要增大 δ 噪声就必然降至零

答案:A。噪声尺度正比于敏感度 Δf、反比于 ε。查询越“挑人”(Δf 大)或额度越紧(ε 小),马赛克越厚。B 把两个方向都说反了;C 无视公式;拉普拉斯是纯 DP 机制,D 中 δ 不参与其噪声定价。

Q5. 使用高斯机制时,若固定 ε 而把 δ 调小(如从 1e-3 调到 1e-6),会?

单选题 · mid

  • A.噪声标准差变小,结果更精确
  • B.噪声标准差变大,结果更模糊← 正确答案
  • C.噪声标准差不变,仅影响计算速度
  • D.机制自动改用拉普拉斯噪声

答案:B。高斯机制 σ 正比于 $\sqrt{2\ln(1.25/\delta)}$,δ 越小 ln 项越大,噪声越大。你坚持“失败概率更低”,就得付出更糊的答案。A 方向相反;C 与速度无关;D 无中生有。

Q6. 对同一份数据连续执行 k 次独立查询,串行组合公式是?

单选题 · mid

  • A.ε_total 取各 ε_i 中的最大值
  • B.ε_total 为各 ε_i 之乘积
  • C.ε_total 为各 ε_i 之和← 正确答案
  • D.ε_total 取各 ε_i 的平均值

答案:C。串行组合是同一个口袋花钱,隐私损失单调相加,$\varepsilon_{\text{total}} = \sum \varepsilon_i$。取最大值会严重低估风险,乘积和平均值更是没有对应定理支撑。

Q7. 全局敏感度 Δf 的数学定义是?

单选题 · hard

  • A.所有查询结果的最大值
  • B.相邻数据集结果的最大距离← 正确答案
  • C.数据集中敏感属性数量
  • D.噪声分布的标准差大小

答案:B。Δf 是遍历所有相邻数据集对,查询函数输出差的范数最大值。它是查询函数自身的属性,与具体数据无关。A 没提“相邻数据集”这一关键前提;C 混淆了“敏感属性”与“敏感度”;D 是噪声尺度,是 Δf 与 ε 组合后的产物。

Q8. 下列哪些措施可以降低隐私预算消耗?

多选题 · mid

  • A.拆分数据集分别查询以并行组合← 正确答案
  • B.对梯度裁剪以限制敏感度大小← 正确答案
  • C.减少总查询次数只留关键统计← 正确答案
  • D.将 ε 设为零并以 δ 代替保护

答案:ABC。并行组合让不同分组的查询互不叠加预算;裁剪限制敏感度直接压低噪声成本;减少查询次数则因串行组合的加法性而节省总额。D 中 ε=0 使查询结果失去可用性,δ 无法替代 ε 完成信息度量。

Q9. 关于(ε,δ)-差分隐私,正确的说法包括?

多选题 · hard

  • A.δ 必须大于 0 时高斯机制才能实现← 正确答案
  • B.δ 可以任意取值以换取更小噪声
  • C.隐私会计用于追踪训练累计预算← 正确答案
  • D.ε 越小说明隐私保护强度越高← 正确答案

答案:ACD。高斯机制只能提供 (ε,δ)-DP 且要求 δ>0,这是它与拉普拉斯机制的关键区别;隐私会计(如 RDP)正是为累计预算而设计;ε 越小输出分布越难区分,保护越强。B 错在 δ 越小噪声越大而非越小,δ 还与样本数 N 有约束关系,不能任意取。

Q10. DP-SGD 的隐私保护流程包括?

多选题 · hard

  • A.对梯度按裁剪阈值 C 进行逐样本裁剪← 正确答案
  • B.聚合梯度后加入高斯噪声再更新参数← 正确答案
  • C.用隐私会计累计每次迭代的 ε 消耗← 正确答案
  • D.将整个模型参数直接替换为零向量

答案:ABC。DP-SGD 三段式:逐样本裁剪把敏感度压到 C,加高斯噪声掩盖个体贡献,隐私会计把每轮 ε 累加并严格控制总预算。D 是“重置模型”不是隐私保护手段,做了等于不训练。