如下图所示,当给定文字提示:「A photo of a warthog」,Stable Diffusion 模型能生成一张相应的、清晰逼真的疣猪照片。然而,当我们对这个文本提示稍作修改,变为:「A photo of a warthog and a traitor」,说好的疣猪呢?怎么变成车了?
一起再来看一看接下来的几个例子,这些又是什么新物种?
是什么原因导致了这些奇怪的现象?这些生成失败的案例都来自于近期发布的一篇论文《Stable Diffusion is Unstable》:
- 论文地址:https://arxiv.org/abs/2306.02583
在这篇论文中首次提出了一种基于梯度的文本到图像模型的对抗算法。这种算法能够高效且有效地生成大量的攻击性文本提示,能够有效的发掘 Stable diffusion 模型的不稳定之处。这个算法在短文本提示中实现了 91.1% 的攻击成功率,而在长文本提示中,攻击成功率也达到了 81.2%。此外,该算法为研究文本到图像生成模型的失败模式提供了丰富的案例,为图片生成可控性研究奠定了基础。
基于该算法生成出的大量生成失败案例,研究者总结出四点生成失败的原因,分别是:
- 生成速度的差异
- 粗粒度特征的相似性
- 单词的多义性
- 词语在 prompt 中的位置
生成速度的差异
当一个提示(prompt)包含多个生成目标时,常常会遇到某个目标在生成过程中消失的问题。理论上讲,同一个提示内的所有目标都应该共享同一个初始噪声。如图 4 所示,研究者们在固定初始噪声的条件下,生成了 ImageNet 上的一千个类别目标。他们将每个目标生成的最后一张图像作为参考图像,并计算了在每个时间步长上生成的图像与最后一步生成的图像的结构相似性指数(SSIM)得分,以此展示了不同目标生成速度的差异。
粗粒度特征的相似性
在扩散生成过程中,研究者发现,当两类目标存在全局或局部的粗粒度特征相似性时,会在计算交叉注意力(cross attention)权重时出现问题。这是因为这两个目标名词可能会同时关注同一张图片的同一个区块,从而产生特征纠缠的现象。例如,在图 6 中,羽毛(feather)和银三文鱼(silver salmon)在粗粒度特征上具有一定的相似性,这导致羽毛可以在基于银三文鱼的第八步生成过程中继续完成其生成任务。而对于没有纠缠的两类目标,比如银三文鱼和魔术师(magician),魔术师就无法在基于银三文鱼的中间步骤图像上完成其生成任务。
一词多义
在这一章节中,研究者们深入探索了当一个词语具有多重含义时的生成情况。他们的发现是,如果没有任何外界的扰动,生成的图像通常会按照该词语的某一特定含义来呈现。以 「warthog」(疣猪)为例,在图 A4 中的第一行就是根据这个词语 「疣猪」这种动物的含义进行生成的。
然而,研究者们也发现,当在原始 prompt 中注入其他词语时,就可能会引发语义的偏移。例如,当在描述 「warthog」的提示中引入了词语 「traitor」(叛徒),生成的图像内容可能就会偏离原来的 「疣猪」含义,产生全新的内容。
词语在 prompt 中的位置
在图 10 中,研究者观察到了一个有趣的现象。虽然从人类的视角来看,那些不同顺序排列的 prompt 大体上含义相同,都是在描述一个既有猫,又有木屐和手枪的图片。然而,对于语言模型,也就是 CLIP 文本编码器来说,词语的顺序在一定程度上影响了其对文本的理解,这种影响反过来又会改变生成图片的内容。这种现象说明,尽管我们的描述在语义上是一致的,但模型却可能因为词语的顺序不同而产生不同的理解和生成结果。这不仅揭示了模型处理语言和理解语义的方式与人类存在差异,同时也提示我们在设计和使用这类模型时,需要更加考虑词语顺序的影响。
模型结构
如下图 1 所示,在不改变提示中原本目标名词的前提下,研究者通过学习 Gumbel Softmax 分布,将单词替换或扩展的离散过程连续化,从而确保扰动生成的可微分性,生成图像后,使用 CLIP 分类器和 margin loss 来优化 ω,旨在生成 CLIP 无法正确分类的图像,为了确保攻击性提示与干净提示具有一定的相似性,研究着近一步使用了语义相似性约束和文本流利度约束。
一旦学会了这个分布学会后,该算法能够针对同一个干净的文本提示采样出多个具有攻击效果的文本提示。
更多细节请见原文。