查看原文
其他

​生成扩散模型漫谈:条件控制生成结果

苏剑林 PaperWeekly 2022-11-18


©PaperWeekly 原创 · 作者 | 苏剑林
单位 | 追一科技
研究方向 | NLP、神经网络

前面的几篇文章都是比较偏理论的结果,这篇文章我们来讨论一个比较有实用价值的主题——条件控制生成。

作为生成模型,扩散模型跟 VAE、GAN、flow 等模型的发展史很相似,都是先出来了无条件生成,然后有条件生成就紧接而来。无条件生成往往是为了探索效果上限,而有条件生成则更多是应用层面的内容,因为它可以实现根据我们的意愿来控制输出结果。从 DDPM 至今,已经出来了很多条件扩散模型的工作,甚至可以说真正带火了扩散模型的就是条件扩散模型,比如脍炙人口的文生图模型 DALL·E 2 [1]、Imagen [2]

在这篇文章中,我们对条件扩散模型的理论基础做个简单的学习和总结。



技术分析
从方法上来看,条件控制生成的方式分两种:事后修改(Classifier-Guidance)和事前训练(Classifier-Free)。
对于大多数人来说,一个 SOTA 级别的扩散模型训练成本太大了,而分类器(Classifier)的训练还能接受,所以就想着直接复用别人训练好的无条件扩散模型,用一个分类器来调整生成过程以实现控制生成,这就是事后修改的 Classifier-Guidance 方案;而对于“财大气粗”的 Google、OpenAI 等公司来说,它们不缺数据和算力,所以更倾向于往扩散模型的训练过程中就加入条件信号,达到更好的生成效果,这就是事前训练的 Classifier-Free 方案。

Classifier-Guidance 方案最早出自《Diffusion Models Beat GANs on Image Synthesis》[3],最初就是用来实现按类生成的;后来《More Control for Free! Image Synthesis with Semantic Diffusion Guidance》[4] 推广了“Classifier”的概念,使得它也可以按图、按文来生成。Classifier-Guidance 方案的训练成本比较低(熟悉 NLP 的读者可能还会想起与之很相似的 PPLM 模型),但是推断成本会高些,而且控制细节上通常没那么到位。

至于 Classifier-Free 方案,最早出自《Classifier-Free Diffusion Guidance》[5],后来的 DALL·E 2 [1]、Imagen [6] 等吸引人眼球的模型基本上都是以它为基础做的,值得一提的是,该论文上个月才放到 Arxiv 上,但事实上去年已经中了 NeurIPS 2021。应该说,Classifier-Free 方案本身没什么理论上的技巧,它是条件扩散模型最朴素的方案,出现得晚只是因为重新训练扩散模型的成本较大吧,在数据和算力都比较充裕的前提下,Classifier-Free 方案变现出了令人惊叹的细节控制能力。



条件输入

说白了,Classifier-Free 方案就是训练成本大,本身“没什么技术含量”,所以接下来的主要篇幅都是 Classifier-Guidance 方案,而 Classifier-Free 方案则是在最后简单介绍一下。

经过前面一系列文章的分析,想必读者已经知道,生成扩散模型最关键的步骤就是生成过程 的构建,而对于以 为输入条件的生成来说,无非就是将 换成 而已,也就是说生成过程中增加输入 。为了重用已经训练好的无条件生成模型 ,我们利用贝叶斯定理得:

在每一项上面补上条件 ,就得到:

注意,在前向过程中, 是由 加噪声得到的,噪声不会对分类有帮助,所以 的加入对分类不会有任何收益,因此有 ,从而:




近似分布

对于已经看过《生成扩散模型漫谈:一般框架之SDE篇》的读者,大概会觉得接下来的过程似曾相识。不过即便没读过也不要紧,下面我们依旧完整推导一下。

足够大时, 的方差足够小,也就是说只有 很接近时概率才会明显大于0。反过来也是成立的,即也只有 很接近时 才明显大于0,我们只需要重点考虑这个范围内的概率变化。为此,我们用泰勒展开:

严格来讲还有一项关于 的变化项,但是那一项跟 无关,属于不影响 概率的常数项,因此我们没有写出。假设原来有 ,那么此时近似地有:
从这个结果可以看出, 近似于 ,所以只需要把生成过程的采样改为:
这就是 Classifier-Guidance 方案的核心结果。值得注意的是,本文的推导结果跟原论文略有不同,原论文新增项是:
也就是梯度项在 处的结果而非 处,而一般情况下 的零阶近似正是 ,所以两者结果是差不多的。



梯度缩放
原论文(《Diffusion Models Beat GANs on Image Synthesis》[3])发现,往分类器的梯度中引入一个缩放参数 ,可以更好地调节生成效果:

时,生成过程将使用更多的分类器信号,结果将会提高生成结果与输入信号 的相关性,但是会相应地降低生成结果的多样性;反之,则会降低生成结果与输入信号之间的相关性,但增加了多样性。
怎么从理论上理解这个参数呢?原论文提出将它理解为通过幂操作来提高分布的聚焦程度,即定义:
随着 的增加, 的预测会越来越接近 one hot 分布,用它来代替 作为分类器做 Classifier-Guidance,生成过程会倾向于挑出分类置信度很高的样本。
然而,这个角度虽然能提供一定的参考价值,但其实不完全对,因为:
原论文错误地认为 是一个常数,所以 ,但事实上 时, 会显式地依赖于 。笔者也继续思考了一下有没有什么补救方法,但很遗憾没什么结果,仿佛只能很勉强地认为 时(此时 )的梯度性质能近似地泛化到 的情形。



相似控制
事实上,理解 的最佳方案,就是放弃从贝叶斯定理的式(2)和式(3)来理解 ,而是直接定义:
其中 是生成结果 与条件 的某个相似或相关度量。在这个角度下, 直接融于 的定义中,直接控制结果与条件的相关性,当 越大,模型会倾向于生成跟 越相关的
为了进一步得到可采样的近似结果,我们可以在 处(也可以在 ,跟前面类似)展开:
假设此近似程度已经足够,那么除去与 无关的项,我们得到:
跟前面一样,代入 ,配方后得到:
这样一来,我们就不需要纠结 的概率意义,而是只需要直接定义度量函数 ,这里的 也不再是仅限于“类别”,也可以是文本、图像等任意输入信号,通常的处理方式是用各自的编码器将其编码为特征向量,然后用 cos 相似度:
要指出的是,中间过程的 是带高斯噪声的,所以编码器 一般不能直接调用干净数据训练的编码器,而是要用加噪声后的数据对它进行微调才比较好。此外,如果做风格迁移的,通常则是用 Gram 矩阵距离而不是 cos 相似度,这些都看场景发挥了。以上便是论文《More Control for Free! Image Synthesis with Semantic Diffusion Guidance》[4] 的一系列结果,更多细节可以自行参考原论文。



连续情形
经过前面的推倒,我们得到均值的修正项为 ,它们都有一个共同特点,就是 时,修正项也等于0,修正就失效了。
那么生成过程的 可以等于 0 吗?肯定可以,比如《生成扩散模型漫谈(四):DDIM = 高观点DDPM》介绍的 DDIM,就是方差为 0 的生成过程,这种情况下应该怎样做控制生成呢?此时我们需要用到《生成扩散模型漫谈(六):一般框架之ODE篇》介绍的基于 SDE 的一般结果了,在里边我们介绍到,对于前向 SDE:

对应的最一般的反向 SDE 为:

这里允许我们自由选择反向方差 ,DDPM、DDIM 都可以认为是它的特例,其中 时就是一般化的 DDIM。可以看到,反向 SDE 跟输入有关的就是 ,如果要做条件生成,自然是要将它换成 ,然后利用贝叶斯定理,有:

在一般的参数化下有 ,因此:

这就意味着,不管生成方差是多少,我们只需要用 代替 就可以实现条件控制生成了。因此,在 SDE 的统一视角下,我们可以非常简单而直接地得到 Classifier-Guidance 方案的最一般结果。



无分类器

最后,我们来简单介绍一下 Classifier-Free 方案。其实很简单,它就是直接定义:


沿用前面 DDPM 的几篇文章的结果, 一般参数化为:
训练的损失函数就是:
它的优点是在训练过程中就引入了额外的输入 ,理论上输入信息越多越容易训练;它的缺点也是在训练过程中就引入了额外的输入 ,意味着每做一组信号控制,就要重新训练整个扩散模型。
特别地,Classifier-Free 方案也模仿 Classifier-Guidance 方案加入了 参数的缩放机制来平衡相关性与多样性。具体来说,式(8)的均值可以改写成:

Classifier-Free 方案相当于直接用直接用模型拟合了 ,那么类比上式,我们也可以在 Classifier-Free 方案中引入 参数,用:

代替 来做生成。那无条件的 怎么来呢?我们可以新引入一个特定的输入 ,它对应的目标图像为全体图像,加到了模型的训练中,这样我们就可以认为 了。



文章小结

本文简单介绍了建立条件扩散模型的相关理论结果,主要包含事后修改(Classifier-Guidance)和事前训练(Classifier-Free)两种方案。其中,前者不需要重新训练扩散模型,可以低成本实现简单的控制;后者需要重新训练扩散模型,成本较大,但可以实现比较精细的控制。

参考文献

[1] https://arxiv.org/abs/2204.06125

[2] https://arxiv.org/abs/2205.11487

[3] https://arxiv.org/abs/2105.05233

[4] https://arxiv.org/abs/2112.05744

[5] https://arxiv.org/abs/2207.12598

[6] https://kexue.fm/archives/9257



更多阅读



#投 稿 通 道#

 让你的文字被更多人看到 



如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。


总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 


PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。


📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算


📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿


△长按添加PaperWeekly小编




🔍


现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧


·

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存