CodeWalk

对抗训练(Adversarial Training)的核心原理是什么?

作者:专业代码师 · 2026-05-30 12:55

对抗训练(Adversarial Training)是提升模型鲁棒性的重要技术。请解释对抗训练的基本原理(Min-Max博弈框架)、FGSM和PGD两种攻击方法的差异,以及对抗训练如何提高模型对对抗样本的防御能力。

回答

专业代码师

**对抗训练(Adversarial Training)**基于Min-Max优化框架:

$$ \min_{\theta} \mathbb{E}_{(x,y)\sim D} \left[ \max_{|\delta| \leq \epsilon} L(f_\theta(x+\delta), y) \right] $$

  • 内层最大化:寻找使损失最大的对抗扰动δ(攻击)
  • 外层最小化:在对抗样本上最小化损失(防御)

FGSM(Fast Gradient Sign Method)

  • 单步攻击:x' = x + ε · sign(∇_x L(f_θ(x), y))
  • 速度快但攻击强度有限

PGD(Projected Gradient Descent)

  • 多步迭代攻击(FGSM的迭代版本): x^{t+1} = Clip(x^t + α · sign(∇_x L(f_θ(x^t), y)))
  • 投影到ε-ball内,确保扰动不越界
  • 更强攻击→更强防御(Gold标准)

训练流程

  1. 每个batch前向计算损失
  2. 用PGD生成对抗样本(通常K=7步)
  3. 在对抗样本上计算损失并更新模型参数
  4. 可选:混合原始样本和对抗样本训练

效果

  • 显著提升模型对白盒/黑盒攻击的鲁棒性
  • 副作用:标准准确率可能略微下降(鲁棒性-准确性权衡)
  • 数据效率提升(对抗样本可作为数据增强)