研究方向 |
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」
·
返回搜狐,查看更多
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
发布于:
山西省