深夜的社区食堂里,七位身怀绝技的厨师决定合编一本《共享菜谱》。可每人都攥着自己的独门配方——有人煲汤靠一味秘制高汤,有人做鱼靠一勺祖传辣酱。谁也不愿把看家本领全盘托出,可又都想从别人的经验里学点新招。主厨灵机一动:每位厨师提交“调味心得”时,都往里面撒一点点“随机调料”——让数字产生微小的、无规律的扰动。这样一来,汇总出的集体菜谱依然能做出可口的菜肴,但任何人(包括主厨自己)都无法从心得中反推出某位厨师的确切配方。这个“撒随机调料”的过程,在机器学习里叫作差分隐私;七位厨师远程协作、只交换菜谱心得而不交换原始食材,正是联邦学习的真实写照。 在联邦学习中,分散在各机构的训练数据好比各位厨师的“私房食材”,永远不出本地厨房。模型参数的更新,就是那份要被共享的“调味心得”。差分隐私为这份心得加上“随机扰动”的保护:你想要的隐私保护越强,就得多加扰动,但菜的味道(模型精度)也会因此受损。如何在隐私与可用性之间找到平衡,正是联邦学习差分隐私工程实践的核心课题。本文将从隐私预算、算法选型、噪声调度到可用性评估,带你一步步掌握这套“厨师协作”的完整流程。

岗位关联

掌握联邦学习差分隐私的工程落地方法,是 AI 安全从业者构建可信联邦系统、满足数据合规要求的关键竞争力,也是从“能跑通 Demo”走向“能上生产”的分水岭。

目录
  1. 可视化演示
  2. 隐私预算基础
  3. 两级隐私预算
  4. DP算法选型
  5. 噪声调度策略
  6. 可用性评估
  7. 超参调优技巧
  8. 工程实践要点
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

动态演示联邦学习差分隐私实践的核心机制,通过采集/分析/决策/反馈四种模式展示关键概念与交互流程。

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

联邦学习差分隐私实践:联邦学习 1. 联邦学习差分隐私的基本概 2. 客户端级与样本级隐私预算 核心机制可视化 联邦学习差分隐私实践整体架构与关键组件

隐私预算基础

社区厨师们围坐在长桌旁,讨论的第一件事不是菜谱内容,而是一份敏感的“保密契约”:我们最多能容忍外人猜出多少配方细节?如果一点泄露都不能接受,合作便无从谈起;如果完全不在乎,隐私保护就成了空谈。这个“可接受的最大泄露量”,在差分隐私的语言里,就是隐私预算 ε(epsilon)。

ε-差分隐私的数学定义非常优雅:一个随机算法 $\mathcal{M}$,作用在两个“只差一条记录”的相邻数据集 $D$ 和 $D'$ 上,产生相同输出的概率之比,被 $e^{\varepsilon}$ 牢牢锁住。ε 等于 0 时两个数据集完全不可区分;ε 越大,攻击者的区分能力越强,隐私泄露风险也越高。工程中最常用的实现是高斯机制——在真实计算结果上叠加服从高斯分布的随机噪声。噪声的标准差 σ 不是随手拍的,而是由全局敏感度 Δf 和目标预算 ε 共同决定的:Δf 衡量“删掉一条记录后输出最大变化多少”,σ 正比于 Δf,反比于 ε。

再看高斯机制的标准差公式,它把“隐私承诺”换算成了“具体要加多少噪声”:

这份“保密契约”一旦签下,整个训练过程都必须受其约束。菜谱可以共享,但外人能从共享内容中反推出的信息量,永远不会超过契约允许的上限。厨师们心里有了底,接下来就可以商量更细的分工了。

Pr⁡[M(D)∈S]≤eε⋅Pr⁡[M(D′)∈S]\Pr[\mathcal{M}(D) \in S] \leq e^{\varepsilon} \cdot \Pr[\mathcal{M}(D') \in S]
这个不等式是说:两个几乎一样的数据集,经过算法处理后输出落到同一范围内的概率差异,被 ε 牢牢锁住。ε 就是那把“隐私之锁”的钥匙长度。
  1. $\Delta f$查询函数 $f$ 的全局敏感度,即删除一条记录后输出变化的最大幅度,好比“一道菜最多能因为少了哪位客人的口味而改变多少”。
    Δf=max⁡D,D′∥f(D)−f(D′)∥2\Delta f = \max_{D,D'}\|f(D)-f(D')\|_2
  2. $\delta$允许的小概率“破功”事件,工程上常取 $10^{-5}$ 量级,表示“理论上存在但几乎不可能发生”的泄露概率。
    δ≈10−5\delta \approx 10^{-5}
  3. $\varepsilon$隐私预算,ε 越小,σ 越大,需要注入的噪声越强。
    ε\varepsilon

两级隐私预算

契约签完之后,厨师们又发现一个细节问题:要保护的究竟是“这一整桌菜代表哪位厨师”(整套菜单的风格),还是“某一道独一无二的私房菜”(单条记录的秘密)?这对应着两种截然不同的保护粒度,也决定了“随机调料”该撒得豪放还是细腻。

在联邦学习里,“用户”相当于一名厨师的全部数据,“样本”则相当于其中一道菜的记录。客户端级差分隐私承诺:攻击者无法判断某个客户端是否参与了训练——保护的粒度是一个用户的所有数据。样本级差分隐私承诺:攻击者无法判断某条具体样本是否出现在训练集中——保护的粒度是单条数据。两者的预算分配计算方式不同:假设总预算 $\varepsilon_{\text{total}}$ 需要支撑 $T$ 轮训练,最简单的做法是每轮均分;样本级方案还要额外乘上批次采样率 $q$(每批样本数占总样本数的比例),因为“每轮只接触部分样本”本身带来了一层天然保护。

如果保护的是“整桌菜”,噪声可以加得相对豪放;如果保护的是“每道菜”,噪声要细腻许多,代价也更高。厨师们必须想清楚:自己真正要护住的,究竟是一桌菜的底细,还是一道菜的独门秘方。

εclient=εtotalT,εsample=q⋅εtotalT\varepsilon_{\text{client}} = \frac{\varepsilon_{\text{total}}}{T}, \qquad \varepsilon_{\text{sample}} = q \cdot \frac{\varepsilon_{\text{total}}}{T}
客户端级和样本级是两把不同精度的“锁”:前者锁住整个柜子,后者锁住柜子里每一件珠宝。锁得越细,配钥匙(加噪声)的成本就越高。
  1. $\varepsilon_{\text{client}}$每轮分配给客户端级保护的预算,所有轮次均分总预算。
    εclient=εtotalT\varepsilon_{\text{client}} = \frac{\varepsilon_{\text{total}}}{T}
  2. $T$总训练轮次(通信轮数),轮次越多,每轮分到的预算越少。
    TT
  3. $q$批次采样率,等于每批样本数 $B$ 除以总样本数 $N$,即 $q = B/N$。
    q=BNq = \frac{B}{N}
  4. $\varepsilon_{\text{sample}}$样本级方案的每轮预算,因为每轮只采样一部分样本,保护成本随之降低。
    εsample=q⋅εclient\varepsilon_{\text{sample}} = q \cdot \varepsilon_{\text{client}}

DP算法选型

保护粒度定下来后,主厨面临新的选择:何时撒随机调料?是等所有厨师的心得汇总到自己手里后一次性撒,还是让每位厨师在记录心得的每一步都撒?这引出了联邦学习差分隐私的两大主流方案:DP-FedAvg 与 DP-SGD。

DP-FedAvg 把噪声注入放在服务器端——客户端各自正常训练,服务器聚合所有更新后再加噪声。它的通信开销小、实现简单,适合客户端数量不多、单客户端数据量大的场景。DP-SGD 则把噪声注入下沉到客户端——每个本地训练步骤的梯度都要经过裁剪和加噪,保护粒度更细(天然接近样本级),但计算和通信成本显著增加。DP-FedAvg 的更新公式清晰展示了“裁剪 → 聚合 → 加噪 → 更新”四步:

选型建议很直接:当客户端数量少(如 $K<100$)时,DP-FedAvg 的噪声成本更优;当业务要求逐样本保护、或者客户端本地数据量差异极大时,DP-SGD 的细粒度加噪更可靠。如果预算充裕,也可以像做实验一样同时跑两套基线,用数据说话。

wt+1=wt+η(1K∑k=1KclipC(Δwk)+N(0,σ2))w_{t+1} = w_t + \eta \left( \frac{1}{K} \sum_{k=1}^{K} \mathrm{clip}_C(\Delta w_k) + \mathcal{N}(0, \sigma^2) \right)
这个公式像一道“汇总菜谱”:把 K 位厨师的改进心得先各自控制幅度(裁剪),取平均,再撒一把随机调料,最后按学习率 η 拌进主厨的菜谱里。
  1. $\Delta w_k$第 $k$ 个客户端本地训练得到的模型更新,相当于“第 k 位厨师提交的心得”。
    Δwk=wk(t+1)−wt\Delta w_k = w_k^{(t+1)} - w_t
  2. $\mathrm{clip}_C(\cdot)$将更新裁剪到 $C$ 范数以内,控制单份心得对总菜谱的影响上限(即敏感度)。
    clipC(Δwk)=min⁡(1,C∥Δwk∥)⋅Δwk\mathrm{clip}_C(\Delta w_k) = \min\left(1, \frac{C}{\|\Delta w_k\|}\right) \cdot \Delta w_k
  3. $\frac{1}{K}\sum_{k=1}^{K}$服务器对所有客户端更新取平均,相当于主厨综合大家的意见。
    1K∑k=1K\frac{1}{K} \sum_{k=1}^{K}
  4. $\mathcal{N}(0, \sigma^2)$聚合后注入的高斯噪声,是差分隐私保护的核心动作。
    N(0,σ2)\mathcal{N}(0, \sigma^2)

噪声调度策略

厨师们在试菜时发现,“随机调料”不能从头到尾撒同样多。菜谱初稿还很粗糙,多撒点调料无伤大雅;等菜谱逐渐精细,就必须收着点放,否则整道菜全是调料味,反而尝不出真味道。这个“先多后少”的节奏,就是噪声调度。

噪声调度研究的是每轮噪声尺度 $\sigma_t$ 随训练轮次变化的策略。指数衰减是工程中最常见的做法:训练初期注入较大噪声,快速压制隐私泄露风险;后期逐渐减小噪声,保留模型收敛所需的精细信号。同时设定一个下限 $\sigma_{\min}$ 兜底,防止噪声衰减到零而导致隐私保护失效。调度公式如下:

策略设计上,衰减速率的选择是一场微妙的平衡:太快可能导致后期隐私保护不足,太慢则会让模型性能长期受噪声压制。经验做法是先固定实验轮数,用验证集监控精度曲线,找到“精度不再明显提升”的拐点,再反向调节 β 使噪声在拐点附近衰减到下限。

σt=max⁡(σmin⁡, σ0⋅e−βt)\sigma_t = \max\left(\sigma_{\min},\ \sigma_0 \cdot e^{-\beta t}\right)
噪声调度就像“先大火快炒锁住汁水,再小火慢炖入味”——早期猛火(大噪声)镇住信息泄露,后期文火(小噪声)让模型精雕细琢。
  1. $\sigma_t$第 $t$ 轮训练实际使用的高斯噪声标准差。
    σt\sigma_t
  2. $\sigma_0$初始噪声尺度,由初始隐私预算和敏感度共同决定。
    σ0=Δf⋅2ln⁡(1/δ)ε0\sigma_0 = \frac{\Delta f \cdot \sqrt{2\ln(1/\delta)}}{\varepsilon_0}
  3. $\beta$衰减速率,控制噪声下降的快慢。β 越大衰减越快,β 太小则后期噪声仍偏高。
    β\beta
  4. $\sigma_{\min}$噪声下限,防止后期噪声过小导致隐私保护承诺失效。
    σmin⁡\sigma_{\min}

可用性评估

加了这么多调料,最终味道如何?集体菜谱做出来的菜到底能不能端上桌?这就要靠“可用性评估”来回答。毕竟再安全的隐私保护,如果模型精度跌到没法用,那保护的意义也就大打折扣。

差分隐私理论给出了效用误差的上界,它告诉我们模型精度损失主要受三个因素影响:模型维度 $d$、训练样本总数 $n$、隐私预算 $\varepsilon$。这个误差界的直观含义是:样本越多,噪声被“平均”掉的效果越好,误差越小;模型越复杂(维度越高),需要保护的敏感信息越多,误差越大;隐私保护越强(ε 越小),注入噪声越大,误差越大。

实际评估时,通常同时画出“有 DP / 无 DP”的精度曲线,观察两条曲线的间距;再针对不同的 ε 各跑一组实验,绘制“隐私—效用权衡曲线”,作为业务决策的重要依据。厨师们尝遍各种方案后,终于找到了“既守得住秘密,又端得上桌”的那一版菜谱。

Error=O(dln⁡(1/δ)nε)\mathrm{Error} = O\left( \frac{\sqrt{d \ln(1/\delta)}}{n \varepsilon} \right)
这个公式像一道“口味验收标准”:菜好不好吃,取决于原料的种类数(维度)、食客的数量(样本量)以及你愿意牺牲多少保密强度来换味道。
  1. $d$模型参数量(维度),维度越高误差越大——好比食材种类越多,随机调料越容易串味。
    dd
  2. $n$训练样本总数,样本越多误差越小——食客越多,个别怪味越容易被平均掉。
    nn
  3. $\varepsilon$隐私预算,ε 越小误差越大——保密越严,噪声越猛。
    ε\varepsilon
  4. $\delta$松弛概率,对误差的影响通过对数项体现,相对温和。
    ln⁡(1/δ)\ln(1/\delta)

超参调优技巧

明确了口味目标之后,剩下的就是反复试菜。DP 联邦学习的“菜谱配方”由一组超参数决定,调参往往比搭框架更费功夫,也是最见功力的环节。

核心超参包括隐私预算 $\varepsilon$、松弛概率 $\delta$、裁剪阈值 $C$、噪声标准差 $\sigma$、批次大小 $B$ 和客户端数量 $K$。它们之间并不独立——给定部分参数后,其余参数往往被隐私账本“强制绑定”。一个常用的近似关系如下:噪声尺度 $\sigma$ 正比于裁剪阈值 $C$ 和训练轮次 $T$ 的平方根,反比于样本数 $n$ 与隐私预算 $\varepsilon$。它充当调参的起点公式:

实用调参流程建议:先固定预算,用对数网格粗搜裁剪阈值 $C$(如 0.1~10);然后依据上式算出 σ 初始值,在小范围内微调;最后用早停策略监控模型效用,一旦精度不再提升就停止训练,避免隐私预算白白浪费。调参的本质,是在“隐私、精度、算力”的三角约束中寻找可行解。

σ=C⋅2Tln⁡(1/δ)nε\sigma = \frac{C \cdot \sqrt{2T \ln(1/\delta)}}{n \varepsilon}
这个公式像“盐和水的比例”:裁剪阈值是盐的咸度,样本数是水量,隐私预算是你想要的口感标准——四者决定最终该放多少噪声这勺“调料”。
  1. $C$裁剪阈值(clip bound),阈值越大单份更新的影响越大,需要的噪声也越大。
    CC
  2. $T$训练轮次,轮次越多预算消耗越大,需要更强的噪声来补偿。
    TT
  3. $n$总样本数,样本越多噪声可以越小。
    nn
  4. $\varepsilon$目标隐私预算,ε 越小需要的噪声越大。
    ε\varepsilon

工程实践要点

当所有配方都确定后,真正把“保密做菜流程”搬进厨房日常运作——这才是工程落地。它需要标准化的配置、严格的监控和可持续的迭代机制,缺一不可。

配置模板是工程的第一步。一个典型的 DP 联邦学习配置包含机制类型(如高斯机制)、隐私预算 $(\varepsilon, \delta)$、裁剪阈值、初始噪声尺度、噪声衰减率和最小噪声下限等字段。任何一个字段配错,都可能导致隐私承诺失效或模型不可用。工程上最核心的监控指标是“隐私预算消耗”——它可以用线性消耗公式做粗略的实时跟踪:

落地流程形成闭环四步走:预算规划(设定总预算与分配策略)→ 加噪训练(按配置模板执行 DP 训练)→ 效用评估(监控精度与收敛趋势)→ 合规审计(核对隐私账本与配置是否一致)。每一步的产出都是下一步的输入。生产环境中更精确的做法是用矩会计(Moments Accountant)逐轮记录真实隐私消耗,而非简单的线性近似。当消耗逼近上限时,主动停止训练或触发新的隐私预算审批——这才是对客户负责的“保密做菜流程”。

εspent(t)=tT⋅εtotal\varepsilon_{\text{spent}}(t) = \frac{t}{T} \cdot \varepsilon_{\text{total}}
这个公式像“沙漏”:每训练一轮,沙漏就漏掉一格。漏完之前必须完成训练,否则隐私保护就超时失效了。
  1. $t$当前已完成的训练轮次。
    tt
  2. $T$计划的总训练轮次。
    TT
  3. $\varepsilon_{\text{total}}$总隐私预算,契约允许的泄露上限。
    εtotal\varepsilon_{\text{total}}
  4. $\varepsilon_{\text{spent}}(t)$到第 $t$ 轮已消耗的隐私预算。
    εspent(t)\varepsilon_{\text{spent}}(t)

AI 应用场景

医疗影像跨院协作

阶段:数据隐私保护与模型训练

解决的问题:医院之间共享医学影像数据训练 AI 模型,但直接传输患者影像违反《个人信息保护法》与 HIPAA 等法规。传统做法是各院独立训练,模型泛化能力差;AI 的做法是联邦学习 + DP-FedAvg,让数据不出院,只共享加噪后的模型更新。

具体案例:三家三甲医院协作训练肺炎 CT 识别模型。采用客户端级 DP(总预算 ε = 4, δ = 1e-5),服务器每轮聚合时注入高斯噪声。相比非隐私方案,模型 AUC 下降约 2%,但成功通过伦理审查并进入多中心临床试验。

金融风控反欺诈

阶段:特征工程与模型训练

解决的问题:多家银行希望联合构建欺诈交易检测模型,但直接交换客户交易明细既是商业机密又触碰监管红线。AI 的方案是 DP-SGD 框架,对每一笔交易实施样本级差分隐私保护,让任何单一交易记录都无法被追溯。

具体案例:五家股份制银行联合训练反欺诈模型,采用样本级 DP(ε = 2.5),单笔交易梯度经过裁剪加噪后参与联邦平均。通过噪声调度策略在训练后期减少噪声,模型召回率比固定噪声方案高出约 5 个百分点。

Python 演示

python65 行
import numpy as np  def clip_by_norm(grad, clip_bound):    """按范数裁剪梯度, 限制敏感度上界"""    norm = np.linalg.norm(grad)    if norm > clip_bound:        return grad * clip_bound / norm    return grad  class DPFedAvgSimulator:    """简化版DP-FedAvg训练模拟器"""     def __init__(self, n_clients=10, dim=20, rounds=30,                 clip_bound=1.0, sigma_init=2.0, epsilon_total=3.0):        self.n_clients = n_clients        self.dim = dim        self.rounds = rounds        self.clip_bound = clip_bound        self.sigma_init = sigma_init        self.epsilon_total = epsilon_total        self.budget_per_round = epsilon_total / rounds        self.weights = np.zeros(dim)        self.target = np.random.randn(dim)        self.acc_history = []        self.noise_history = []        self.budget_used = 0.0     def client_update(self):        """模拟一个客户端计算并裁剪梯度"""        grad = self.target - self.weights + np.random.randn(self.dim) * 0.1        return clip_by_norm(grad, self.clip_bound)     def train_one_round(self, t):        """执行一轮:聚合更新 -> 噪声调度 -> 加噪更新"""        updates = [self.client_update() for _ in range(self.n_clients)]        avg_update = np.mean(updates, axis=0)        sigma_t = max(0.3, self.sigma_init * np.exp(-0.12 * t))        noise = np.random.normal(0, sigma_t, size=self.dim)        self.weights += 0.1 * (avg_update + noise)        self.noise_history.append(sigma_t)        self.budget_used += self.budget_per_round        dist = np.linalg.norm(self.weights - self.target)        self.acc_history.append(1.0 / (1.0 + dist))     def run(self):        for t in range(self.rounds):            self.train_one_round(t)        return {            "final_accuracy": self.acc_history[-1],            "budget_used": self.budget_used,            "accuracy_trace": self.acc_history,            "noise_trace": self.noise_history,        }  if __name__ == "__main__":    sim = DPFedAvgSimulator(n_clients=10, rounds=30,                            clip_bound=1.0, sigma_init=2.0,                            epsilon_total=3.0)    result = sim.run()    print("最终精度: {:.4f}".format(result["final_accuracy"]))    print("隐私预算: {:.2f} / {:.2f}".format(        result["budget_used"], 3.0))
目的:模拟 DP-FedAvg 的完整训练循环——客户端裁剪、联邦平均、噪声指数衰减与预算消耗跟踪,演示“裁剪→聚合→加噪→更新”四步流程。
  1. def clip_by_norm(grad, clip_bound):梯度裁剪函数,把梯度的范数限制在 clip_bound 内,控制敏感度。
  2. if norm > clip_bound:只有范数超界才缩放,否则原样保留,避免过度扭曲梯度方向。
  3. self.budget_per_round = epsilon_total / rounds线性预算分配,每轮消耗总预算的 1/T。
  4. updates = [self.client_update() for _ in range(self.n_clients)]并行模拟 K 个客户端的本地更新。
  5. avg_update = np.mean(updates, axis=0)联邦平均,服务器汇总所有客户端的更新。
  6. sigma_t = max(0.3, self.sigma_init * np.exp(-0.12 * t))噪声指数衰减并设置下限 0.3。
  7. self.weights += 0.1 * (avg_update + noise)学习率 0.1,聚合更新加上高斯噪声后更新模型。
  8. self.budget_used += self.budget_per_round每轮累加隐私预算消耗,模拟隐私账本。

常见误区

误区很多初学者认为隐私预算 ε 越小越安全,于是把 ε 设成 0.001 甚至更小。结果模型精度大幅下降、甚至完全不收敛,还以为是联邦框架的代码写错了。

正解ε 确实越小保护越强,但这不是“免费的午餐”。根据误差界公式,ε 缩小 10 倍,需要的噪声大约增大 10 倍,模型效用误差也随之攀升。正确的做法是先设定一个可接受的效用底线(比如精度不低于无 DP 方案的 90%),再在这个约束下尽量调小 ε,找到“够用且好用”的平衡点。

为何常见:差分隐私定义中 ε 看起来像一个“越小越好”的数值指标,初学者容易忽略它与噪声强度成反比的直接数学关联。

误区有人以为客户端级差分隐私天然覆盖了所有样本的隐私,于是对外宣称系统同时实现了“用户级和样本级”隐私保护,但实际上根本没有对单条样本做任何额外的噪声注入。

正解客户端级保护的是“某个客户端是否参与了训练”这个事实,保护粒度是整个用户(及其全部数据);样本级保护的是“某条样本是否在训练集中”,要求对每条样本的梯度单独裁剪并加噪。样本级的噪声消耗通常大得多。两者是不同粒度的保护承诺,不可混为一谈。

为何常见:两级保护在概念上非常相似,加上部分论文用词不严谨,容易让人误以为粒度更粗的一级会自动覆盖更细的隐私需求。

误区把 DP-FedAvg 和 DP-SGD 看作两个互斥的、毫无关联的算法,选型时认为必须二选一,不能有任何交叉。

正解两者共享 DP-SGD 的核心理念——“梯度裁剪 + 加噪”,本质区别只在于噪声注入的粒度与位置:DP-FedAvg 在服务器聚合后一次性加噪,DP-SGD 在每个客户端的本地梯度上逐步加噪。实际工程中甚至可以混合使用,比如在客户端本地用小噪声、在服务器聚合后再补一层噪声。

为何常见:不同论文采用不同的命名和简化假设,把成熟的 DP 思想包装成了“两个流派”,初学者容易看成泾渭分明的两类独立算法。

误区很多人配置好总预算 ε 后就不管了,训练了几百轮才发现实际隐私消耗早就超过了预设值,被合规审计抓了个正着。

正解差分隐私的隐私损失会随组合(composition)效应累积。每轮加噪都在消耗预算,总消耗约等于各轮预算之和(精确计算需用矩会计)。工程上必须维护“隐私账本”,每一轮训练后记录当前累计消耗,接近上限时立即停止训练或重新审批预算。

为何常见:差分隐私定义看起来只针对“单次查询/单轮训练”,初学者容易忽略多轮组合的累积效应,直到系统上线被审计才发现超支。

面试题

Q1. 在 ε-差分隐私定义中,参数 ε 代表什么?

单选题 · easy

  • A.模型训练的轮次数
  • B.隐私损失的上限预算← 正确答案
  • C.高斯噪声的标准差
  • D.参与客户端的总数量

答案:B。ε 是隐私预算,控制两个相邻数据集输出分布的最大差异比(上界为 e^ε)。噪声标准差是 σ,轮次数和客户端数量与 ε 没有直接关系。

Q2. 高斯机制中,噪声标准差 σ 与隐私预算 ε 的关系是?

单选题 · easy

  • A.σ 与 ε 成正比关系
  • B.σ 与 ε 成反比关系← 正确答案
  • C.σ 与 ε 平方成正比
  • D.σ 与 ε 没有任何关系

答案:B。高斯机制中 σ = Δf·√(2ln(1/δ))/ε,ε 出现在分母位置。ε 越小需要的噪声越大,二者成反比。

Q3. 客户端级差分隐私保护的核心对象是?

单选题 · mid

  • A.单个训练样本
  • B.服务器模型的参数
  • C.单个用户的全部数据← 正确答案
  • D.聚合梯度的平均值

答案:C。客户端级 DP 保证攻击者无法判断某个客户端(用户)是否参与了训练,保护粒度是整个用户的全部数据。单条样本是样本级 DP 的保护对象,模型参数是训练目标而非保护对象。

Q4. DP-FedAvg 与 DP-SGD 最大的区别在于?

单选题 · mid

  • A.采用了不同的优化器
  • B.噪声注入的位置不同← 正确答案
  • C.是否使用联邦平均算法
  • D.裁剪方式完全不同

答案:B。两者都做梯度裁剪和加噪,核心区别是噪声注入的位置:DP-FedAvg 在服务器聚合后加噪,DP-SGD 在客户端本地逐步加噪。优化器通常相同,联邦平均是 DP-FedAvg 的默认聚合方式。

Q5. 保持总隐私预算 ε 不变,增加训练轮次 T 会迫使每轮如何调整?

单选题 · mid

  • A.每轮预算自动放大
  • B.每轮噪声可以保持不变
  • C.每轮噪声必须同时加大← 正确答案
  • D.总预算随轮次自动增加

答案:C。总预算固定时,每轮可用的预算约为 ε/T。轮次越多,每轮预算越少,需要的噪声越大(σ∝1/ε_t)。总预算不会自动增加,每轮噪声也不能维持不变。

Q6. 噪声调度 σ_t = max(σ_min, σ_0·e^(-βt)) 中,β 过小最可能导致?

单选题 · hard

  • A.模型收敛速度加快
  • B.前期隐私开销过大
  • C.训练后期噪声仍偏高← 正确答案
  • D.噪声提前降到下限值

答案:C。β 是噪声衰减速率,β 越小衰减越慢,噪声在后期仍然偏高,压制模型收敛精度。β 过小不会加快收敛,反而会因为后期噪声大而拖慢收敛;它也不会让噪声提前触底。

Q7. 梯度裁剪在 DP 训练中的主要作用是?

单选题 · easy

  • A.提升模型收敛速度
  • B.限制敏感度上界← 正确答案
  • C.减少服务器通信量
  • D.增强模型泛化能力

答案:B。裁剪把每个梯度的范数限制在阈值 C 内,从而确定全局敏感度 Δf 的上界,为后续注入适量噪声提供依据。它不直接加速收敛、减少通信或增强泛化。

Q8. 以下哪些因素会影响 DP 模型的可用性?

多选题 · mid

  • A.隐私预算 ε 的大小← 正确答案
  • B.训练样本总数 n← 正确答案
  • C.模型参数量维度 d← 正确答案
  • D.服务器机房的温度

答案:ABC。误差界 Error = O(√(d·ln(1/δ))/(nε)) 表明:ε 越小误差越大,样本数 n 越多误差越小,维度 d 越高误差越大。机房温度与隐私模型无关。

Q9. DP-FedAvg 需要配置的核心超参数包括?

多选题 · mid

  • A.裁剪阈值 C← 正确答案
  • B.噪声标准差 σ← 正确答案
  • C.隐私预算 ε 与 δ← 正确答案
  • D.数据库连接密码

答案:ABC。核心超参包括裁剪阈值 C(控制敏感度)、噪声标准差 σ(由预算和敏感度推导)、隐私预算 ε 与松弛项 δ(定义保护强度)。数据库密码属于工程配置,不属于 DP 算法超参。

Q10. 关于客户端级与样本级隐私预算,以下说法正确的有?

多选题 · hard

  • A.客户端级保护粒度更粗← 正确答案
  • B.样本级噪声开销通常更大← 正确答案
  • C.两级预算可以结合使用← 正确答案
  • D.客户端级保护一定优于样本级

答案:ABC。客户端级保护“整桌菜”(粒度粗),样本级保护“每道菜”(粒度细、开销大)。工程上可以先做客户端级保护,再对敏感样本叠加样本级保护。选型取决于业务需求,“一定优于”的说法过于绝对(尤其是预算受限时)。