AdvUnlearn阅读笔记:基于对抗训练的扩散模型鲁棒概念擦除
AdvUnlearn阅读笔记基于对抗训练的扩散模型鲁棒概念擦除引言概念擦除的挑战与对抗训练的必要性扩散模型如Stable Diffusion在图像生成领域取得了巨大成功但其训练数据中可能包含有害概念如暴力、色情、侵权风格导致模型可能生成不安全内容。概念擦除Concept Unlearning旨在从预训练模型中移除特定知识而无需完全重训。然而现有方法如EraseDiff、ESD存在一个致命缺陷对对抗性提示不鲁棒。攻击者可以通过精心构造的提示例如添加噪声或同义词替换轻易绕过擦除机制重新生成被禁止的概念。AdvUnlearnAdversarial Unlearning由Li等人提出核心思想是将对抗训练融入概念擦除过程使模型对对抗性扰动具有鲁棒性。本文从原理出发深入剖析其数学框架与实现细节并提供可运行代码示例。## 核心原理对抗训练与概念擦除的融合### 1. 问题形式化设扩散模型为ϵθ\epsilon_\thetaϵθ​原始概念为ccc目标擦除概念为ctargetc_{\text{target}}ctarget​。标准擦除目标为LeraseEx0,c,t[∥ϵθ(xt,c,t)−ϵref(xt,ctarget,t)∥2]\mathcal{L}_{\text{erase}} \mathbb{E}_{x_0, c, t} \left[ \|\epsilon_\theta(x_t, c, t) - \epsilon_{\text{ref}}(x_t, c_{\text{target}}, t)\|^2 \right]Lerase​Ex0​,c,t​[∥ϵθ​(xt​,c,t)−ϵref​(xt​,ctarget​,t)∥2]其中ϵref\epsilon_{\text{ref}}ϵref​是冻结的参考模型用于提供“擦除后”的预测。但此目标对输入ccc的微小扰动敏感。### 2. 对抗训练框架AdvUnlearn引入对抗性提示cadvc_{\text{adv}}cadv​定义为在原始提示上施加ℓp\ell_pℓp​范数约束的扰动cadvarg⁡max⁡∥c′−c∥p≤ϵLerase(c′)c_{\text{adv}} \arg\max_{\|c - c\|_p \leq \epsilon} \mathcal{L}_{\text{erase}}(c)cadv​arg∥c′−c∥p​≤ϵmax​Lerase​(c′)这本质上是一个最大-最小优化问题min⁡θmax⁡∥c′−c∥p≤ϵLerase(c′)\min_{\theta} \max_{\|c - c\|_p \leq \epsilon} \mathcal{L}_{\text{erase}}(c)θmin​∥c′−c∥p​≤ϵmax​Lerase​(c′)内层最大化通过投影梯度下降PGD近似求解。关键洞察对抗性提示迫使模型在擦除时考虑最坏情况从而提升鲁棒性。### 3. 算法流程1.对抗采样对每个原始提示ccc运行K步PGD生成对抗提示cadvc_{\text{adv}}cadv​。2.联合训练同时优化原始提示和对抗提示上的擦除损失。3.正则化加入原始模型预测的KL散度防止灾难性遗忘。## 关键实现细节PGD生成对抗提示对抗提示的生成在文本嵌入空间而非原始文本中执行。这是因为文本嵌入是连续向量可直接应用梯度优化。以下代码实现PGD攻击pythonimport torchimport torch.nn.functional as Fdef pgd_attack(model, ref_model, text_embeds, epsilon0.1, alpha0.01, steps10): 在文本嵌入空间上执行PGD攻击生成对抗性提示。 Args: model: 待训练的扩散模型UNet ref_model: 冻结的参考模型 text_embeds: 原始提示的CLIP文本嵌入形状为[1, 77, 768] epsilon: 扰动半径L2范数约束 alpha: PGD步长 steps: 迭代步数 Returns: adv_embeds: 对抗性文本嵌入 # 初始化对抗扰动为零 adv_embeds text_embeds.clone().detach().requires_grad_(True) for _ in range(steps): # 前向传播计算当前对抗提示下的擦除损失 noise torch.randn_like(text_embeds) # 模拟噪声输入实际需采样时间步 pred model(noise, adv_embeds, timesteptorch.tensor([500])) ref_pred ref_model(noise, text_embeds, timesteptorch.tensor([500])) loss F.mse_loss(pred, ref_pred.detach()) # 擦除损失 # 反向传播梯度 grad torch.autograd.grad(loss, adv_embeds, retain_graphFalse)[0] # 更新对抗嵌入 adv_embeds adv_embeds alpha * grad.sign() # 投影到epsilon球内L2范数约束 delta adv_embeds - text_embeds.detach() norm torch.norm(delta, p2, dim-1, keepdimTrue) delta torch.where(norm epsilon, delta / norm * epsilon, delta) adv_embeds text_embeds.detach() delta # 确保梯度跟踪 adv_embeds adv_embeds.detach().requires_grad_(True) return adv_embeds.detach()关键点注释- 攻击在连续文本嵌入空间执行而非离散词元。- 使用符号梯度grad.sign()加速收敛这在PGD中常见。- L2范数投影确保扰动不超过ϵ\epsilonϵ维持语义相似性。## 训练循环对抗擦除完整的训练循环需交替进行对抗采样和模型更新。以下代码展示核心训练步骤pythondef train_adv_unlearn(model, ref_model, dataloader, optimizer, epsilon0.1, pgd_steps5): AdvUnlearn单轮训练函数。 Args: model: 待训练的UNet ref_model: 冻结的参考模型 dataloader: 包含原始提示和图像的数据加载器 optimizer: 优化器如AdamW epsilon: 对抗扰动半径 pgd_steps: PGD迭代步数 Returns: avg_loss: 平均损失值 model.train() total_loss 0.0 for batch in dataloader: # batch包含: text_embeds, images, timesteps text_embeds batch[text_embeds].cuda() images batch[images].cuda() timesteps batch[timesteps].cuda() # 1. 生成对抗提示 with torch.enable_grad(): adv_embeds pgd_attack( model, ref_model, text_embeds, epsilonepsilon, alphaepsilon/pgd_steps/2, stepspgd_steps ) # 2. 计算原始提示的擦除损失 noise torch.randn_like(images) noisy_images model.q_sample(images, timesteps, noise) pred_clean model(noisy_images, text_embeds, timesteps) pred_ref ref_model(noisy_images, text_embeds, timesteps) loss_clean F.mse_loss(pred_clean, pred_ref.detach()) # 3. 计算对抗提示的擦除损失 pred_adv model(noisy_images, adv_embeds, timesteps) loss_adv F.mse_loss(pred_adv, pred_ref.detach()) # 4. 总损失可加入KL正则化项 loss loss_clean loss_adv # 5. 反向传播与优化 optimizer.zero_grad() loss.backward() torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm1.0) optimizer.step() total_loss loss.item() return total_loss / len(dataloader)核心设计思想- 使用相同的噪声和参考预测计算两个损失确保公平比较。- 对抗提示的梯度计算需要torch.enable_grad()因为pgd_attack内部可能使用了detach()。- 梯度裁剪防止训练不稳定这在对抗训练中尤为重要。## 实验验证与效果分析### 鲁棒性提升原理AdvUnlearn的鲁棒性来源于对抗样本的多样性。在训练过程中模型被迫处理来自不同方向的对抗扰动PGD迭代产生从而学习到更平滑的损失景观。数学上这等价于在经验风险最小化中引入局部Lipschitz连续性约束Ec[max⁡∥c′−c∥≤ϵL(c′)]≤Ec[L(c)]ϵ⋅Ec[∥∇cL(c)∥]\mathbb{E}_{c} \left[ \max_{\|c-c\|\leq\epsilon} \mathcal{L}(c) \right] \leq \mathbb{E}_{c} [\mathcal{L}(c)] \epsilon \cdot \mathbb{E}_{c} \left[ \|\nabla_c \mathcal{L}(c)\| \right]Ec​[∥c′−c∥≤ϵmax​L(c′)]≤Ec​[L(c)]ϵ⋅Ec​[∥∇c​L(c)∥]对抗训练实际上最小化了右侧上界从而控制梯度范数。### 与标准方法的对比| 方法 | 干净提示FID ↓ | 对抗提示擦除成功率 ↑ | 计算开销 ||------|--------------|---------------------|---------|| ESD | 12.3 | 45% | 1x || AdvUnlearn | 13.1 | 92% | 3x |AdvUnlearn在对抗场景下将擦除成功率从45%提升至92%代价是轻微的图像质量下降FID增加0.8和3倍训练时间。## 总结AdvUnlearn通过将对抗训练引入扩散模型概念擦除有效解决了现有方法对对抗性提示脆弱的根本问题。其核心贡献在于1.在文本嵌入空间执行PGD攻击生成语义保持但具有误导性的对抗提示。2.最大-最小优化框架同时优化原始和对抗样本上的擦除损失。3.理论保证对抗训练等价于梯度正则化提升模型局部平滑性。实践表明该方法在保持图像生成质量的同时显著增强了擦除机制的鲁棒性。未来的方向包括探索更高效的对抗采样策略如单步对抗训练以及将方法扩展到多概念擦除场景。对于开发者而言理解并应用AdvUnlearn的思想是构建安全可控生成模型的重要一步。

相关新闻

从技术债到架构红利:RabbitMQ 4.2.0的元数据存储范式转移

从技术债到架构红利:RabbitMQ 4.2.0的元数据存储范式转移

从技术债到架构红利:RabbitMQ 4.2.0的元数据存储范式转移 【免费下载链接】rabbitmq-server Open source RabbitMQ: core server and tier 1 (built-in) plugins 项目地址: https://gitcode.com/gh_mirrors/ra/rabbitmq-server 在分布式消息系统的演进历程中…

2026/7/26 21:57:28 阅读更多 →
Drift数据库开发实战:类型安全的SQLite解决方案

Drift数据库开发实战:类型安全的SQLite解决方案

Drift数据库开发实战:类型安全的SQLite解决方案 在现代移动应用开发中,数据持久化是一个核心需求。传统SQLite开发常因手写SQL语句的类型安全问题而引发运行时错误。Drift(原Moor)作为Dart生态中的ORM框架,通过编译时类…

2026/7/26 21:57:27 阅读更多 →
《Windows 11 从入门到精通》2.1.3:手动离线升级——使用 ISO 保留文件与应用

《Windows 11 从入门到精通》2.1.3:手动离线升级——使用 ISO 保留文件与应用

🔥 个人主页: 杨利杰YJlio ❄️ 个人专栏: 《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》 《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》 《超简单:用Python让Excel飞起来》…

2026/7/26 21:56:27 阅读更多 →

最新新闻

FastGPT开源AI平台:企业级智能问答系统搭建指南

FastGPT开源AI平台:企业级智能问答系统搭建指南

1. 项目概述:FastGPT能为你带来什么? 最近半年,大语言模型(LLM)的应用开发呈现爆发式增长。FastGPT作为一款开源的AI知识平台构建工具,允许开发者基于现有大模型快速搭建垂直领域的智能问答系统。我在三个企…

2026/7/26 22:17:39 阅读更多 →
COM3D2.MaidFiddler:打破游戏界限的终极女仆编辑器

COM3D2.MaidFiddler:打破游戏界限的终极女仆编辑器

COM3D2.MaidFiddler:打破游戏界限的终极女仆编辑器 【免费下载链接】COM3D2.MaidFiddler Maid Fiddler for COM3D2 -- a real-time value editor for COM3D2 项目地址: https://gitcode.com/gh_mirrors/co/COM3D2.MaidFiddler 你是否曾经玩COM3D2时觉得游戏中…

2026/7/26 22:17:39 阅读更多 →
解释性编程:从AI助手到开发效率提升的实践指南

解释性编程:从AI助手到开发效率提升的实践指南

1. 从手动编码到智能解释:开发效率的范式转变在软件开发领域,我们正经历着从"亲自动手编码"到"向计算机解释需求"的根本性转变。这种变化不仅体现在AI编程助手的普及,更深入到开发流程的各个环节。作为一名长期奋战在一线…

2026/7/26 22:17:39 阅读更多 →
开源AI代理Hermes 0.8核心架构与生产实践

开源AI代理Hermes 0.8核心架构与生产实践

1. 项目概述 Hermes Agent 0.8是近期开源AI代理领域的一个重要里程碑版本。作为一名长期跟踪自主代理技术发展的从业者,我在实际生产环境中测试这个版本后,发现它在任务规划、工具调用和长期记忆等方面带来了显著提升。这次更新不仅仅是功能迭代&#xf…

2026/7/26 22:17:39 阅读更多 →
GLM-OCR:轻量级多模态光学字符识别框架解析

GLM-OCR:轻量级多模态光学字符识别框架解析

1. 项目概述GLM-OCR是一个基于多模态学习的轻量级光学字符识别(OCR)框架,它在保持模型轻量化的同时实现了识别精度的显著提升。这个项目最吸引我的地方在于它巧妙地将视觉特征与语言特征相结合,解决了传统OCR系统在复杂场景下识别…

2026/7/26 22:17:39 阅读更多 →
AI自动化剪辑一体机:电商短视频高效生产方案

AI自动化剪辑一体机:电商短视频高效生产方案

1. 项目背景与需求拆解去年帮一家电商公司做效率优化时,发现他们内容团队5个人全职负责短视频剪辑和配音工作,每月人力成本接近4万元。仔细分析工作流后发现,70%的时间都花在重复性操作上:统一格式转换、基础剪辑、标准化配音生成…

2026/7/26 22:16:39 阅读更多 →

日新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

月新闻