对抗性攻击中的投影梯度下降(Projected Gradient Descent, PGD)方法详解
一、知识点描述
PGD是生成对抗性样本的一种迭代攻击方法,属于白盒攻击范畴。它的核心思想是:在允许的扰动范围内(例如,L∞范数约束的ε-ball内),通过多步梯度上升最大化模型的损失函数,从而找到能够使模型分类错误的有效对抗样本。与单步攻击(如FGSM)相比,PGD通过多次迭代和投影操作,通常能产生更强的攻击效果,常被用作评估模型鲁棒性的基准攻击方法。
二、循序渐进讲解
步骤1:对抗性攻击的基本设定
假设我们有一个分类模型 \(f_\theta(x)\),其输入为图像 \(x \in \mathbb{R}^d\),输出为类别概率。给定一个干净的样本 \(x^{clean}\) 及其真实标签 \(y\),对抗样本 \(x^{adv}\) 的目标是:
- 视觉相似性:\(\| x^{adv} - x^{clean} \|_p \leq \epsilon\),即扰动不超过预设的阈值 \(\epsilon\)(常用L∞范数,即每个像素的变化不超过ε)。
- 攻击有效性:使模型对 \(x^{adv}\) 的分类错误,例如 \(f_\theta(x^{adv}) \neq y\)。
步骤2:从单步攻击到迭代攻击的动机
单步攻击如FGSM(Fast Gradient Sign Method)仅沿梯度符号方向走一步:
\[x^{adv} = x^{clean} + \epsilon \cdot \text{sign}(\nabla_x J(\theta, x^{clean}, y)) \]
其中 \(J\) 是损失函数(如交叉熵)。但单步攻击容易“过冲”或陷入局部次优点,攻击成功率有限。迭代攻击通过多步小幅更新,能更精细地搜索到更强的对抗样本。
步骤3:PGD的基本迭代过程
PGD将对抗样本的生成视为一个约束优化问题:
\[\max_{x^{adv}} J(\theta, x^{adv}, y) \quad \text{s.t.} \quad \| x^{adv} - x^{clean} \|_\infty \leq \epsilon \]
PGD通过迭代以下两步求解:
- 梯度上升步:沿损失函数梯度方向更新,以增加损失(使模型更易出错)。
- 投影步:将更新后的样本投影回约束域(即ε-ball内),确保扰动不超过允许范围。
步骤4:PGD的算法细节
设迭代步数为 \(T\),步长为 \(\alpha\),初始对抗样本 \(x_0^{adv}\) 通常从干净样本的邻域内随机初始化(例如 \(x_0^{adv} = x^{clean} + \mathcal{U}(-\epsilon, \epsilon)\))。对于第 \(t\) 次迭代(\(t = 0, 1, ..., T-1\)):
a. 梯度计算:计算当前对抗样本 \(x_t^{adv}\) 的损失梯度
\[g_t = \nabla_{x_t^{adv}} J(\theta, x_t^{adv}, y) \]
注意需保留计算图以进行梯度反向传播(白盒攻击)。
b. 梯度上升更新:沿梯度方向迈出步长 \(\alpha\)
\[\tilde{x}_{t+1}^{adv} = x_t^{adv} + \alpha \cdot \text{sign}(g_t) \]
这里使用 \(\text{sign}(g_t)\) 而非 \(g_t\) 本身,是为了在L∞约束下最大化变化效率(每个像素变化±α)。
c. 投影到约束域:将更新后的样本裁剪到以 \(x^{clean}\) 为中心、半径为ε的L∞球内
\[x_{t+1}^{adv} = \text{Clip}_{x^{clean}, \epsilon}(\tilde{x}_{t+1}^{adv}) \]
其中裁剪函数定义为:
\[\text{Clip}_{x^{clean}, \epsilon}(z) = \min(\max(z, x^{clean} - \epsilon), x^{clean} + \epsilon) \]
即逐像素将 \(z\) 限制在区间 \([x^{clean} - \epsilon, x^{clean} + \epsilon]\) 内。
d. 迭代终止:重复步骤a-c共 \(T\) 次,得到最终对抗样本 \(x_T^{adv}\)。
步骤5:关键参数的作用
- 迭代次数 \(T\):通常取 \(T = \lceil 1.25 \epsilon / \alpha \rceil\),确保总扰动潜力可覆盖整个ε-ball。例如,若 \(\epsilon = 8/255, \alpha = 2/255\),则 \(T \approx 5\)。
- 步长 \(\alpha\):较小步长(如 \(\alpha = \epsilon / T\))使搜索更精细,但计算成本增加。
- 随机初始化:从均匀分布中随机初始化对抗样本,有助于避免陷入较差的局部最优,提升攻击成功率。
步骤6:PGD的变体与扩展
- 多起点PGD:多次运行PGD,每次从不同的随机起点开始,取攻击损失最高的结果。
- 其他范数约束:PGD也可用于L2范数约束,此时投影步改为将样本投影到L2球内(例如通过缩放梯度更新向量的长度)。
- 动量PGD:在梯度更新中加入动量项,加速收敛并可能逃逸平坦区域。
三、总结与意义
PGD因其强大的攻击能力,已成为对抗训练(Adversarial Training) 中最常用的攻击生成方法。在对抗训练中,模型在每个训练批次中都会用PGD生成对抗样本,并以此更新权重,从而提升模型的鲁棒性。理解PGD有助于深入掌握对抗攻击的核心逻辑——在受限扰动空间内,通过迭代优化实现攻击目标。