对抗样本论文笔记:Toward Few-step Adversarial Training from a Frequency Perspective——SPGD光谱投影梯度下降
1. 简介
- 显式优化扰动的频率分量将无穷范数PGD扩展到频域
- 将SPGD运用到对抗训练中,可以提升鲁棒性,减少攻击步骤
- 证明SPGD等效于PGD的辩题,没有必要在频域中进行显式优化
2. 背景
- 频率变换
- 基于梯度的对抗生成过程
- 用于生成健壮模型的对抗训练
2.1 频域中的图像
- 可以将图像的每个通道表示为一组频率分量
- 离散余弦转换DCT是一种正交线性映射
- DCT和IDCT将图像在频域和像素域之间转换(频域->像素域DCT,反之IDCT)
- 选择DCT是因为它比傅里叶变换更好地减少了图像边界附近的失真
2.2 像素域中的对抗样本
- 设定阈值,扰动不能超过阈值
- 经典的有FGSM,但基于梯度掩蔽的模型,无法计算梯度
- PGD
- FGSM的多步骤变体
- 在邻域球内,随机初始化扰动
- 在攻击步骤中,梯度符号*某个步长
- PGD将其裁剪为value的值来限制其扰动
- PGD是最好的一阶对抗样本
- 尽管PGD攻击强,但需要很多步攻击才能收敛,这是对抗训练的瓶颈
2.3 对抗训练
- 对抗训练就是要找出最大化损失下的扰动最小化
3 频域中的对抗样本
- 使用PGD直接在频域中进行优化
- 频谱投影梯度下降SPGD使用频率变换DCT和IDCT在频域中执行梯度更新
- 计算频率变量并将其缩放版本添加到输入的DCT系数中
DCT和IDCT的算法描述:
注意:SPGD-α-R:R-攻击步数;α-步长
3.1 选择参数
- 最佳步长:75000000(但可能取决于模型结构和优化器的选择,不同的情况未探索)
- 使用Dongetal中的动量策略,0.0-1.0的动量因子中,是对抗精度最小的最佳值是0.75。使用动量会使同一模型的对抗精度从48.49%降到45.68%。动量更新应用于算法1的line8的频域中的梯度更新。
4 实验
- 实验证明:SPGD可以减少所需的攻击步骤,同时保持对抗性
- 增加PGD的动量作为比较实验,发现:最佳动量值为0
- 模型结构:ResNet-18,攻击强度ε设置为8,每个经过对抗训练的模型自然准确性over 87%
- 对抗样本:10步、20次迭代的PGD、SPGD
4.1 SPGD比PGD更少步骤
- 早期的训练中,SPGD比PGD强大
4.2 SPGD-AT
↑↑↑ cifar10数据集上使用SPGD对抗样本训练和PGD对抗样本训练的防御模型的对抗精度。
- 关于表格意义的个人理解:第一列是攻击测试时使用的攻击样本,第二列是使用该种类对抗样本训练的防御模型。而对抗精度是指,我在使用攻击时,防御模型的正确率。
- 原文解读:原文中说表格表明:SPGD训练的模型比PGD训练的模型防御能力更强(也就是奇数行的精度比偶数行的精度更高)
- 但,比较相同条件下的精度,其实SPGD-AT比PGD-AT也没高出太多。反而在攻击强度ε很大的时候,SPGD-AT的模型精度显著减低。这是否意味着,SPGD-AT的效果受到扰动大小的影响。
- 原文中还说到:训练步骤设置为5的时候,SPGD-AT保留了更好的鲁棒性。
自己理解
- 综合两个表格,不难发现本文的重点放在了“更少步骤”
- 实际上,SPGD-AT和PGD-AT的防御效果是差不太多的,但是相比起PGD-AT,SPGD-AT能够使用更少的训练步骤
- 因此,从成本角度考虑,SPGD-AT确实比PGD-AT要好
5 讨论
- 主要从频域和像素域角度:定性比较SPGD和PGD对抗样本
5.1 可视化SPGD和PGD扰动
- 生成特定扰动过程中的分量直方图
- SPGD的小分量分布更均匀
- SPGD产生的比epsilon小的扰动分量比PGD多(??????)
- SPGD攻击能够将小梯度值的权重降低,更多的小梯度值会导致更多的小于epsilon的扰动分量。反过来,可以在优化过程中实现更高的运动自由度。(??????)
- 该图显示了在第一个攻击步骤中PGD和SPGD的摄动分量的值映射。蓝色表示的信号操作和ε球投影的映射将所有值量化为1,-1或0。橙色表示的只有ε球投影的映射在ε球内具有线性分段函数。
- 图2表示了在第一个攻击步骤中,PGD中使用的符号函数与可视为以大步长执行的SPGD的符号函数之间的差异(就是说,图表示了PGD和SPGD的符号函数)l∞攻击约束条件使攻击者可以施加扰动,扰动阈值ε。
- 大步长时,小梯度值更可能改变符号。
SPGD的梯度更新为: ( P r o j ) x ’ ∈ S ( x ) ( α ∗ ∇ x J ) ) (Proj)_{x^{’}∈S(x)}(\alpha * \nabla_{x}J)) (Proj)x’∈S(x)(α∗∇xJ))
5.2 对抗样本必须是高频吗?
- 像素域攻击的PGD第一步热映射表明,触发对抗扰动、增加对抗损失的像素是某种特定模式
- 频域攻击的SPGD第一步热映射表明,触发对抗扰动、增加对抗损失的频域损失既来自于低频也来自于高频
- 翻译成人话就是:PGD表示像素域的对抗扰动有某种特定模式,而SPGD表示频域的对抗扰动既能是高频的,也能是低频的
- 结论:我们推测对抗示例可能存在于频域中的任何位置,而与高频或低频无关。因此,简单地消除或模糊某些频率成分可能无法解决模型敏感性的根本原因。相反,它可能只是修补了一些发现的漏洞,而忽略了其他尚未发现的漏洞。
6 结论
- 描述了PGD的扩展SPGD,证明了SPGD在攻击模型和改进对抗训练方面的有效性;
- SPGD可以以更少步骤找到更大损失的对抗样本
- 省略符号操作时,SPGD是像素域中的PGD的变体
- 对抗扰动不仅存在在高频,也存在在低频
附录:SPGD和PGD的等价性证明
- 定理1: A ∈ R N × N A\in\mathbb{R}^{N×N} A∈RN×N 是对应于 z ⟼ x z\longmapsto{x} z⟼x的转换矩阵,即: x = A z x=Az x=Az. 如果 f : R N ⟼ R f:\mathbb{R}^{N}\longmapsto{\mathbb{R}} f:RN⟼R,则有: ∇ z f = A T ∇ x f \nabla_{z}f=A^{T}\nabla_xf ∇zf=AT∇xf
- 推论1:学习率为
α
\alpha
α的SPGD算法等价于步长为
α
\alpha
α且使用无符号梯度函数的PGD算法。也就是说:
SPGD更新:(J是损失函数)
x n + 1 = P r o j S ( x ) ( x n + α ∇ x J ) ) x_{n+1}=Proj_{S(x)}(x_n+\alpha\nabla_xJ)) xn+1=ProjS(x)(xn+α∇xJ))
而PGD更新:
x n + 1 = P r o j S ( x ) ( x n + α ⋅ s i g n ∇ x J ) ) x_{n+1}=Proj_{S(x)}(x_n+\alpha·sign\nabla_xJ)) xn+1=ProjS(x)(xn+α⋅sign∇xJ)) - 定理1的证明:
x = A z x=Az x=Az
( x 1 ⋮ x N ) = ( a 11 ⋯ a 1 N ⋮ ⋱ ⋮ a N 1 ⋯ a N N ) ( z 1 ⋮ z N ) \begin{pmatrix} x_1\\ \vdots\\ x_N \end{pmatrix}=\begin{pmatrix} a_{11} & \cdots & a_{1N} \\ \vdots & \ddots & \vdots \\ a_{N1} & \cdots & a_{NN} \end{pmatrix}\begin{pmatrix} z_1\\ \vdots\\ z_N \end{pmatrix} ⎝⎜⎛x1⋮xN⎠⎟⎞=⎝⎜⎛a11⋮aN1⋯⋱⋯a1N⋮aNN⎠⎟⎞⎝⎜⎛z1⋮zN⎠⎟⎞
= ( ∑ j = 1 N a 1 j z j ⋮ ∑ j = 1 N a i j z j ⋮ ∑ j = 1 N a N j z j ) =\begin{pmatrix} \sum_{j=1}^{N}a_{1j}z_j\\\vdots\\\sum_{j=1}^{N}a_{ij}z_j\\\vdots\\\sum_{j=1}^{N}a_{Nj}z_j\end{pmatrix} =⎝⎜⎜⎜⎜⎜⎜⎜⎛∑j=1Na1jzj⋮∑j=1Naijzj⋮∑j=1NaNjzj⎠⎟⎟⎟⎟⎟⎟⎟⎞
∇ z x = ( ∂ x i ∂ z 1 ⋯ ∂ x i ∂ z N ) \nabla_zx=\begin{pmatrix} \frac{\partial x_i}{\partial z_1}&\cdots&\frac{\partial x_i}{\partial z_N} \end{pmatrix} ∇zx=(∂z1∂xi⋯∂zN∂xi)