“强基固本,行稳致远”,科学研究离不开理论基础,人工智能学科更是需要数学、物理、神经科学等基础学科提供有力支撑,为了紧扣时代脉搏,我们推出“强基固本”专栏,讲解AI领域的基础知识,为你的科研学习提供助力,夯实理论基础,提升原始创新能力,敬请关注。
地址:https://zhuanlan.zhihu.com/p/582880086
这篇文章主要比较一下扩散模型的引导生成的三种做法的区别。它们分别是用显式分类器引导生成的做法,用隐式无分类器引导的做法和用 CLIP 计算跨模态间的损失来引导生成的做法。1. 分类器引导生成
我们知道扩散模型的前向扩散过程和后向的去噪过程都可以用一个随机微分方程来描述,并且其中后向去噪时我们事实上通过一个神经网络来拟合当前输入关于原数据分布的梯度,来将一个先验分布(如高斯噪声)里采样出的点逐渐推进到数据分布里(具体联系可以参考笔者的上一篇笔记:扩散模型与能量模型,Score-Matching 和 SDE,ODE 的关系https://zhuanlan.zhihu.com/p/576779879)。既然我们知道后向生成可以看成是一个 MCMC 采样过程,而其中实际每一步的转移方程都是沿着往数据分布的梯度方向迈进,且该方向由我们神经网络的输出来拟合,那么推出分类器引导的形式就十分自然了。首先 DDPM 里我们网络训练预测的目标一般写成如下形式:DDPM里扩散网络预测的噪声实际上是往数据分布的转移梯度有了这个网络之后,我们想要生成符合原数据分布的点(例如图像或文本)时我们可以通过逐步往该网络的预测梯度方向行走来获得最终数据点。但这样有一个问题是这样的无条件生成我们无法做到条件生成,如指定图像类别是猫或狗来生成具体类别的结果。但根据以上的直观理解,我们可以用贝叶斯定理来将条件生成对输入的对数梯度拆解一下 [1]:上式里我们很明显看到给定类别或条件生成的梯度可以看作是我们本来就已经在拟合的无条件梯度再加上一个分类器的梯度来得到(其中条件关于输入的求导为零)!换句话说对于一个先验分布,我们想要再次获得数据分布里在条件约束下的数据点时,我们实际只要在原来往数据方向的梯度方向上再额外添加一个分类器的梯度方向即可。具体来说,宋飏博士在论文 [2] 里给出的后向去噪的随机微分方程本来是如下形式:其中 代表的就是我们之前提及的无条件生成的数据分布方向的梯度,现在这个方向我们需要加上分类器的方向,所以后向过程变成了如下形式:注意每步迭代的方向现在加上了分类器的梯度方向来引导而在几乎同一时间发表的论文 Diffusion Models Beat GANs on Image Synthesis [3] 里,作者用了更加数学化的方式来得到同样的推导结论。这个推导就不那么直观了。有关这篇论文如何得到相同的公式推导,读者可以参考原论文 [3] 附录里的推导。笔者在此按下不表。但同样的推论下,这篇论文作者给出了宋飏博士的推论在 DDPM 和 DDIM 的采样算法下的具体实现形式:分类器引导在 DDPM,DDIM 采样算法下的具体实现形式其中留意在 DDPM 下,每一步的均值估计加上了分类器引导的梯度,而在 DDIM 的框架下,原来的噪声估计也加上了分类器引导的梯度。但用一个显式的分类器引导生成有几个比较大的问题:一个是你需要额外训练一个在噪声图像上做分类判别的分类器,费时费力。其次该分类器的质量决定了你按类别生成的效果。实际上往分类器的判别梯度上更新图像的做法是图像界对分类模型进行对抗攻击的经典做法。骗过了一个并不健壮的分类器并不代表我们确实逼近了条件分布。实际上在用分类器引导文本扩散生成时笔者也遇到了这个现象而由此引申的最重要的一个缺陷是,这样的一个分类器在多样性和生成效果此消彼长的权衡博弈,并没有直接反映到我们的评判测度上(例如 IS 这个测度的输出本身就依赖于分类器)。下图是 classifier-free [4] 这篇论文里给出的形象例子。对于一个来自于三个高斯分布混合而成的分布,我们通过分类器引导的采样过程导致了采样结果严重受限于该分布的局部领域,且分类器引导强度越强,远离其他类别的质心的表现越明显,使得结果越加集中在局部空间。为了避免一个显式的分类器引导,笔者认为 classifier-free 这篇论文的核心思想是提出了一个隐式的分类器引导。以下是相关的推导:首先我们知道噪声的估计和对数据分布的梯度是成负系数比例的(直观来说,噪声使得原输入偏离了原数据分布,而去噪过程沿着往数据分布的最近梯度则刚好和噪声是反方向,具体推导可以参考笔者文章:从大一统视角理解扩散模型(Diffusion Models))。而这个关系在这篇论文里以这个公式形式给出:我们也知道有分类器引导时我们是在原梯度估计上额外加上分类器的梯度,于是我们得到了下面式子的左侧表示,其中 是分类器引导的强度。将噪声估计转换为梯度后我们得到了等式右侧的表示。在此基础上继续将 以贝叶斯等式分解可以得到其中 与 求导为零被约去,我们得到了右侧下方的表达式。也就是说对无条件生成的网络以 的强度进行有分类器引导的扩散生成等价于对有条件生成的网络以 的强度进行有分类器引导。有了右侧下方这个表达式后我们来看 这个分类器的分布表示。同样我们可以用贝叶斯等式将其拆成,也同样再次忽略掉 关于 的求导,我们实际可以构建一个隐式的分类器梯度,只关于 和 而无需一个显式的分类器 。于是显式的分类器梯度拆成以下形式其中两个epsilon分别代表P(z|c)和P(z)那么我们再将这个显示分类器的梯度拆解式代入回上面的用 omega 强度对有条件生成的网络进行引导的表达式,我们可以得到也就是下式:也就是说,使用隐式分类器引导的最终解析式要求我们只需要训练两个梯度预估模型,其中一个是无条件生成的梯度预估模型(例如常规的 DDPM),另一个是基于条件的梯度预估模型。而我们甚至可以使用同一个模型同时表示两者,区别只在于无条件生成时将条件向量置为零即可!一方面这大大减轻了条件生成的训练代价(无需训练额外的分类器,只需要在训练时进行随机 drop out condition 来同时训练两个目标),另一方面这样的条件生成并不是以一个类似于对抗攻击的方式进行的。而同时,仔细观察我们上面的采样式子,实际上它是两个梯度的差值所形成的。如果有玩过 stable-diffusion-webui 的读者可能会注意到其中一个 feature 是 negative prompt. 也就是使用者可以指定不想要出现的提示,让生成不会包括该内容。其实现方式实际上就用了上面这个无分类器引导的公式。将无条件生成转为带着你不想要的提示的条件生成。无分类器引导可以说是 Stable-Diffusion 的做法的直接奠基工作之一。在此之前要做到多模态或者说文生图的引导生成,通常大家用的是 clip 模型,来对生成的图像和文本的距离做一个损失差值,用这个差值来引导多模态生成。但有了 classifier-free 这篇论文之后,文生图可以有更加自然和更加有效的方式达成。关于 SD 具体是如何工作的,可以参考笔者这篇笔记:CLIP, VQGAN, VQGAN-CLIP, Stable-Diffusion?。上面谈了谈扩散模型的无分类器引导生成,并提到了这项技术使得训练一个多模态文生图的 Stable-Diffusion 成为可能。下面我将简要地谈一谈如果不用隐式分类器引导生成的话,多模态引导生成可以如何做。笔者在之前的笔记:CLIP, VQGAN, VQGAN-CLIP, Stable-Diffusion里提及过 VQGAN-CLIP,一种在生成时不断借助 CLIP 判断所生成的图像和目标文本的距离来不停迭代生成的方法。但这个方法不涉及到任何的扩散模型。在 Diffusion-CLIP 这篇文章里,作者同样通过使扩散生成时的图像和目标文本的多模态 CLIP 损失尽可能小来达成目的。具体来说,CLIP 的损失由下图定义:其中 delta_I 是图像编码器对生成图和原图的编码向量差,delta_T 是文本编码器对目标文本和原文本的编码向量的差。这是一个余弦距离的损失函数。而我们可以在扩散时引导我们的噪声或者模型使得其生成结果满足以下两个损失,一个是 CLIP 损失,一个是保证生成图和原图尽可能不要相差太远的重构损失。根据作者的实验发现,对模型微调的效果会比对噪声直接微调的效果更好一些。很明显这个方法最大的问题在于,每一个新的性质,都需要对模型进行微调一次,哪怕作者论证了不同的性质可以在某种程度上互相叠加来生成,这依然是个非常耗费资源且难以落地的技术方向。而且这个方法依然是对 DDPM 等在像素空间上做操控的模型做多模态引导,其巨大的资源耗费也导致了难以训练一个在通用数据集上拟合的模型。更加不要说用海量的自然语言去做文本指导生成了(在这个技术路线下,要微调并储存海量的模型)。在比较了三种引导的大方向之后,我们可以更清晰地明白 Stable-Diffusion 其背后的技术路线成功的原因之一。就是使用了无分类器引导的隐式分类引导生成的技术,使得跨模态的条件生成变得简单可行。当然,其背后整合了最新的 VQGAN 模型并在潜在空间做扩散的思路使得所需训练和推理资源急剧降低,也是一个重要的方面。1. unified perspective to understand diffusion model
2. SCORE-BASED GENERATIVE MODELING THROUGH STOCHASTIC DIFFERENTIAL EQUATIONS
3. abDiffusion Models Beat GANs on Image Synthesis
4. classifier-free-diffusion-guidance
本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。“强基固本”历史文章
更多强基固本专栏文章,
请点击文章底部“阅读原文”查看
分享、点赞、在看,给个三连击呗!