CFDG:Classifier-Free Diffusion Guidance

随机添加条件训练,最终结果是条件引导图片和无条件引导图片的线性组合。不需要单独训练引导器
(图片)+(条件)-> 噪声 + 条件 -> 条件图片,条件图片

什么是 CFDG ?

  • 引导函数的方法存在一些问题:1)额外训练一个噪声版本的图像分类器;2)该分类器的质量会影响按类别生成的效果;3)通过梯度更新图像会导致对抗攻击效应,生成图像可能会通过人眼不可察觉的细节欺骗分类器,实际上并没有按条件生成
  • Classifier-Free Guidance 的核心是通过一个隐式分类器来替代显示分类器,而无需直接计算显式分类器及其梯度

CFDG 的原理?

  • Classifier-Free Guidance 的核心是通过一个隐式分类器来替代显示分类器,而无需直接计算显式分类器及其梯度,生成时被定义为

p(xt1xt,y)=N(xt1;μ(xt,y),σt2I)p(\boldsymbol{x}_{t-1}|\boldsymbol{x}_t,\boldsymbol{y})=\mathcal{N}(\boldsymbol{x}_{t-1};\boldsymbol{\mu}(\boldsymbol{x}_t,\boldsymbol{y}),\sigma_t^2\boldsymbol{I})

  • μ(xt,y)\boldsymbol{\mu}(\boldsymbol{x}_t,\boldsymbol{y}) 的一般化参数为

μ(xt,y)=1αt(xtβt2βˉtϵθ(xt,y,t))\boldsymbol{\mu}(\boldsymbol{x}_t,\boldsymbol{y})=\frac{1}{\alpha_t}\left(\boldsymbol{x}_t-\frac{\beta_t^2}{\bar{\beta}_t}\boldsymbol{\epsilon}_\theta(\boldsymbol{x}_t,\boldsymbol{y},t)\right)

  • 训练的损失函数就是

loss=[εϵθ(αˉtx0+βˉtε,y,t)2]loss=\left[\left\|\boldsymbol{\varepsilon}-\boldsymbol{\epsilon}_\theta(\bar{\alpha}_t\boldsymbol{x}_0+\bar{\beta}_t\boldsymbol{\varepsilon},\boldsymbol{y},t)\right\|^2\right]

  • 在训练过程中就引入了额外的输入 yy,理论上输入信息越多越容易训练;它的缺点也是在训练过程中就引入了额外的输入 yy,意味着每做一组信号控制,就要重新训练整个扩散模型

CFDG 如何训练?

  • 训练时:Classifier-Free Guidance 需要训练两个模型,一个是无条件生成模型,另一个是条件生成模型。但这两个模型可以用同一个模型表示,训练时只需要以一定概率将条件置空即可

CFDG 如何推理?

  • 推理时,最终结果可以由条件生成和无条件生成的线性外推获得,生成效果可以引导系数 w 可以调节,控制生成样本的逼真性和多样性的平衡

ϵ^θ(zλ,y)=(1+w)ϵθ(zλ,y)wϵθ(zλ)\hat{\epsilon}_\theta(z_\lambda,y)=(1+w)\epsilon_\theta(z_\lambda,y)-w\epsilon_\theta(z_\lambda)

参考:

  1. 扩散模型笔记 5 classifier-free guidance - 知乎
  2. 通俗理解 Classifier Guidance 和 Classifier-Free Guidance 的扩散模型 - 知乎
  3. 生成扩散模型漫谈(九):条件控制生成结果 - 科学空间 | Scientific Spaces