深度学习(生成式模型)——Classifier Free Guidance Diffusion

编程入门 行业动态 更新时间:2024-10-27 14:19:19

<a href=https://www.elefans.com/category/jswz/34/1769690.html style=深度学习(生成式模型)——Classifier Free Guidance Diffusion"/>

深度学习(生成式模型)——Classifier Free Guidance Diffusion

文章目录

  • 前言
  • 推导流程
  • 训练流程
  • 测试流程

前言

在上一节中,我们总结了Classifier Guidance Diffusion,其有两个弊端,一是需要额外训练一个分类头,引入了额外的训练开销。二是要噪声图像通常难以分类,分类头通常难以学习,影响生成图像的质量。

Classifier Free Guidance Diffusion解决了上述两个弊端,不需要引入额外的分类头即可控制图像的生成。

本节所有符号含义与前文一致,请读者阅读完前三篇博文后在查阅此文。

本文仅总结backbone为DDIM情况下的Classifier Free Guidance Diffusion

推导流程

依据前文可知Classifier Guidance Diffusion的前向过程与反向过程与DDPM一致,且有
q ( x t ∣ x t − 1 , y ) = q ( x t ∣ x t − 1 ) q(x_t|x_{t-1},y)=q(x_t|x_{t-1}) q(xt​∣xt−1​,y)=q(xt​∣xt−1​)

则有 q ( x t ∣ x 0 , y ) = q ( x t ∣ x 0 ) = N ( x t ; α ˉ t x 0 , ( 1 − α ˉ t ) I ) q(x_t|x_{0},y)=q(x_t|x_0)=\mathcal N(x_t;\sqrt{\bar \alpha_t}x_0,(1-\bar\alpha_t)\mathcal I) q(xt​∣x0​,y)=q(xt​∣x0​)=N(xt​;αˉt​ ​x0​,(1−αˉt​)I)

假设目前有一批基于条件 y y y的样本 x t x_t xt​, ϵ ( x t , t , y ) \epsilon(x_t,t,y) ϵ(xt​,t,y)服从标准正态分布,则样本 x t x_t xt​将满足
x t = α ˉ t x 0 + 1 − α ˉ t ϵ ( x t , t , y ) (1.0) x_t=\sqrt{\bar \alpha_t}x_0+\sqrt{1-\bar\alpha_t}\epsilon(x_t,t,y)\tag{1.0} xt​=αˉt​ ​x0​+1−αˉt​ ​ϵ(xt​,t,y)(1.0)

依据Tweedie方法,我们有

α ˉ t x 0 = x t + ( 1 − α ˉ t ) ∇ x t log ⁡ p ( x t ∣ y ) \begin{aligned} \sqrt{\bar \alpha_t}x_0=x_t+(1-\bar\alpha_t)\nabla_{x_t}\log p(x_t|y) \end{aligned} αˉt​ ​x0​=xt​+(1−αˉt​)∇xt​​logp(xt​∣y)​
进而有
x t = α ˉ t x 0 − ( 1 − α ˉ t ) ∇ x t log ⁡ p ( x t ∣ y ) (1.1) x_t=\sqrt{\bar \alpha_t}x_0-(1-\bar\alpha_t)\nabla_{x_t}\log p(x_t|y)\tag{1.1} xt​=αˉt​ ​x0​−(1−αˉt​)∇xt​​logp(xt​∣y)(1.1)

结合式1.0与1.1,则有

∇ x t log ⁡ p ( x t ∣ y ) = − 1 1 − α ˉ t ϵ ( x t , t , y ) (1.2) \nabla_{x_t}\log p(x_t|y)=-\frac{1}{\sqrt{1-\bar\alpha_t}}\epsilon(x_t,t,y)\tag{1.2} ∇xt​​logp(xt​∣y)=−1−αˉt​ ​1​ϵ(xt​,t,y)(1.2)

依据贝叶斯公式,我们有
log ⁡ p ( x t ∣ y ) = log ⁡ p ( y ∣ x t ) + log ⁡ p ( x t ) − log ⁡ p ( y ) ∇ x t log ⁡ p ( y ∣ x t ) = ∇ x t log ⁡ p ( x t ∣ y ) − ∇ x t log ⁡ p ( x t ) + ∇ x t log ⁡ p ( y ) = ∇ x t log ⁡ p ( x t ∣ y ) − ∇ x t log ⁡ p ( x t ) = − 1 1 − α ˉ t ϵ ( x t , t , y ) + 1 1 − α ˉ t ϵ ( x t , t ) (1.3) \begin{aligned} \log p(x_t|y)&=\log p(y|x_t)+\log p(x_t)-\log p(y)\\ \nabla_{x_t}\log p(y|x_t)&=\nabla_{x_t}\log p(x_t|y)-\nabla_{x_t}\log p(x_t)+\nabla_{x_t}\log p(y)\\ &=\nabla_{x_t}\log p(x_t|y)-\nabla_{x_t}\log p(x_t)\\ &=-\frac{1}{\sqrt{1-\bar\alpha_t}}\epsilon(x_t,t,y)+\frac{1}{\sqrt{1-\bar\alpha_t}}\epsilon(x_t,t) \end{aligned}\tag{1.3} logp(xt​∣y)∇xt​​logp(y∣xt​)​=logp(y∣xt​)+logp(xt​)−logp(y)=∇xt​​logp(xt​∣y)−∇xt​​logp(xt​)+∇xt​​logp(y)=∇xt​​logp(xt​∣y)−∇xt​​logp(xt​)=−1−αˉt​ ​1​ϵ(xt​,t,y)+1−αˉt​ ​1​ϵ(xt​,t)​(1.3)

回顾一下backbone为DDIM的Classifier Guidance Diffusion的采样流程

将式1.3代入,且引入一个超参数 w w w,可得
ϵ ^ = ϵ θ ( x t ) − w 1 − α ˉ t ∇ x t log ⁡ p ( y ∣ x t ) = ϵ θ ( x t ) − w ( ϵ θ ( x t , t ) − ϵ θ ( x t , t , y ) ) = ( 1 − w ) ϵ θ ( x t , t ) + w ϵ θ ( x t , t , y ) (1.4) \begin{aligned} \hat \epsilon &= \epsilon_\theta(x_t)-w\sqrt{1-\bar\alpha_t}\nabla_{x_t}\log p(y|x_t)\\ &=\epsilon_\theta(x_t)-w(\epsilon_\theta(x_t,t)-\epsilon_\theta(x_t,t,y))\\ &=(1-w)\epsilon_\theta(x_t,t)+w\epsilon_\theta(x_t,t,y) \end{aligned}\tag{1.4} ϵ^​=ϵθ​(xt​)−w1−αˉt​ ​∇xt​​logp(y∣xt​)=ϵθ​(xt​)−w(ϵθ​(xt​,t)−ϵθ​(xt​,t,y))=(1−w)ϵθ​(xt​,t)+wϵθ​(xt​,t,y)​(1.4)

注意到原论文的推导结果为(为了区分,超参数设为 w ^ \hat w w^)

ϵ ^ = ( 1 + w ^ ) ϵ θ ( x t , t , y ) − w ^ ϵ θ ( x t , t ) (1.5) \hat \epsilon = (1+\hat w)\epsilon_\theta(x_t,t,y)-\hat w\epsilon_\theta(x_t,t)\tag{1.5} ϵ^=(1+w^)ϵθ​(xt​,t,y)−w^ϵθ​(xt​,t)(1.5)

式1.5和1.4是一致的,均为 ϵ θ ( x t , t , y ) \epsilon_\theta(x_t,t,y) ϵθ​(xt​,t,y)与 ϵ θ ( x t , t ) \epsilon_\theta(x_t,t) ϵθ​(xt​,t)的加权和,且权重和为1。

训练流程

依据式1.5,我们需要训练两个神经网络 ϵ θ ( x t , t , y ) \epsilon_\theta(x_t,t,y) ϵθ​(xt​,t,y)与 ϵ θ ( x t , t ) \epsilon_\theta(x_t,t) ϵθ​(xt​,t),前者为的输入包含加噪图片 x t x_t xt​以及条件 y y y(图像or文字),后者的输入仅包含加噪图像 x t x_t xt​。但其实两个神经网络可以共用一个backbone,在训练时,只需要用一定的概率将条件 y y y设置为空即可。

测试流程

Classifier Free Guidance Diffusion的测试流程有两次推断

  • 将条件 y y y空置,得到 ϵ θ ( x t , t ) \epsilon_\theta(x_t,t) ϵθ​(xt​,t)
  • 输入条件 y y y,得到 ϵ θ ( x t , t , y ) \epsilon_\theta(x_t,t,y) ϵθ​(xt​,t,y)
  • 利用公式1.5,生成基于条件 y y y的图像

可以看到推断成本多了一倍。

更多推荐

深度学习(生成式模型)——Classifier Free Guidance Diffusion

本文发布于:2023-11-15 14:17:38,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1601091.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:深度   模型   Classifier   Diffusion   Guidance

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!