前面推导了一些衬托知识,现在正式来看diffusion Model。

3 diffusion models

diffusion Model原理之扩散过程与逆扩散过程

咱们说的分散进程,便是从x0x_0xTx_T的进程,也便是墒增的进程,从有序到无序。反过来是叫做逆分散进程。

所以能够看到,q模型是一个加噪音的模型,p模型是一个去噪音的进程。

3.1 分散进程

  • 给定初始数据散布x0∼q(x)x_0 \sim q(x),能够不断向散布中添加高斯噪音,该噪音的规范差是以固定值t\beta_t而确认的,而均值是以固定值t\beta_t和当前t时间的xtx_t决议的。这个进程是一个马尔可夫链进程。
  • 随着t不断增大,终究数据散布xTx_T变成了一个各向独立的高斯散布。

q(xt∣xt−1)=N(xt;1−txt−1,tI)q(x_t|x_{t-1})=N(x_t;\sqrt{1-\beta_t}x_{t-1},\beta_tI)

q(x1:T∣x0)=∏t=1Tq(xt∣xt−1)q(x_{1:T}|x_0) = \prod_{t=1}^T q(x_t|x_{t-1})

  • 这儿会用到参数重整化的技巧,咱们知道xtx_t服从这个正态散布,所以咱们从规范正态散布中采样出z,然后与1−txt−1\sqrt{1-\beta_t}x_{t-1}均值相加,与t\beta_t规范差相乘。

这儿t>t−1\beta_{t}>\beta_{t-1}

这儿推导一下,咱们的xtx_t能够表明为xt−1x_{t-1}的函数,也能够表明为x0x_0的函数。咱们这儿设定t=1−t\alpha_t=1-\beta_t

xt=txt−1+1−t∗zx_t=\sqrt{\alpha_t}x_{t-1}+\sqrt{1-\alpha_t}*z

上面公式中z为正态高斯散布,且利用了参数重整化的技巧。(reparameterization trick)

xt=t(t−1xt−2+1−t−1∗z)+1−t∗zx_t=\sqrt{\alpha_t}(\sqrt{\alpha_{t-1}}x_{t-2}+\sqrt{1-\alpha_{t-1}}*z)+\sqrt{1-\alpha_t}*z

=tt−1xt−2+t(1−t−1)z+1−tz=\sqrt{\alpha_t\alpha_{t-1}}x_{t-2}+\sqrt{\alpha_t(1-\alpha_{t-1})}z+\sqrt{1-\alpha_t}z

两个高斯散布相加a+b,那么新散布的方差a2+b2a^2+b^2.所以上面公式能够化简成:

=tt−1xt−2+1−tt−1z=\sqrt{\alpha_t\alpha_{t-1}}x_{t-2}+\sqrt{1-\alpha_t\alpha_{t-1}}z

所以咱们继续递归上面公式,能够得到: xt=∏i=1tix0+1−∏i=1tizx_t = \sqrt{\prod_{i=1}^t{\alpha_i}} x_0+ \sqrt{1-\prod_{i=1}^t{\alpha_i}}z

设置t=∏i=1ti\bar{\alpha_t}=\prod_{i=1}^t{\alpha_i}

q(xt∣x0)=N(xt;tx0,(1−t)I)q(x_t|x_0)=N(x_t;\sqrt{\bar{\alpha_t}}x_0,(1-\bar{\alpha_t})I)

所以咱们大概能够计算出来,当t需求多大的时分,t\bar{\alpha_t}是挨近0的,便是独立同散布。

这儿就能够看出来分散模型和VAE的差异,从x到z的进程,vae是一个网络猜测出来的z,而且并不能确保z和x是无关的;而分散模型的分散进程是一个无参的进程,而且z是一个各项同散布的一个散布,与x彻底不相关。此外分散模型的z和x是同尺寸的,而vae没有这个需求

当样本有着越来越多噪音的时分,能够采用更大的update step:

diffusion Model原理之扩散过程与逆扩散过程

3.2 逆分散进程

  • 逆进程是从高斯噪音中康复原始数据。

p(xt−1∣xt)=N(xt−1;(xt,t),(xt,t))p_\theta(x_{t-1} | x_t)=N(x_{t-1};\mu_\theta(x_t,t),\Sigma_\theta(x_t,t))

现在咱们需求推导一下后验分散条件概率q(xt−1∣xt,x0)q(x_{t-1}|x_t,x_0)

q(xt−1∣xt,x0)=q(xt−1,xt,x0)q(xt,x0)q(x_{t-1}|x_t,x_0)=\frac{q(x_{t-1},x_t,x_0)}{q(x_t,x_0)}

=q(xt∣xt−1,x0)q(xt−1∣x0)q(x0)q(xt∣x0)q(x0)=q(xt∣xt−1,x0)q(xt−1∣x0)q(xt∣x0)=\frac{q(x_t|x_{t-1},x_0)q(x_{t-1}|x_0)q(x_0)}{q(x_t|x_0)q(x_0)}=q(x_t|x_{t-1},x_0)\frac{q(x_{t-1}|x_0)}{q(x_t|x_0)}

由于这是马尔可夫进程,所以q(xt∣xt−1,x0)=q(xt∣xt−1)q(x_t|x_{t-1},x_0)=q(x_t|x_{t-1})

现在咱们要重点考虑这个部分:

diffusion Model原理之扩散过程与逆扩散过程

前者是:

diffusion Model原理之扩散过程与逆扩散过程

后者是:

diffusion Model原理之扩散过程与逆扩散过程

咱们只考虑指数部分,由于系数部分一定是正数,所以成正比联系。

q(xt∣xt−1,x0)q(xt−1∣x0)q(xt∣x0)q(x_t|x_{t-1},x_0)\frac{q(x_{t-1}|x_0)}{q(x_t|x_0)}

∝exp(−12((xt−txt−1)2t+(xt−1−t−1×0)21−t−1−(xt−tx0)21−t))\propto exp(-\frac{1}{2}( \frac{(x_t-\sqrt{\alpha_t}x_{t-1})^2}{\beta_t}+ \frac{(x_{t-1}-\sqrt{\bar{\alpha}_{t-1}}x_0)^2}{1-\bar{\alpha}_{t-1}}-\frac{(x_t-\sqrt{\bar{\alpha}_t}x_0)^2}{1-\bar{\alpha}_t} ))

咱们要求解xt−1x_{t-1},所以将上面公式收拾一下方式:

exp(−12((tt+11−t−1)xt−12+(−2txtt+−2t−1×01−t−1)xt−1+C(xt,x0))exp(-\frac{1}{2}( (\frac{\alpha_t}{\beta_t}+\frac{1}{1-\bar{\alpha}_{t-1}})x_{t-1}^2 + (\frac{-2\sqrt{\alpha_t}x_t }{\beta_t}+\frac{-2\sqrt{\bar{\alpha}_{t-1}}x_0}{1-\bar{\alpha}_{t-1}})x_{t-1} + C(x_t,x_0))

后面顶不住了。。先歇着吧

diffusion Model原理之扩散过程与逆扩散过程