1. 先聊点实在的:为什么“对抗样本”盯上了扩散模型
扩散模型这两年是AIGC的顶梁柱,从文生图到视频生成,哪哪儿都有它。尤其是潜在扩散模型(LDM)这类架构,把像素空间压缩到隐空间再做扩散,效率高、效果稳,成了众多线上服务的基础。你可能刷到过“用扩散模型生成动漫头像”这类应用,看起来就是个画图工具,但只要一个输入框暴露在外部,背后就藏着一整套安全攻防问题。
对抗样本这个词不算新鲜了,在分类任务里,给图片加一层肉眼看不见的噪声,就能让模型把猫认成狗。这类攻击手段早就在图像识别、人脸验证这些场景里被大量研究。但扩散模型的输入输出形态和分类器不太一样,它的输出是一张完整生成的图,攻击目的也从“让模型判错”变成了“让模型生成错的东西”。这个差异非常关键,导致很多传统攻击方法不能直接搬过来用,也是“扩散模型对抗样本”能单独成为一个研究方向的原因。
这个内容适合谁参考呢?如果你是做AIGC安全、鲁棒性评测,或者想评估自己的扩散模型部署方案会不会被人“带节奏”,那这套经典baselines值得摸一遍。就算你只是跑开源代码做实验的研究生,了解一下这些baselines的设计思路,也会对你设计自己的评测方案很有帮助。
我曾经把主流baselines挨个复现过一轮,实操中踩了不少坑。这篇东西不是教科书复述,而是把“这些baseline到底在干什么、它们之间的关系、怎么在真实代码里跑起来、以及容易翻车的点”讲清楚。看完之后你能得到一份可以直接索引的baseline清单,还有一套拿来即用的实验框架思路。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 先做思想准备:扩散模型的对抗攻击,到底攻击的是哪个环节
想弄懂baselines,先得弄明白攻击对象是什么。扩散模型不是单块“识别模型”,它是一个包含文本编码器、UNet(或者DiT)、变分自编码器解码器的生成系统。文本进来以后,不是直接被模型“理解”,而是一层层变换,最后才变成图像。攻击者想干扰这个流程,必须搞清楚自己到底在哪个环节下手。
2.1 攻击链路:能下手的地方,比你想的多
- 文本编码器阶段:你对输入的一段文字做改写、插入不可见扰动,攻击权重通常落在CLIP文本编码器上。这种扰动不是直接加在像素上的,而是加在文字embedding层面。
- 隐空间阶段:潜在扩散模型的核心在latent space。如果攻击者能看到(或猜到)编码器输出的隐向量,他可以对隐向量做对抗扰动,称为latent-level攻击。
- 解码器阶段:生成的图像已经是一张RGB图后,再对它做像素级修改。这个更像传统对抗样本,但要考虑“改完之后图看起来还是不是原图”的问题。
- 条件控制阶段:如果是用ControlNet之类的结构控制生成,攻击还可以存在于姿态骨架、线稿等条件输入上。
大多数baseline把火力集中在隐空间和text embedding上,因为这两个地方“性价比”最高——扰动小、影响大,而且跟扩散模型本身的采样过程耦合紧密。纯像素空间攻击往往扰动会很大,因为解码器本身会把部分输入变化给“吸收”掉,导致攻击成功率不佳。
2.2 威胁模型:白盒、黑盒和迁移攻击的差异
威胁模型决定了你能拿到多少信息。白盒场景下,攻击者拥有模型全部信息,包括权重、梯度,可以放心做梯度反传;黑盒场景下,攻击者只能通过查询接口获取生成结果,无法直接算梯度;还有一种“半黑盒”就是迁移攻击,攻击者先攻击一个替代模型,然后把扰动拿到目标模型上去试。
扩散模型的黑盒攻击成本极高:你每查询一次要做一次完整采样,一次采样几十步,如果模型部署在远端,一次查询可能要等好几秒,甚至几天才能跑完一次攻击。所以很多学术baseline只在白盒或者迁移设置下做评测,这是现实约束,不是偷懒。
如果你是工程上做防护评测,我的建议是先把白盒测试跑好,再考虑迁移和黑盒。因为白盒能反映出模型攻击面上限,若白盒都攻不动,那黑盒大概率也稳。
2.3 攻击目标的细分:无目标攻击和有目标攻击
- 无目标攻击:只要让生成结果偏离“正常内容”就算攻击成功。比如本来生成一张猫的图,加了对抗扰动后,生成出来的图看起来像“猫+噪点混合体”或者“扭曲的猫”,语义不再是正常猫。
- 有目标攻击:攻击者希望模型生成某个特定内容,比如说生成一张图,模型认为是“高质量人脸”,但实际内容被定向改成了“狗脸”或“黄色图片”。这种难度更大,因为你需要让对抗扰动的方向与目标语义对齐。
经典评测中,无目标攻击用得更多,因为可量化性好——算FID、LPIPS、CLIP Score就能判断“偏离程度”。有目标攻击需要定义目标Embedding,就像给模型“下命令
