需要训练不同噪声和条件的对应模型,使用这个模型影响去躁采样的均值
(图片)-> 噪声 + 条件 -> 条件图片,条件图片
什么是 ADM(ablated diffusion model) ?
- 提出了 Classifier guided,即添加了引导项,论文提出的消融扩散模型(ADM)和带有额外分类器引导的模型(ADM-G)能够比 SOTA 生成模型(例如 BigGAN)获得更好的结果
- 原理是使用不同时步的图像 xt 训练一个分类器,之后使用分类器对 xt 的梯度信息 ∇xtlogpθ(xt) 指导扩散模型的生成
ADM 的加躁过程?
ADM 的去躁过程?
- 假设 y 是标签,此时噪声图的采样方式为:p(xt∣xt+1,y),根据联合概率和条件概率关系,得到以下式子
p(xt∣xt+1,y)=p(xt+1,y)p(xt,xt+1,y)=p(y∣xt+1)p(xt+1)p(xt,xt+1,y)=p(y∣xt+1)p(xt+1)p(xt∣xt+1)p(y∣xt,xt+1)p(xt+1)=p(y∣xt+1)p(xt∣xt+1)p(y∣xt,xt+1)
- 因为 y 是 xt 的标签,和 xt+1 是独立的,所以有
p(y∣xt,xt+1)=p(xt+1∣xt,y)p(xt+1∣xt)p(y∣xt)=p(xt+1∣xt)p(xt+1∣xt)p(y∣xt)=p(y∣xt)
p(xt∣xt+1,y)=p(y∣xt+1)p(xt∣xt+1)p(y∣xt,xt+1)=p(y∣xt+1)p(xt∣xt+1)p(y∣xt)
- 因为 y,xt+1 是已知的,所以 p(y∣xt+1) 可视为常数,因此上式变为如下,其中 Z 是分母常数,θ 表示扩散模型参数,ϕ 表示分类器的参数
pθ,ϕ(xt∣xt+1,y)=Z⋅pθ(xt∣xt+1)⋅pϕ(y∣xt)
log(pθ(xt∣xt+1)pϕ(y∣xt))=logp(z)+C4,z∼N(μ+∑g,∑)
- 从上式可以看出,增加 classifier guidance 后,相当于对高斯分布的均值加了偏移量 ∑g
ADM 如何使用带条件的 DM (DDIM)?
- 在使用神经网络估计噪声时,将 classifier guidance 的梯度信息加到噪声估计上
ADM 不同 s 对生成效果的影响?
- 一般来说当 s=1 时,大约能保证生成的图片 50% 是想要的类别 [5],随着 s 的增大,这个比例也能够增加。如下图,当 s 增加到 10,此时生成的图片都是期望的类别。因此 s 也称之为 guidance scale
DDPM 和 classifier guidance DM 的联系?
- DDPM:扩散模型前向扩散过程和后向去噪过程都可以用一个随机微分方程来描述,并且其中后向去噪时我们事实上通过一个神经网络来拟合当前输入关于原数据分布的梯度,来将一个先验分布(如高斯噪声)里采样出的点逐渐推进到数据分布里,后向生成可以看成是一个 MCMC 采样过程,而其中实际每一步的转移方程都是沿着往数据分布的梯度方向迈进,且该方向由我们神经网络的输出来拟合
- Classifier guidance DM:有了这个网络之后,我们想要生成符合原数据分布的点(例如图像或文本)时我们可以通过逐步往该网络的预测梯度方向行走来获得最终数据点。上式里我们很明显看到给定类别或条件生成的梯度可以看作是我们本来就已经在拟合的无条件梯度再加上一个分类器的梯度来得到。换句话说对于一个先验分布,我们想要再次获得数据分布里在条件约束下的数据点时,我们实际只要在原来往数据方向的梯度方向上再额外添加一个分类器的梯度方向即可
∇logp(xt∣y)=∇log(p(y)p(xt)p(y∣xt))=∇logp(xt)+∇logp(y∣xt)−∇logp(y)=unconditional score∇logp(xt)+adversarial gradient∇logp(y∣xt)
ADM 的应用?
- 知道 classifier guidance 原理是在去躁时加入引导梯度信息,显然我们可以把分类器替换成其它任意的判别器,也即更换引导条件,从而实现利用不同的语义信息来指导扩散模型的去噪过程。比如说,我们可以实现 text-guidance 和 image-guidance 等
参考:
- 扩散模型笔记 4 DM-beat-GANs - 知乎
- 《Diffusion Models Beat GANs on Image Synthesis》阅读笔记 - 知乎
- 浅谈扩散模型的有分类器引导和无分类器引导 - 知乎
- diffusion model(三)—— classifier guided diffusion model - 知乎