对抗性攻击中的投影梯度下降(Projected Gradient Descent, PGD)方法详解
字数 2518 2025-12-13 03:56:46

对抗性攻击中的投影梯度下降(Projected Gradient Descent, PGD)方法详解

一、知识点描述
PGD是生成对抗性样本的一种迭代攻击方法,属于白盒攻击范畴。它的核心思想是:在允许的扰动范围内(例如,L∞范数约束的ε-ball内),通过多步梯度上升最大化模型的损失函数,从而找到能够使模型分类错误的有效对抗样本。与单步攻击(如FGSM)相比,PGD通过多次迭代和投影操作,通常能产生更强的攻击效果,常被用作评估模型鲁棒性的基准攻击方法。

二、循序渐进讲解

步骤1:对抗性攻击的基本设定
假设我们有一个分类模型 \(f_\theta(x)\),其输入为图像 \(x \in \mathbb{R}^d\),输出为类别概率。给定一个干净的样本 \(x^{clean}\) 及其真实标签 \(y\),对抗样本 \(x^{adv}\) 的目标是:

  1. 视觉相似性\(\| x^{adv} - x^{clean} \|_p \leq \epsilon\),即扰动不超过预设的阈值 \(\epsilon\)(常用L∞范数,即每个像素的变化不超过ε)。
  2. 攻击有效性:使模型对 \(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通过迭代以下两步求解:

  1. 梯度上升步:沿损失函数梯度方向更新,以增加损失(使模型更易出错)。
  2. 投影步:将更新后的样本投影回约束域(即ε-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的变体与扩展

  1. 多起点PGD:多次运行PGD,每次从不同的随机起点开始,取攻击损失最高的结果。
  2. 其他范数约束:PGD也可用于L2范数约束,此时投影步改为将样本投影到L2球内(例如通过缩放梯度更新向量的长度)。
  3. 动量PGD:在梯度更新中加入动量项,加速收敛并可能逃逸平坦区域。

三、总结与意义
PGD因其强大的攻击能力,已成为对抗训练(Adversarial Training) 中最常用的攻击生成方法。在对抗训练中,模型在每个训练批次中都会用PGD生成对抗样本,并以此更新权重,从而提升模型的鲁棒性。理解PGD有助于深入掌握对抗攻击的核心逻辑——在受限扰动空间内,通过迭代优化实现攻击目标。

对抗性攻击中的投影梯度下降(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有助于深入掌握对抗攻击的核心逻辑——在受限扰动空间内,通过迭代优化实现攻击目标。