深度学习(生成式模型)——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)∇xtlogp(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)∇xtlogp(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} ∇xtlogp(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)∇xtlogp(y∣xt)=logp(y∣xt)+logp(xt)−logp(y)=∇xtlogp(xt∣y)−∇xtlogp(xt)+∇xtlogp(y)=∇xtlogp(xt∣y)−∇xtlogp(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 ∇xtlogp(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的图像

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

相关推荐
YSGZJJ30 分钟前
股指期货的套保策略如何精准选择和规避风险?
人工智能·区块链
无脑敲代码,bug漫天飞33 分钟前
COR 损失函数
人工智能·机器学习
HPC_fac130520678161 小时前
以科学计算为切入点:剖析英伟达服务器过热难题
服务器·人工智能·深度学习·机器学习·计算机视觉·数据挖掘·gpu算力
小陈phd4 小时前
OpenCV从入门到精通实战(九)——基于dlib的疲劳监测 ear计算
人工智能·opencv·计算机视觉
Guofu_Liao5 小时前
大语言模型---LoRA简介;LoRA的优势;LoRA训练步骤;总结
人工智能·语言模型·自然语言处理·矩阵·llama
ZHOU_WUYI9 小时前
3.langchain中的prompt模板 (few shot examples in chat models)
人工智能·langchain·prompt
如若1239 小时前
主要用于图像的颜色提取、替换以及区域修改
人工智能·opencv·计算机视觉
老艾的AI世界9 小时前
AI翻唱神器,一键用你喜欢的歌手翻唱他人的曲目(附下载链接)
人工智能·深度学习·神经网络·机器学习·ai·ai翻唱·ai唱歌·ai歌曲
DK221519 小时前
机器学习系列----关联分析
人工智能·机器学习
Robot25110 小时前
Figure 02迎重大升级!!人形机器人独角兽[Figure AI]商业化加速
人工智能·机器人·微信公众平台