Diffusion Model

234 阅读3分钟

具体

文章:[Denoising Diffusion Probabilistic Models]([2006.11239] Denoising Diffusion Probabilistic Models (arxiv.org))

可借鉴的学习视频:视频

代码:暂时未实现

条件概率公式和高斯分布的KL散度

条件概率的一般形式

P(A,B,C)=P(CB,A)P(B,A)=P(CB,A)P(BA)P(A)P(B,CA)=P(BA)P(CA,B)P(A,B,C) = P(C|B,A)P(B,A)=P(C|B,A)P(B|A)P(A)\\ P(B,C|A) = P(B|A)P(C|A,B)

基于马尔科夫链关系A->B->C ,那么有

P(A,B,C)=P(CB,A)P(B,A)=P(CB)P(BA)P(A)P(B,CA)=P(BA)P(CB)P(A,B,C)=P(C|B,A)P(B,A)=P(C|B)P(B|A)P(A)\\ P(B,C|A)=P(B|A)P(C|B)

高斯分布的KL散度公式

对于两个单一变量的高斯分布p,q 而言,它们的KL散度

KL(p,q)=logσ2σ1+σ12+(μ1μ2)22σ2212KL(p,q)=log{\frac{\sigma2}{\sigma1}}+\frac{\sigma_1^2+(\mu1-\mu2)^2}{2\sigma_2^2}-\frac{1}{2}

对于两个正态分布XN(μ1,σ1)X-N(\mu_1,\sigma_1)YN(μ2,σ2)Y-N(\mu_2,\sigma_2)的叠加后的分布aX+bY的均值为aμ1+bμ2a\mu_1+b\mu_2,方差为a2σ12+b2+σ22a^2\sigma_1^2+b^2+\sigma_2^2

因而对于

αtαtαt1zt2+1αtzt1\sqrt{\alpha_t-\alpha_t\alpha_{t-1}}z_{t-2}+\sqrt{1-\alpha_t}z_{t-1}

可以转换成

1αtαt1z,wherezmergetwoGaussians\sqrt{1-\alpha_t\alpha_{t-1}}z,where\:z\:merge\:two\:Gaussians

参数重整化

若希望从高斯分布N(μ,σ2)N(\mu,\sigma^2) 中采样,可以先从标准分布N(0,1)N(0,1) 中采样出zz ,再得到σz+μ\sigma*z +\mu 。这也做的好处是将随机性转移到了zz 这个常量上,而σ,μ\sigma,\mu 则当作仿射变换网络的一部分。(为了可以梯度传播)

马克尔夫链

马尔可夫链(Markov Chain),描述了一种状态序列,其每个状态值取决于前面有限个状态。

马尔可夫链是满足下面两个假设的一种随机过程:

1、t+1时刻系统状态的概率分布只与t时刻的状态有关,与t时刻以前的状态无关;

2、从t时刻到t+1时刻的状态转移与t的值无关。一个马尔可夫链模型可表示为=(S,P,Q),其中各元的含义如下:

1)S是系统所有可能的状态所组成的非空的状态集,有时也称之为系统的状态空间,它可以是有限的、可列的集合或任意非空集。本文中假定S是可数集(即有限或可列)。用小写字母i,j(或Si,Sj)等来表示状态。

2)P是系统的状态转移概率矩阵,其中Pij表示系统在时刻t处于状态i,在下一时刻t+l处于状态j的概率,N是系统所有可能的状态的个数。对于任意i∈s,有。

3)Q是系统的初始概率分布,qi是系统在初始时刻处于状态i的概率,满足。

Diffusion model

原理图示:

image-20221116211352557.png

扩散步骤:

扩散过程本质上是逐渐对初始数据加入高斯噪声的步骤

q(xtxt1)=N(xt;1βtxt1,βtI)q(x1:Tx0)=t=1Tq(xtxt1)EventuallywhenT>xT  isequivalenttoaniostropicGaussiandistributionq(x_t|x_{t-1})=N(x_t;\sqrt{1-\beta_t}x_{t-1},\beta_tI)\\ q(x_{1:T}|x_0)=\prod_{t=1}^{T}q(x_t|x_{t-1})\\ Eventually\:when\:T->\infin\:x_T\;is\:equivalent\:to\:an\:iostropic\:Gaussian\:distribution

它允许以封闭形式在任意时间步长t采样x_t,同时我们使用αt=1βt,αtˉ=Πs=1tαs\alpha_t=1-\beta_t,\bar{\alpha_t}=\Pi_{s=1}^{t}\alpha_s

整体的实验过程当作我们对于βt\beta_t的变化是限制成线性增量的,即为βy(104,0.02)\beta_y\in(10^{-4},0.02)之间

那儿我们就可以有下列的式子

q(xtx0)=N(xt;αtˉx0,(1αtˉ)I)q(x_t|x_0)=N(x_t;\sqrt{\bar{\alpha_t}}x_0,(1-\bar{\alpha_t})I)

image-20221201223939934.png

image-20221201223923878.png

逆扩散步骤:

逆过程是从高斯噪声中恢复原始数据,我们可以假设它也是一个高斯分布,但是无法逐步地拟合分布,所以需要构建一个参数分布来去做估计。逆扩散过程仍然是一个马克尔夫链过程。

pθ(x0:T)=p(xT)t=1Tpθ(xt1xt)=N(xt1;μθ(xt,t),θ(xt,t))p_{\theta}(x_{0:T})=p(x_T)\prod_{t=1}^{T}p_{\theta}(x_{t-1}|x_t)=N(x_{t-1};\mu_{\theta}(x_t,t),\sum\theta(x_t,t))

后验的扩散条件概率q(xt1xt,x0)q(x_{t-1}|x_t,x_0)分布是可以用公式表达的

这也就是说,给定xt,x0x_t,x_0,我们是可以计算出xt1x_{t-1}

注意:高斯分布的概率密度函数f(x)=12πσexp(xμ)22σ2f(x)=\frac{1}{\sqrt{2\pi}\sigma}\exp^{\frac{-(x-\mu)^2}{2\sigma^2}}

image-20221201224745920.png

对于该式子,我们进行数据的替换,同时结合正向扩散的过程可以得到下列的式子

xt(x0,ϵ)=αtˉx0+1αtˉϵforϵN(0,I)x_t(x_0,\epsilon ) = \sqrt{\bar{\alpha_t}}x_0 + \sqrt{1-\bar{\alpha_t}}\epsilon \quad for\quad \epsilon ∼ N (0, I)

image-20221201224217376.png

整体的思路

image-20221201203440072.png