CodeWalk

差分隐私DP-SGD训练流程

作者:孤独的心 · 2026-05-30 12:55

详细解释DP-SGD(差分隐私随机梯度下降)的步骤及其对模型训练的影响。

回答

孤独的心

DP-SGD (Abadi et al., 2016) 将差分隐私保护引入深度学习训练。

DP-SGD流程(与传统SGD的差异标*):

  1. 从批次中采样m个样本
  2. 对每个样本计算梯度 g_i ← ∇_θ L(θ, x_i, y_i)
  3. (*) 梯度裁剪g_i ← g_i / max(1, ||g_i||₂ / C)
    • 将每个样本梯度的L2范数限制在C以内
    • 限制单个样本对模型的最大影响
  4. (*) 加噪声g̃ ← 1/m·(Σ g_i + N(0, σ²C²I))
    • 高斯噪声掩码真实梯度
    • σ控制隐私预算ε
  5. 更新参数:θ ← θ - η·g̃

隐私分析

  • 使用Moment Accountant计算累积隐私预算ε
  • 比简单的组合定理更紧的界
  • ε = O(q·T·log(1/δ)/σ),其中q=采样率,T=迭代数

对训练的影响

  • 精度下降:梯度噪声+裁剪引入偏差。C过小偏差大,C过大噪声大
  • 批次大小:大batch降低噪声方差(大batch是DP-SGD的核心技巧)
  • 学习率调整:需要更小的学习率和更长的warmup

实践:OPACUS (Facebook) 库实现了高效DP-SGD,支持Ghost Clipping等技术减少内存开销。

典型配置:ε=8, δ=1e-5, C=1.0, lot_size=4096(虚拟批次)。