Classifier Guidance 与 Classifier-Free Guidance

系列文章目录

【论文精读】GAN:Generative Adversarial Nets 生成对抗网络
【论文精读】DDPM:Denoising Diffusion Probabilistic Models 去噪扩散概率模型


一、前言

(一)多元高斯分布

假设存在m个随机向量: X ( 1 ) , X ( 2 ) , . . . , X ( m ) X^{(1)},X^{(2)},...,X^{(m)} X(1),X(2),...,X(m),每个向量的元素个数都是 p p p。如果 X ( i ) X^{(i)} X(i)是独立同分布的高斯向量,则有:
X ( i ) ∼ N p ( μ , Σ ) X^{(i)} \sim N_p(\mu,\Sigma) X(i)Np(μ,Σ)

对应的对数似然函数为:
在这里插入图片描述
多元高斯分布协方差矩阵是对称矩阵,也是半正定矩阵,它的转置是它本身。

(二)生成式模型效果的评价

生成式模型的两大目标:Quality真实性,Diversity多样性

客观评测指标一:Inception Score(IS)

核心思想: 基于Inception-V3模型的分类概率来评估生成照片的质量

  • p ( y ∣ x ) p(y|x) p(yx)是每个图片的所属类别的概率
  • p ( y ) p(y) p(y)是对所有所属该类别的条件概率求平均而得

K L _ d i v e r g e n c e = p ( y ∣ x ) ∗ ( l o g ( p ( y ∣ x ) ) − l o g ( p ( y ) ) ) KL\_divergence = p(y|x)* (log(p(y|x))- log(p(y))) KL_divergence=p(yx)(log(p(yx))log(p(y)))

  • 对KL散度对所有类别求和再取平均值,并且取一个e指数,即可得到Inception Score
  • 一般生成5000张照片,IS的值在0~1000范围内
  • IS值越大越好:
    • p ( y ∣ x ) p(y|x) p(yx)应该具有低熵即越真实
    • p ( y ) p(y) p(y)应该具有高熵即越多样

缺点: 缺乏跟真实照片之间的比较;缺乏类内多样性,例如每个类别只产生一张一模一样的照片,IS一样很高

客观评测指标二:Frechlet Inception Distance(FID)

核心思想: 基于Inception-V3模型的feature vectors来计算真实图片与生成图片之间的距离,用高斯分布来表示,FID就是计算两个分布之间的Wasserstein-2距离

  • 将真实图片和预测图片分别经过Inception模型中,得到2048维度的embedding vector
  • μ 1 \mu_1 μ1 μ 2 \mu_2 μ2分别为均值,C1和C2为协方差,Tr为矩阵的迹, d 2 d^2 d2即为FID值:
    d 2 = ∣ ∣ μ 1 − μ 2 ∣ ∣ 2 + T r ( C 1 + C 2 − 2 ∗ C 1 ∗ C 2 ) d^2 =||\mu_1-\mu_2||^2+Tr(C_1+C_2-2*\sqrt{C_1*C 2)} d2=∣∣μ1μ22+Tr(C1+C22C1C2)
  • FID值越低,说明预测分布越接近于真实的分布
  • FID可以评估类内多样性,比如每个类别只产生一张一模一样的照片,FID会比较高,也就意味着评估效果比较差

其他客观评测指标:Precision与Recall

红色区域代表生成图像的分布,蓝色区域代表真实图像的分布

在这里插入图片描述

二、相关背景

(一)扩散模型

  • 扩散模型在图像生成领域受到了很多的关注,它的两大优势:①生成效果较好,保真度高;②生成图片的多样性明显高于其他生成模型。
  • 但是在扩散模型提出初期,它的生成效果及保真度是没有GAN好的。直到Classifier Guidance: Diffusion Models Beat GANs on Image Synthesis的出现,使得扩散模型在图像生成领域成功击败了GAN模型。这个方法目前已经广泛应用在了DALLE、Stable Diffusion等图像生成的大模型当中,甚至已经开始使用Classifier-Free Guidance: Classifier-Free Diffusion Guidance

(二)Classifier Guidance

Classifier-Guidance方案最早出自《Diffusion Models Beat GANs on Image Synthesis》,最初就是用来实现按类生成的;后来《More Control for Free! Image Synthesis with Semantic Diffusion Guidance》推广了“Classifier”的概念,使得它也可以按图、按文来生成。Classifier-Guidance方案的训练成本比较低,但是推断成本会高些,而且控制细节上通常没那么到位。

要做可控生成,即条件生成,首先想到我们可以拿类别来作为条件,比如要指定类别猫,就生成猫的图片。也就是说要给定类别 y y y,生成图片 x x x,即 P ( x ∣ y ) P(x|y) P(xy)。而一般分类器做的事情正好是反过来,给定图片,预测类别,即 P ( y ∣ x ) P(y|x) P(yx)。这刚好是一对逆条件概率,而贝叶斯公式就是处理这类逆概率问题的。推导如下:

在这里插入图片描述

因此,我们只要在无条件生成的基础上,加上想要的类别的分类器梯度,作为引导(或者称为条件的梯度修正),就可以导出以类别作为条件的生成。

(三)Classifier-Free Guidance

Classifier-Free Guidance的思想是基于 Classifier Guidance的,它最早出自《Classifier-Free Diffusion Guidance》,后来的DALL·E 2、Imagen等吸引人眼球的模型基本上都是以它为基础做的,Classifier-Free方案本身没什么理论上的技巧,它是条件扩散模型最朴素的方案,出现得晚只是因为重新训练扩散模型的成本较大吧,在数据和算力都比较充裕的前提下,Classifier-Free方案变现出了令人惊叹的细节控制能力。

Classifier-Free Guidance 的核心思想:同时训练无条件生成模型和条件生成模型(实际上这俩是一个模型,只是训练时有概率输入是有条件的,有概率是无条件的),在推理时,同时 forward 带输入条件的生成和无条件的生成吗,然后把俩结果进行线性组合外推,得到最终的条件生成结果。

三、Classifier Guidance

核心思想:引入了一个分类器,通过分类器的这个梯度对采样方法进行一个偏移,从而得到更符合条件的图像。

在这里插入图片描述

(一)条件扩散过程

  • 定义式一:训练样本不变
  • 定义式二:训练样本都是有标签的
  • 定义式三:加噪过程不变
  • 定义式四:符合马尔可夫性质
    在这里插入图片描述

在上述定义下,可以通过证明得到 q ^ \hat{q} q^的加噪条件分布、联合分布和边缘分布,在不加 y y y条件的情况下, q ^ \hat{q} q^ q q q表现相同,并且可以进一步发现逆扩散条件分布也相同。

证明一: q ^ \hat{q} q^的加噪条件分布在不加 y y y条件的情况下与 q q q表现相同

在这里插入图片描述

证明二: q ^ \hat{q} q^的联合分布在不加 y y y条件的情况下与 q q q表现相同

在这里插入图片描述

证明三: q ^ \hat{q} q^的边缘分布在不加 y y y条件的情况下与 q q q表现相同

在这里插入图片描述

由于证明可以得到 q ^ ( x t ) = q ( x t ) \hat{q}(x_t)=q(x_t) q^(xt)=q(xt) q ^ ( x t + 1 ∣ x t ) = q ( x t + 1 ∣ x t ) \hat{q}(x_{t+1}|x_t)=q(x_{t+1}|x_t) q^(xt+1xt)=q(xt+1xt),进而可以根据贝叶斯公式得到逆过程中有 q ^ ( x t ∣ x t + 1 ) = q ( x t ∣ x t + 1 ) \hat{q}(x_t|x_{t+1})=q(x_t|x_{t+1}) q^(xtxt+1)=q(xtxt+1)

证明四:任意时刻所属的类别与后面一个时刻没有关系

在这里插入图片描述

证明五:给定y的条件下,扩散过程 q ^ \hat{q} q^的逆条件概率分布

在这里插入图片描述

  • q ^ ( y ∣ x t + 1 ) \hat{q}(y|x_{t+1}) q^(yxt+1)中由于 x t + 1 x_{t+1} xt+1 y y y都是给定的条件,因此可以看做是一个常量,处理成 Z Z Z
  • q ( x t ∣ x t + 1 ) q(x_t|x_{t+1}) q(xtxt+1)其实就是我们已经训练好的扩散过程 p θ ( x t ∣ x t + 1 ) p_{\theta}(x_t|x_{t+1}) pθ(xtxt+1)
  • 还剩下 q ^ ( y ∣ x t ) \hat{q}(y|x_t) q^(yxt)未知,因此需要训练一个分类器网络 p ϕ ( y ∣ x t ) p_\phi(y|x_t) pϕ(yxt)

最终即为:
q ^ ( x t ∣ x t + 1 , y ) = p θ , ϕ ( x t ∣ x t + 1 , y ) = Z p θ ( x t ∣ x t + 1 ) p ϕ ( y ∣ x t ) \hat{q}(x_t|x_{t+1},y)=p_{\theta,\phi}(x_t|x_{t+1},y)=Zp_{\theta}(x_t|x_{t+1})p_{\phi}(y|x_t) q^(xtxt+1,y)=pθ,ϕ(xtxt+1,y)=Zpθ(xtxt+1)pϕ(yxt)

(二)逆条件扩散过程:DDPM采样过程

根据前面的证明,可以得到:(其中 p θ ( x t ∣ x t + 1 ) p_θ(x_t|x_{t+1}) pθ(xtxt+1)为DDPM, p φ ( y ∣ x t ) p_φ(y|x_t) pφ(yxt)是一个分类器)
p θ , ϕ ( x t ∣ x t + 1 , y ) = Z p θ ( x t ∣ x t + 1 ) p ϕ ( y ∣ x t ) p_{\theta,\phi}(x_t|x_{t+1},y)=Zp_{\theta}(x_t|x_{t+1})p_{\phi}(y|x_t) pθ,ϕ(xtxt+1,y)=Zpθ(xtxt+1)pϕ(yxt)

p θ ( x t ∣ x t + 1 ) p_{\theta}(x_t|x_{t+1}) pθ(xtxt+1)服从高斯分布 N ( µ , Σ ) N (µ, Σ) N(µ,Σ),添加log并展开得到:
在这里插入图片描述
由于当前时刻为 t + 1 t+1 t+1,无法求 p φ ( y ∣ x t ) p_φ(y|x_t) pφ(yxt),只能进行估计,因为ddpm中的 Σ Σ Σ很小,可以使用 x t = µ x_t =µ xt=µ的泰勒展开来近似 l o g p φ ( y ∣ x t ) logp_φ(y|x_t) logpφ(yxt)
在这里插入图片描述于是进一步就有:
在这里插入图片描述

结论: q ^ ( x t ∣ x t + 1 , y ) \hat{q}(x_t |x_{t + 1}, y) q^(xtxt+1,y)变成了服从 N ( µ + Σ g , Σ ) N(µ + Σg, Σ) N(µ+Σg,Σ)的高斯分布, μ μ μ Σ Σ Σ可以直接使用DDPM的求法, g g g是分类器的梯度,将分类器的梯度引入采样过程指导类别生成,只需要采样时均值进行一个平移,就可以得到条件扩散,代入DDPM的前向和反向过程就得到了算法1,s为guidance scale,用于控制多样性和类别控制的比例。
在这里插入图片描述

(三)逆条件扩散过程:DDIM采样过程

上述条件抽样的推导只适用于随机扩散抽样过程,不能应用于DDIM等确定性抽样方法。为此,使用了来自Song等人的基于分数的条件反射技巧,该技巧利用了扩散模型和分数匹配之间的联系。特别是,如果我们有一个模型图片来预测添加到样本中的噪声,那么可以使用它来推导分数函数:
在这里插入图片描述

把它代入 p ( x t ) p ( y ∣ x t ) p(x_t)p(y|x_t) p(xt)p(yxt)的分数函数:
在这里插入图片描述
最后,我们可以定义一个新的 ε \varepsilon ε预测,它对应于联合分布的分数:

在这里插入图片描述

然后,我们可以使用与常规DDIM完全相同的采样过程,但使用修改后的噪声预测图片而不是图片。算法2总结了相应的采样算法。s为guidance scale,用于控制多样性和类别控制的比例。
在这里插入图片描述

四、Classifier-Free Guidance

Classifier-Free Guidance的总体思想比较简单,不使用分类器,直接使用模型去学习条件。

初步定义:
在这里插入图片描述

沿用前面 DDPM 的几篇文章的结果, μ ( x t , y ) \mu(x_t,y) μ(xt,y) 一般参数化为:
在这里插入图片描述
训练的损失函数就是:
在这里插入图片描述

训练算法:

  • 给定一个概率,比如0.5
  • 根据概率决定是否加入条件
  • 然后迭代扩散模型
  • 和条件gan一样,条件加入可以是隐式的也可以是显式的
    在这里插入图片描述

采样过程:

  • 给w作为条件因子比例,c作为条件信息
  • 然后迭代生成结果
    在这里插入图片描述

五、对比分析

(一)Classifier Guidance 与 Classifier-Free Guidance的联系

从方法上来看,条件控制生成的方式分两种:事后修改(Classifier-Guidance)和事前训练(Classifier-Free)。

Classifier-Free 方案相当于直接用模型拟合了Classifier Guidance逆扩散过程的 μ ( x t ) + σ t 2 ∇ x t l o g p ( y ∣ x t ) \mu(x_t)+\sigma_t^2\nabla_{x_t}logp(y|x_t) μ(xt)+σt2xtlogp(yxt)

(二)Classifier Guidance 与 Classifier-Free Guidance的区别

在这里插入图片描述

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

参考:
66、Classifier Guided Diffusion条件扩散模型论文与PyTorch代码详细解读
Classifier Guidance 与 Classifier-Free Guidance
扩散模型:条件生成classifier guidance,classifier-free guidance
​生成扩散模型漫谈:条件控制生成结果

  • 29
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
classifier-free diffusion guidance(无分类器扩散引导)是一种新兴的技术,用于在无需提前训练分类器的情况下进行目标导航。 传统的目标导航技术通常需要使用先验知识和已经训练好的分类器来辨别和识别目标。然而,这些方法存在许多限制和缺点,如对精确的先验知识的需求以及对大量标记数据的依赖。 相比之下,classifier-free diffusion guidance 可以在目标未知的情况下进行导航,避免了先验知识和训练好的分类器的依赖。它的主要思想是利用传感器和环境反馈信息,通过推测和逐步调整来实现导航。 在这种方法中,机器人通过感知环境中的信息,例如物体的形状、颜色、纹理等特征,获取关于目标位置的信息。然后,它将这些信息与先验的环境模型进行比较,并尝试找到与目标最相似的区域。 为了进一步提高导航的准确性,机器人还可以利用扩散算法来调整自己的位置和方向。通过比较当前位置的特征与目标位置的特征,机器人可以根据这些差异进行调整,逐渐接近目标。 需要注意的是,classifier-free diffusion guidance还处于研究阶段,目前还存在许多挑战和问题。例如,对于复杂的环境和多个目标,算法的性能可能会下降。然而,随着技术的发展,我们可以预见classifier-free diffusion guidance将会在未来的目标导航中发挥重要的作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值