【扩散模型】引导扩散方法Classifier-free Guidance

Classifier-free Guidance

现在我们来介绍引导扩散的另一个方法Classifier-free Guidance,该方法也广泛运用于后续的各种扩散模型。

论文:CLASSIFIER-FREE DIFFUSION GUIDANCE

https://arxiv.org/pdf/2207.12598.pdf

参考视频

classifier guidance到classifier-free guidance之间扩散模型也有了更多的研究,描述的符号也发生了一些改变,采样时间也发生了变化。

文章使用了不同之前提到的文章的公式符号,并且将采样时间使用 λ = log ⁡ α λ 2 / σ λ 2 \lambda=\log\alpha_{\lambda}^{2}/\sigma_{\lambda}^{2} λ=logαλ2/σλ2进行代替。主要贡献是将有条件的和无条件的扩散模型结合到一起,无需另外训练分类器。

公式推导过程

将Classifier Guidance论文所得到的公式

Classifier Guidance论文相关解析可以查看另一篇博文
【扩散模型】引导扩散方法ClassifierGuidance

ϵ ^ ( x t ) : = ϵ θ ( x t ) − 1 − α ˉ t ∇ x t log ⁡ p ϕ ( y ∣ x t ) \hat{\epsilon}(x_t):=\epsilon_\theta(x_t)-\sqrt{1-\bar{\alpha}_t} \nabla_{x_t}\log p_\phi(y|x_t) ϵ^(xt):=ϵθ(xt)1αˉt xtlogpϕ(yxt)

写成新的形式

ϵ ~ θ ( z λ , c ) = ϵ θ ( z λ , c ) − w σ λ ∇ z λ log ⁡ p θ ( c ∣ z λ ) \tilde{\epsilon}_\theta(\mathbf{z}_\lambda,\mathbf{c})=\epsilon_\theta(\mathbf{z}_\lambda,\mathbf{c})-w\sigma_\lambda\nabla_{\mathbf{z}_\lambda}\log p_\theta(\mathbf{c}|\mathbf{z}_\lambda) ϵ~θ(zλ,c)=ϵθ(zλ,c)wσλzλlogpθ(czλ)

(也可以写成)

p ~ θ ( z λ ∣ c ) ∝ p θ ( z λ ∣ c ) p θ ( c ∣ z λ ) w \tilde{p}_\theta(\mathbf{z}_\lambda|\mathbf{c})\propto p_\theta(\mathbf{z}_\lambda|\mathbf{c})p_\theta(\mathbf{c}|\mathbf{z}_\lambda)^w p~θ(zλc)pθ(zλc)pθ(czλ)w

若将权重w变为w+1,使用score方法进行求导并将 p ( z λ ∣ c ) p(\mathbf{z}_{\lambda}|\mathbf{c}) p(zλc)使用贝叶斯公式转化得到:

ϵ θ ( z λ ) − ( w + 1 ) σ λ ∇ z λ log ⁡ p θ ( c ∣ z λ ) ≈ − σ λ ∇ z λ [ log ⁡ p ( z λ ) + ( w + 1 ) log ⁡ p θ ( c ∣ z λ ) ] = − σ λ ∇ z λ [ log ⁡ p ( z λ ∣ c ) + w log ⁡ p θ ( c ∣ z λ ) ] , \begin{aligned} \boldsymbol{\epsilon}_{\theta}(\mathbf{z}_{\lambda})-(w+1)\sigma_{\lambda}\nabla_{\mathbf{z}_{\lambda}}\log p_{\theta}(\mathbf{c}|\mathbf{z}_{\lambda})& \approx-\sigma_{\lambda}\nabla_{\mathbf{z}_{\lambda}}[\log p(\mathbf{z}_{\lambda})+(w+1)\log p_{\theta}(\mathbf{c}|\mathbf{z}_{\lambda})] \\ &=-\sigma_{\lambda}\nabla_{\mathbf{z}_{\lambda}}[\log p(\mathbf{z}_{\lambda}|\mathbf{c})+w\log p_{\theta}(\mathbf{c}|\mathbf{z}_{\lambda})], \end{aligned} ϵθ(zλ)(w+1)σλzλlogpθ(czλ)σλzλ[logp(zλ)+(w+1)logpθ(czλ)]=σλzλ[logp(zλc)+wlogpθ(czλ)],

可以证明

p θ ( z λ ∣ c ) p θ ( c ∣ z λ ) w ∝ p θ ( z λ ) p θ ( c ∣ z λ ) w + 1 p_\theta(\mathbf{z}_\lambda|\mathbf{c})p_\theta(\mathbf{c}|\mathbf{z}_\lambda)^w\propto p_\theta(\mathbf{z}_\lambda)p_\theta(\mathbf{c}|\mathbf{z}_\lambda)^{w+1} pθ(zλc)pθ(czλ)wpθ(zλ)pθ(czλ)w+1

因此,可以得到:

ϵ ~ θ ( z λ , c ) = ϵ θ ( z λ , c ) − w σ λ ∇ z λ log ⁡ p θ ( c ∣ z λ ) ≈ − σ λ ∇ z λ [ log ⁡ p ( z λ ∣ c ) + w log ⁡ p θ ( c ∣ z λ ) ] \tilde{\boldsymbol{\epsilon}}_\theta(\mathbf{z}_\lambda,\mathbf{c})=\boldsymbol{\epsilon}_\theta(\mathbf{z}_\lambda,\mathbf{c})-w\sigma_\lambda\nabla_{\mathbf{z}_\lambda}\log p_\theta(\mathbf{c}|\mathbf{z}_\lambda)\approx-\sigma_\lambda\nabla_{\mathbf{z}_\lambda}[\log p(\mathbf{z}_\lambda|\mathbf{c})+w\log p_\theta(\mathbf{c}|\mathbf{z}_\lambda)] ϵ~θ(zλ,c)=ϵθ(zλ,c)wσλzλlogpθ(czλ)σλzλ[logp(zλc)+wlogpθ(czλ)]

=====================================================
接下来要将无条件的采样和有条件的采样结合到同一个模型中,最终得到:

ϵ ~ θ ( z λ , c ) = ( 1 + w ) ϵ θ ( z λ , c ) − w ϵ θ ( z λ ) \tilde{\boldsymbol{\epsilon}}_\theta(\mathbf{z}_\lambda,\mathbf{c})=(1+w)\boldsymbol{\epsilon}_\theta(\mathbf{z}_\lambda,\mathbf{c})-w\boldsymbol{\epsilon}_\theta(\mathbf{z}_\lambda) ϵ~θ(zλ,c)=(1+w)ϵθ(zλ,c)wϵθ(zλ)

推导过程:

由新的采样公式两边除以 p θ ( z λ ) p_\theta(\mathbf{z}_{\lambda}) pθ(zλ)得到【其中, p i ( c ∣ z λ ) p^{i}(\mathbf{c}|\mathbf{z}_{\lambda}) pi(czλ)代表 p θ ( c ∣ z λ ) w + 1 p_{\theta}(\mathbf{c}|\mathbf{z}_{\lambda})^{w+1} pθ(czλ)w+1
p i ( c ∣ z λ ) ∝ p ( z λ ∣ c ) / p ( z λ ) p^{i}(\mathbf{c}|\mathbf{z}_{\lambda})\propto p(\mathbf{z}_{\lambda}|\mathbf{c})/p(\mathbf{z}_{\lambda}) pi(czλ)p(zλc)/p(zλ)

对两边使用score方法求导,得到:

∇ z λ log ⁡ p i ( c ∣ z λ ) = − 1 σ λ [ ϵ ∗ ( z λ , c ) − ϵ ∗ ( z λ ) ] \nabla_{\mathbf{z}_{\lambda}}\log p^{i}(\mathbf{c}|\mathbf{z}_{\lambda})=-\frac{1}{\sigma_{\lambda}}[\epsilon^{*}(\mathbf{z}_{\lambda},\mathbf{c})-\epsilon^{*}(\mathbf{z}_{\lambda})] zλlogpi(czλ)=σλ1[ϵ(zλ,c)ϵ(zλ)]

i = w + 1 i=w+1 i=w+1提下来,两边同乘 − σ λ -\sigma_{\lambda} σλ并将 ϵ ∗ ( z λ ) \boldsymbol{\epsilon}^{*}(\mathbf{z}_{\lambda}) ϵ(zλ)移到左边,最后共同提出 w + 1 w+1 w+1,得到:

ϵ ~ θ ( z λ , c ) = ( 1 + w ) ϵ θ ( z λ , c ) − w ϵ θ ( z λ ) \tilde{\boldsymbol{\epsilon}}_\theta(\mathbf{z}_\lambda,\mathbf{c})=(1+w)\boldsymbol{\epsilon}_\theta(\mathbf{z}_\lambda,\mathbf{c})-w\boldsymbol{\epsilon}_\theta(\mathbf{z}_\lambda) ϵ~θ(zλ,c)=(1+w)ϵθ(zλ,c)wϵθ(zλ)

所以有条件的模型可以估计 ϵ θ ( z λ , c ) \boldsymbol{\epsilon}_{\theta}(\mathbf{z}_{\lambda},\mathbf{c}) ϵθ(zλ,c),无条件的模型可以估计 ϵ θ ( z λ ) \boldsymbol{\epsilon}_\theta(\mathbf{z}_{\lambda}) ϵθ(zλ)

训练和采样时候对条件c进行选择,如果c为空则为无条件的模型。

伪代码

训练部分:

在这里插入图片描述

采样部分:

在这里插入图片描述

U-Net

看到这里可能有些小伙伴会很疑问“这个采样神经网络到底是什么?采用什么架构?”
其实只要能完成对噪声的预测的神经网络都是可行的,当然预测效果更好,架构更合理,对语义有更深的理解是最好的。
而扩散模型diffusion一般使用的神经网络是基于U-Net网络。

在这里插入图片描述

参考视频
UNet神经网络

U-Net主要用于医学图像的语义分割。现在更多使用padding操作保持大小。

Ho(DDPM)等人使用了一个具有单个头部的16 × 16分辨率的全局关注层,并在每个残差块中添加了嵌入的时间步的投影。

相关论文和代码下载

有时候论文网站arXiv.org打开比较慢,已经将相关论文和代码上传到网盘,需要的可以自取

链接: https://pan.baidu.com/s/1J1h8R4KyY7k6NgS2t7YOZg?pwd=3ss8

可以关注公众号:

搜索:福尔马林灌汤包
在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值