条件控制生成扩散模型

date
Mar 18, 2023
Last edited time
Mar 18, 2023 11:44 AM
status
Published
slug
条件控制生成扩散模型
tags
DL
CV
summary
转载
type
Post
Field
Plat

技术分析

从方法上来看,条件控制生成的方式分两种:事后修改(Classifier-Guidance)和事前训练(Classifier-Free)。
对于大多数人来说,一个 SOTA 级别的扩散模型训练成本太大了,而分类器(Classifier)的训练还能接受,所以就想着直接复用别人训练好的无条件扩散模型,用一个分类器来调整生成过程以实现控制生成,这就是事后修改的 Classifier-Guidance 方案;而对于 “财大气粗” 的 Google、OpenAI 等公司来说,它们不缺数据和算力,所以更倾向于往扩散模型的训练过程中就加入条件信号,达到更好的生成效果,这就是事前训练的 Classifier-Free 方案。
Classifier-Guidance 方案最早出自《Diffusion Models Beat GANs on Image Synthesis》,最初就是用来实现按类生成的;后来《More Control for Free! Image Synthesis with Semantic Diffusion Guidance》推广了 “Classifier” 的概念,使得它也可以按图、按文来生成。Classifier-Guidance 方案的训练成本比较低(熟悉 NLP 的读者可能还会想起与之很相似的 PPLM 模型),但是推断成本会高些,而且控制细节上通常没那么到位。
至于 Classifier-Free 方案,最早出自《Classifier-Free Diffusion Guidance》,后来的 DALL·E 2Imagen 等吸引人眼球的模型基本上都是以它为基础做的,值得一提的是,该论文上个月才放到 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》)发现,往分类器的梯度中引入一个缩放参数 ,可以更好地调节生成效果:
时,生成过程将使用更多的分类器信号,结果将会提高生成结果与输入信号 的相关性,但是会相应地降低生成结果的多样性;反之,则会降低生成结果与输入信号之间的相关性,但增加了多样性。
怎么从理论上理解这个参数呢?原论文提出将它理解为通过幂操作来提高分布的聚焦程度,即定义
随着 的增加, 的预测会越来越接近 one hot 分布,用它来代替 作为分类器做 Classifier-Guidance,生成过程会倾向于挑出分类置信度很高的样本。
然而,这个角度虽然能提供一定的参考价值,但其实不完全对,因为
原论文错误地认为 是一个常数,所以 ,但事实上 时, 会显式地依赖于 。笔者也继续思考了一下有没有什么补救方法,但很遗憾没什么结果,仿佛只能很勉强地认为
时(此时 )的梯度性质能近似地泛化到 的情形。

相似控制

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

连续情形

经过前面的推倒,我们得到均值的修正项为 ,它们都有一个共同特点,就是 时,修正项也等于 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)两种方案。其中,前者不需要重新训练扩散模型,可以低成本实现简单的控制;后者需要重新训练扩散模型,成本较大,但可以实现比较精细的控制。

© Lazurite 2021 - 2024