Purification and Anti-purification 相关工作
纯化方法利用生成模型在分类前去除对抗噪声,从而增强对对抗性操作的抵抗能力。
DiffPure
在此基础上,DiffPure利用扩散模型的前向与反向过程来净化对抗样本。
对抗训练,即在对抗样本上训练神经网络。然而,大多数对抗训练方法只能防御他们所训练的特定攻击。对于未知的攻击,但它们的性能显着下降。
对抗净化依靠生成模型在分类之前净化受到对抗扰动的图像。与对抗训练方法相比,对抗净化可以以即插即用的方式防御未知的威胁,而无需重新训练分类器。
在生成过程中,扩散模型净化了噪声样本,起到了与净化模型类似的作用。它们良好的生成质量和多样性确保纯化的图像紧密遵循干净数据的原始分布。此外,扩散模型中的随机性可以形成强大的随机防御。这些特性使扩散模型成为生成对抗净化的理想候选者。
因此,作者提出了一种新的对抗净化方法,称为DiffPure,给定一个预先训练的扩散模型,我们的方法包括两个步骤:
- 我们首先通过较小扩散时间步长的前向过程向对抗样本添加噪声;
- 然后求解逆随机微分方程(SDE)以从扩散的对抗样本中恢复干净的图像。
随机微分方程(Stochastic Differential Equation, SDE)是描述受连续随机扰动影响的动态系统演化的数学工具。它在普通微分方程(ODE)基础上引入随机过程(通常是布朗运动),使解本身成为随机过程(每次求解产生不同轨迹),而非确定性函数
SDE 与 DDPM 的关系:DDPM 是 VP-SDE 在均匀时间网格上的欧拉离散化特例。当离散步长 Δt → 0 时,DDPM 的前向过程严格收敛于 VP-SDE。
该方法中的一个重要设计参数是扩散时间步长的选择,因为它代表了前向过程中添加的噪声量。 理论分析表明,噪声需要足够高以消除对抗扰动,但又不能太大以破坏纯化图像的标签语义。
GridPure
此外,GridPure 提出了一种基于网格的迭代扩散方法,专为高分辨率图像设计,提升了净化效果。
这篇论文指出,现有的 DiffPure 类方法存在两个致命弱点:结构丢失 和分辨率瓶颈。
为什么 DiffPure 等现有方法表现不佳
为了保护数据,Glaze/AdvDM 添加的扰动 \(\delta\) 通常幅度很大且集中在高频细节(纹理、边缘)。为了彻底抹除 \(\delta\),DiffPure 必须将图像扩散到较深的时间步 \(t\)(即加入大量噪声)。
当 \(t\) 较大时,原始图像的结构信息(如人脸的具体五官形状、画作的笔触走向)大部分已被噪声覆盖。此时,扩散模型在反向生成时,不再是在"恢复"原图,而是在根据提示词(或隐式先验)"重绘"一张新图。
生成的图像虽然干净了,但有身份特征丢失(人脸变样)、艺术风格改变(笔触被平滑化)等问题。
分辨率受限:显存爆炸与训练数据偏差
- 显存瓶颈 :大多数开源的强效扩散模型(如 SD 1.5/2.1)原生训练分辨率仅为 \(512 \times 512\)。强行在高分辨率下运行会导致 OOM(显存溢出)或需要极昂贵的计算资源。
- 分布偏移 :如果直接将高分辨率图像缩放到 \(512 \times 512\) 进行 DiffPure 处理,然后再放大,会导致细节模糊。更重要的是,扩散模型在低分辨率下学到的先验分布与高分辨率细节不匹配,直接生成高分辨率往往会产生伪影或不连贯的结构。
GrIDPure 是如何解决这些问题的?
GrIDPure (Grid -based I terative D iffusion Pure ) 核心思想是:分而治之(网格化) + 小步快跑(迭代混合)。
- 基于网格的裁剪策略 (Grid-based Cropping) ------ 解决分辨率问题
GrIDPure 不再一次性处理整张大图,而是采用**"分块处理,全局整合"**的策略:
- 操作步骤:
- 将高分辨率输入图像 \(x_{adv}\) 切割成多个重叠的小块(Patches),例如 \(512 \times 512\)。
- 对每个小块独立执行 DiffPure 流程。
- 平均合并策略 (Average Merging) ------ 解决边界伪影
- 问题:简单的拼接会在网格边界处产生明显的接缝(Seams),因为相邻块的去噪过程是独立的,边缘像素可能不连续。
- GrIDPure 方案:
- 在切割时设置重叠区域 (Overlap)。
- 在重组时,对于重叠区域的像素,采用加权平均(通常是距离权重,离中心越近权重越高)进行融合。
- 小步迭代 DiffPure (Small-step Iterative DiffPure) ------ 解决结构丢失
- 传统 DiffPure 的做法:一步到位。直接加噪到 \(t=T_{large}\)(大噪声),然后一次性反向生成到 \(t=0\)。这导致原始信息丢失严重。
- GrIDPure 的做法:多轮次、小步长 的迭代净化。
-
流程 :
- 第一轮:加少量噪声(\(t=\epsilon\)),反向去噪。此时只能去除极微弱的扰动,但完美保留结构。
- 后续轮次:将上一轮的输出作为输入,再次加入少量噪声(累积噪声量逐渐增加),再次去噪。
- 混合机制:在每一轮去噪后,将生成的图像与原始受扰动图像进行线性混合(Blending)。
\[x^{(k+1)} = \alpha \cdot \text{DiffPure}(x^{(k)}) + (1-\alpha) \cdot x_{adv} \]
-
PDM-Pure
PDM-Pure 采用像素空间扩散模型作为通用净化器,以缓解对抗噪声。
一个被严重忽视的方面是,所有现有研究都聚焦于潜在扩散模型(LDM),而像素空间扩散模型(PDM)则未被研究。对于LDMs,扰动不会直接引入扩散模型的输入端。相反,这些信息是外部施加并通过编码器传播的。研究表明,LDM的编码-解码器易受对抗扰动影响,这意味着LDM的adv采样机制与PDM的adv采样有很大不同。
contributions:
- 我们观察到,大多数现有关于对抗性保护示例的研究都集中在LDM上。对PDM的对抗性攻击在该领域大多被忽视。
- 我们通过对各种LDM和PDM进行大量实验,填补了文献中的空白。我们发现所有现有方法都无法攻击PDM,表明PDM比LDM更具对抗性。
- 基于这一新颖见解,我们提出了一个简单而有效的框架,称为PDM-Pure,将强PDM作为通用净化器,去除攻击无关的对抗扰动,轻松绕过几乎所有现有的保护方法。
Section 3.1 - The Amplification Effect:"LDM 中的 VAE 编码器 引入了一种非线性映射,可以剧烈地放大微小的输入扰动。具体来说,像素空间中具有小范数的扰动 ,可能导致潜在空间中的扰动具有大得多的范数。这种放大效应破坏了扩散过程可以将对抗噪声视为标准高斯噪声的假设。"
PDM-Pure 的核心过程其实非常纯粹,它本质上就是 SDEdit (Stochastic Differential Editing) 技术在像素空间扩散模型(PDM)上的应用。
它的核心逻辑是:"加一点噪声把对抗扰动洗掉,然后利用 PDM 强大的去噪能力把图'画'回来。"
由于 PDM(如 DeepFloyd IF)没有 VAE 编码器,整个过程完全在像素空间 进行。下面详细拆解加噪 和去噪两个关键步骤的数学原理和实际操作。
加噪
扩散模型的前向过程定义为向图像添加高斯噪声。对于给定的时间步 \(t^*\),加噪公式为:
\[x_{t^*} = \sqrt{\bar{\alpha}{t^*}} \cdot x{adv} + \sqrt{1 - \bar{\alpha}_{t^*}} \cdot \epsilon \]
其中:
- \(x_{adv}\):输入的受保护图像。
- \(\epsilon \sim \mathcal{N}(0, I)\):从标准正态分布采样的随机高斯噪声。
- \(\bar{\alpha}_{t^*}\):预定义的噪声调度系数(Noise Schedule),表示在 \(t^*\) 时刻保留多少原始信号。
- 当 \(t^*=0\) 时,\(\bar{\alpha}_0 = 1\)(无噪声)。
- 当 \(t^*=T\) 时,\(\bar{\alpha}_T \approx 0\)(纯噪声)。
- PDM-Pure 的选择:选择较小的 \(t^*\)(如 \(0.15T\)),此时 \(\sqrt{\bar{\alpha}_{t^*}}\) 依然很大(例如 0.8),意味着大部分图像内容(低频结构)被保留,只加入了中等强度的噪声。
去噪
\[x_{t-1} = \sqrt{\bar{\alpha}{t-1}} \left( \frac{x_t - \sqrt{1-\bar{\alpha}t} \cdot \epsilon\theta(x_t, t)}{\sqrt{\bar{\alpha}t}} \right) + \sqrt{1-\bar{\alpha}{t-1}} \cdot \epsilon\theta(x_t, t) \]
其中:
- \(\epsilon_\theta(x_t, t)\):PDM 模型预测的噪声残差。模型会判断:"当前图像里哪些是噪声,哪些是真实信号"。
- 由于 PDM 是在海量数据上训练的,它学到的"自然图像分布"非常强大。面对 \(x_{t^*}\) 中的噪声,它会认为:
- 符合自然纹理的部分 \(\rightarrow\) 保留。
- 不符合自然统计规律的异常部分(即残留的对抗扰动特征) \(\rightarrow\) 当作噪声去掉。
DeepFloyd IF 是一种先进的新型开源文本到图像模型,由一个冻结的文本编码器和三个级联的像素扩散模块组成
第一阶段:根据文本提示生成 64x64 像素图像的基础模型,
第二阶段:64x64 像素 => 256x256 像素的超分辨率模型,
第三阶段:256x256 像素 => 1024x1024 像素的超分辨率模型。
第一阶段和第二阶段利用基于 T5 transformer 的冻结文本编码器提取文本嵌入,随后将其输入到增强了交叉注意力和注意力池化的 UNet 架构中。第三阶段是 Stability AI 的 x4 Upscaling 模型
"Then we use a general prompt \(\mathcal{P}\) to do SDEdit [24] using the Stage II model: \(x_t = \text{IF-II}(x_{t+1}, x_{64 \times 64}, \mathcal{P})\) where \(t = T_{edit}-1, \dots, 0\), \(x_{T_{edit}} = x_{256 \times 256}\).""We can then use IF Stage III to further up-sample it into \(1024 \times 1024\) with \(x_{1024 \times 1024} = \text{IF-III}(x_0, p)\)."
ACA(Adversarial Content Attack)
为抵抗纯化攻击,ACA将图像映射到生成模型的低维潜在流形上,并通过优化对抗目标实现多样化内容生成与控制。
当前已经提出了很多种生成对抗样本的方法,为了保持人类视觉的不可察觉性和图像的真实性,这些对抗性攻击通常是在lp规范的约束下产生了对抗性扰动。然而在lp约束下生成的对抗性样本有明显的局限性:
首先它们在感知相似性方面并不理想,人类仍然很容易察觉;其次这些对抗性扰动不够自然,导致对抗性样本与现实世界中出现的真实样本不同。
因此,不受限制的对抗性攻击开始出现,使用不受限制但自然的变化来取代小的lp扰动,更加具有现实意义。现有的不受限制的对抗性攻击基于形状、纹理和颜色等图像内容生成对抗样本。
考虑到上述原因,作者认为理想的无限制攻击应该满足三个标准:i)它需要保持人类视觉上的不可察觉性和图像的真实感;ii)攻击内容应该是多样化的,允许不受限制地修改图像内容,如纹理和颜色,同时确保语义一致性;iii)对抗性样本应该具有高攻击性能,以便它们可以在不同模型之间传输。
为了缩小当前无限制攻击与理想无限制攻击的差距,作者提出了一种无限制攻击框架------ Content-based Unre- stricted Adversarial Attack 。首先将图像映射到低维流形上,这个低维流形由生成模型表示,并表示为潜在空间;随后沿着低维流形可以生成更加多样化的图像,优化这个潜在空间的对抗目标可以生成更加多样化的对抗内容。
流形假设 (Manifold Hypothesis):高维的自然数据(如所有可能的自然图像)实际上分布在一个嵌入在高维空间中的低维流形上。
直观理解:想象所有可能的像素组合构成了一个巨大的高维空间。在这个空间中,绝大多数随机像素点看起来只是噪点,只有极少数点构成了我们认识的"自然图像"。这些"自然图像"点并不是均匀分布的,而是聚集在一些特定的、连续的曲面或结构上。这些结构就是低维流形。
意义:如果你在这个流形上移动,生成的图像始终是自然的;如果你离开了这个流形,图像就会变得不自然或充满噪点。
文章贡献点:
- 提出了一种基于内容的无限制对抗攻击的新型攻击框架,它利用高容量(模型处理大量或复杂性信息的能力)和对齐的低维流形来生成内容更加多样化和自然的对抗样本。
- 实现了不受限制的内容攻击,通过使用图像潜层映射和对抗性潜层优化技术,优化了扩散模型中的潜层空间,生成高迁移性的无限制对抗样本。
- 文本提示生成 :使用图像描述模型(如 BLIP)为输入图像生成文本提示 \(P\),作为生成模型的条件。
- 图像潜在映射 (ILM) :
- 利用 DDIM 的逆向采样过程,将原始图像映射为潜在噪声 \(z_T\) 和对应的空文本嵌入 (Null Text Embedding)。这一步是为了精确重建原图,确保后续优化是从原图出发的。
- 对抗潜在优化 (ALO) :
- 在潜在噪声 \(z_T\) 上添加扰动 \(\delta\)。
- 使用跳过梯度 (Skip Gradient)技巧来近似计算梯度,解决扩散模型反向传播内存溢出的问题。
- 使用可微边界处理确保生成的图像像素值在合法范围内。
- 迭代优化 \(\delta\),使得生成的图像 \(x_{adv}\) 既能欺骗分类器,又保持自然。
- 生成对抗样本 :将优化后的潜在向量 \(z_T + \delta\) 输入扩散模型,生成最终的对抗图像。
原文给出的目标函数如下:
\[\begin{aligned} \max_{\delta} \quad & \mathcal{L}(\mathcal{F}_\theta(\bar{z}0), y) \\ \text{s.t.} \quad & \|\delta\|\infty \leq \kappa, \quad \bar{z}_0 = \Omega(z_T + \delta, \dots) \quad \text{and} \quad \bar{z}_0 \text{ is natural} \end{aligned} \]
具体损失函数 \(\mathcal{L}\) 由两部分组成:
\[\mathcal{L} = \mathcal{L}{ce} + \beta \mathcal{L}{mse} \]
对抗损失 (\(\mathcal{L}_{ce}\))
\[\mathcal{L}{ce} = \text{CrossEntropy}(\mathcal{F}\theta(x_{adv}), y_{true}) \]
\(\mathcal{F}\theta\):受害者分类模型。
\(x{adv}\):生成的对抗样本。
\(y_{true}\):原始图像的正确标签。
- 原理 :
通常训练模型时,我们要最小化交叉熵,让预测概率集中在正确标签上。但在攻击时,我们要最大化这个值。这意味着我们要让模型对正确标签 \(y_{true}\) 的预测概率尽可能低,从而迫使模型将其分类为其他错误类别。
一致性损失 (\(\mathcal{L}_{mse}\))
虽然是无限制攻击,但我们需要确保生成的图像在内容上与原图保持高度一致。
-
公式:
\[\mathcal{L}{mse} = - \| \text{Encode}(x{adv}) - \text{Encode}(x_{orig}) \|_2^2 \]
(原文描述为 \(\mathcal{L} = \mathcal{L}{ce} + \beta \mathcal{L}{mse}\),且目标是最大化 \(\mathcal{L}\)。因此,这里的 \(\mathcal{L}{mse}\) 实际上是一个负的距离项 ,或者理解为我们在最大化 \(\mathcal{L}{ce}\) 的同时,通过 \(\beta\) 权重来惩罚过大的差异。相似度越高,该项值越大。)
-
参数 \(\beta\) 的作用:
- \(\beta\) 很大:模型会优先保证图像不变,攻击效果变弱。
- \(\beta\) 很小:模型会优先追求攻击成功,图像可能会发生较大的纹理或颜色变化。
- 平衡点 :作者通过调整 \(\beta\),在"攻击成功率"和"视觉相似度"之间找到最佳平衡。
-
为什么用 MSE 而不是 \(l_p\)?
这里的一致性通常是在特征空间或潜在空间计算的,而不是像素空间。这允许像素值有较大变化(如光照、颜色),只要高层语义特征(如物体的形状、结构)保持一致即可。这正是"无限制攻击"的精髓。
DiffAttack
此外,DiffAttack引入一种基于扩散的创新攻击方法,通过潜在特征优化绕过现有净化防御。
最近的一种防御方法(diffusion-based purification,基于扩散的净化)利用扩散模型来净化输入图像并实现最先进的鲁棒性。根据防御使用的扩散模型的类型,基于扩散的净化可以分为基于分数的净化(使用基于分数的扩散模型)和基于DDPM的净化(去噪扩散概率模型(DDPM))。
最近的研究表明,由于梯度消失/爆炸、高内存成本和大随机性的挑战,即使是最先进的攻击也无法打破这些防御。 因此本文的目的是探索这种基于扩散的净化防御的漏洞,并设计一种针对基于扩散的净化的更有效和高效的自适应攻击,这将有助于更好地理解扩散过程的特性并激发未来的防御。
预备知识
有两种类型的基于扩散的净化防御:基于 DDPM 的净化和基于分数的净化,它们分别利用 DDPM和基于分数的扩散模型来净化对抗样本。
用 \({\mathbf{x}t}{t=0}^T\) 表示由时间步 \(t\) 索引、扩散长度为 \(T\) 的扩散过程。
DDPM 构建了一个离散马尔可夫链 \({\mathbf{x}t}{t=0}^T\) ,其离散时间变量 \(t\) 遵循 \(p(\mathbf{x}t|\mathbf{x}{t-1}) = \mathcal{N}(\mathbf{x}t; \sqrt{1 -\beta_t}\mathbf{x}{t-1}, \beta_t\mathbf{I})\) ,其中 \(\beta_t\) 是一个正噪声尺度的序列(例如,线性调度、余弦调度 [33])。
考虑 \(\alpha_t := 1 -\beta_t\) , \(\bar{\alpha}t := \Pi{s=1}^{t}\alpha_s\) , 和
\(\sigma_{t}=\sqrt{\beta_{t}(1-\bar{\alpha}{t-1})/(1-\bar{\alpha}{t})}\) ,反向过程(即采样过程)可以表述为:
\[\mathbf{x}{t-1}=\frac{1}{\sqrt{\alpha{t}}}\left(\mathbf{x}{t}-\frac{1-\alpha {t}}{\sqrt{1-\bar{\alpha}{t}}}\epsilon{\theta}(\mathbf{x}{t},t)\right)+ \sigma{t}\mathbf{z} \]
(1)
其中 \(\mathbf{z}\) 从 \(\mathcal{N}(\mathbf{0},\mathbf{I})\) 中抽取。 \(\epsilon_{\theta}\) 由 \(\theta\) 参数化,是用于近似扩散过程中扰动 \(\epsilon\) 的模型,并通过 密度梯度损失 \(\mathcal{L}_{d}\) 进行训练:
\[\mathcal{L}{d}=\mathbb{E}{t,\epsilon}\left[\frac{\beta_{t}^{2}}{2\sigma_{t}^ {2}\alpha_{t}(1-\bar{\alpha}{t})}\|\epsilon-\epsilon{\theta}(\sqrt{\bar{\alpha}{t}}\mathbf{x}{0}+\sqrt{1-\bar{\alpha}{t}}\epsilon,t)\|{2}^{2}\right] \]
(2)
其中 \(\epsilon\) 从 \(\mathcal{N}(\mathbf{0},\mathbf{I})\) 中抽取, \(t\) 从 \([T]:=\{1,2,...,T\}\) 中均匀采样。
基于分数的扩散模型用随机微分方程(SDE)来表述扩散模型。扩散过程 \({\mathbf{x}{t}}{t=0}^{T}\) 由一个连续时间变量 \(t\in[0,1]\) 索引。扩散过程可以表述为:
\[d\mathbf{x}=f(\mathbf{x},t)dt+g(t)d\mathbf{w} \]
其中 \(f(\mathbf{x},t):\mathbb{R}^{n}\mapsto\mathbb{R}^{n}\) 是表征分布漂移的漂移系数, \(g(t)\) 是控制噪声尺度的扩散系数, \(\mathbf{w}\) 是标准的维纳过程。反向过程通过方程 (3) 的反向时间 SDE 来表征:
\[d\mathbf{x}=[f(\mathbf{x},t)-g(t)^{2}\nabla_{\mathbf{x}}\log p_{t}(\mathbf{x})]dt+g(t)d\mathbf{w} \]
(4)
其中 \(\nabla_{\mathbf{x}}\log p_{t}(\mathbf{x})\) 是时间相关的分数函数,可以用神经网络 \(\mathbf{s}{\theta}\) 近似,该网络由 \(\theta\) 参数化,并通过分数匹配损失 \(\mathcal{L}{s}\) 进行训练:
\[\mathcal{L}{s}=\mathbb{E}{t}\left[\lambda(t)\mathbb{E}{\mathbf{x}{t}|\mathbf{x}{0}}\|\mathbf{s}{\theta}(\mathbf{x}{t},t)-\nabla{\mathbf{x}{t} }\log(p(\mathbf{x}{t}|\mathbf{x}{0}))\|{2}^{2}\right] \]
(5)
其中 \(\lambda:[0,1]\to\mathbb{R}\) 是一个加权函数, \(t\) 在 \([0,1]\) 上均匀采样。
针对基于扩散的净化的规避攻击
基于扩散的净化防御利用扩散模型首先用高斯噪声扩散对抗样本,然后进行采样以消除噪声。通过这种方式,由于扩散模型的训练分布是干净的,因此希望也可以消除精心设计的对抗扰动。扩散长度(即总扩散时间步长)通常很大,并且在每个时间步长,深度神经网络用于估计数据分布的梯度。这导致了一个非常深的计算图,给攻击它带来了巨大的挑战:
- 梯度消失/爆炸:扩散模型的长采样过程导致了非常深的计算图,从而带来了梯度消失/爆炸的问题;
- 不可用的内存成本:深度计算图阻碍了梯度反向传播,需要较高的内存成本;
- 较大的随机性:扩散和采样过程引入了很大的随机性,使得计算的梯度不稳定且有噪声。
为了应对这些挑战,作者们提出提出了偏差重建损失(deviated-reconstruction loss)和分段前向-后向算法(segment-wise forwarding-backwarding algorithm),并将它们集成为一种有效且高效的攻击技术DiffAttack。
偏离重构损失
为了克服梯度爆炸/消失的问题,我们尝试在攻击过程中施加中间引导。我们提出了一个偏离重构损失,通过对抗性地在扩散和反向过程之间的样本施加差异,以在中间时间步提供有效的损失。
具体来说,由于在扩散和反向过程中生成了一系列样本,对它们施加有效损失将缓解梯度消失/爆炸的问题并有利于优化。更正式地,令 \(\mathbf{x}{t},\mathbf{x}^{\prime}{t}\) 分别表示扩散过程和反向过程中时间步 \(t\) 的样本。正式地,我们最大化偏离重构损失
\[\max\mathcal{L}{dev}=\mathbb{E}{t}[\alpha(t)\mathbb{E}{\mathbf{x}{t},\mathbf {x}^{\prime}{t}|\mathbf{x}{0}}d(\mathbf{x}{t},\mathbf{x}^{\prime}{t})] \]
(8)
其中 \(\alpha(\cdot)\) 是时间依赖的权重系数, \(d(\mathbf{x}{t},\mathbf{x}^{\prime}{t})\) 是扩散过程中的噪声图像 \(\mathbf{x}{t}\) 与反向过程中相应采样图像 \(\mathbf{x}^{\prime}{t}\) 之间的距离。对 \(t\) 的期望通过在 \([0,T]\) 中均匀采样的时间步 的结果取平均值来近似,并且计算图中浅层(即大时间步 \(t\) )的损失有助于缓解梯度消失/爆炸的问题。给定 \(\mathbf{x}{0}\) 条件下对 \(\mathbf{x}{t},\mathbf{x}^{\prime}{t}\) 的条件期望通过多次净化 \(\mathbf{x}{0}\) 并取损失的平均值来近似。
扩散过程有 T 步(比如 1000 步)。我们不可能每一步都算一遍损失,太慢了。
做法:随机挑几个时间点(比如挑第 100 步、第 500 步、第 900 步),算出它们的损失,然后取平均值。这就代表了整个过程的平均表现。
条件期望:拿着同一个对抗样本 x0重复跑好几次扩散和去噪过程(比如跑 10 次)。每次都会得到不同的 xt和 xt′,算出 10 个损失值。把这 10 个值取平均,作为最终的损失。因为过程有随机性,所以多跑几次取平均。
分段式前向-后向算法
针对基于扩散的净化的自适应攻击需要通过前向路径进行梯度反向传播。对于基于扩散的净化,内存成本随扩散长度 \(T\) 线性扩展,在实际应用中不可行。具体来说,我们提出了一种分段式前向-后向算法,它实现了关于对抗样本的攻击损失的内存高效梯度计算。
我们首先将输入 \(\mathbf{x}{0}\) 馈送到基于扩散的净化过程,并依次存储扩散过程中的中间样本 \(\mathbf{x}{1},\mathbf{x}{2},...,\mathbf{x}{T}\) 和反向过程中的 \(\mathbf{x}^{\prime}{T},\mathbf{x}^{\prime}{T-1},...,\mathbf{x}^{\prime}{0}\) 。为简化表示,对于 \(t\in[0,T-1]\) ,我们有 \(\mathbf{x}{t+1}=f_{d}(\mathbf{x}{t})\) 和 \(\mathbf{x}^{\prime}{t}=f_{r}(\mathbf{x}^{\prime}_{t+1})\) 。然后我们可以按照以下方式迭代地反向传播梯度:
\[\frac{\partial\mathcal{L}}{\partial\mathbf{x}^{\prime}{t+1}}=\frac{\partial\mathcal{L}}{\partial\mathbf{x}^{\prime}{t}}\frac{\partial\mathbf{x}^{\prime}_ {t}}{\partial\mathbf{x}^{\prime}{t+1}}=\frac{\partial\mathcal{L}}{\partial\mathbf{x}^{\prime}{t}}\frac{\partial f_{r}(\mathbf{x}^{\prime}{t+1})}{ \partial\mathbf{x}^{\prime}{t+1}} \]
(10)
在反向过程中的每个时间步 \(t\) ,我们只需要存储梯度 \(\partial\mathcal{L}/\partial\mathbf{x}^{\prime}{t}\) 、中间样本 \(\mathbf{x}^{\prime}{t+1}\) 和模型 \(f_{r}\) 来构建计算图。当我们在下一个时间步 \(t+1\) 反向传播梯度时,时间步 \(t\) 的计算图将不再被重用,因此,我们可以释放时间步 \(t\) 的图的内存。因此,在内存中,我们每个时间步 只有一个计算图段 用于梯度反向传播。我们可以类似地在扩散过程中反向传播梯度。忽略存储中间样本的内存成本(通常比计算图的内存成本小),我们的分段式前向-后向算法的内存成本为 \(\mathcal{O}(1)\) 。
- 执行前向传递并存储中间样本,
- 在内存中分配一个计算图段的内存,并使用中间样本模拟该段的前向传递,
- 通过该段反向传播梯度并释放该段的内存,
- 转到步骤 2 并考虑下一个段,直到终止。
这个梯度神奇地穿过了整个扩散净化过程( T 步去噪 + T 步加噪),我们最终得到的是:原始对抗样本 x0的梯度:\(∂L/∂x_0\)
DiffAttack 技术
具体来说,我们最大化代理损失 \(\mathcal{L}\) 作为方程 (7) 中的优化目标:
\[\max\mathcal{L}=\mathcal{L}{cls}+\lambda\mathcal{L}{dev} \]
(11)
与 \(\mathcal{L}{cls}\) 相比, \(\mathcal{L}{dev}\) 受梯度问题的影响较小,因此 \(\mathcal{L}{dev}\) 的目标可以更精确和稳定地优化,但它不能解决 \(\mathcal{L}{cls}\) 的梯度问题。另一方面, \(\mathcal{L}{dev}\) 的优化有利于 \(\mathcal{L}{cls}\) 的优化,因为 \(\mathcal{L}_{dev}\) 可以诱导图像的重构偏离,从而具有更大的误分类概率。 \(\lambda\) 控制了两个目标的平衡。小的 \(\lambda\) 会削弱偏离重构目标,使攻击更容易受到梯度消失/爆炸问题的影响,而大的 \(\lambda\) 会削弱分类损失的引导,并混淆朝向分类器决策边界的方向。
DiffAttack 从两个角度解决随机性问题:
- 如\(\mathcal{L}_{dev}\)所示,对不同时间步长的扩散和重构样本进行多次采样(好处是针对扩散过程的样本方差提供了更准确的梯度估计);
- 在所有步骤优化所有样本的扰动,包括错误分类的样本 (确保了更有效和稳定的攻击优化,因为分类的正确性在扩散净化设置的不同步骤中具有很大的方差) 。