条件概率的一般形式
P(A,B,C)=P(C∣B,A)P(B,A)=P(C∣B,A)P(B∣A)P(A)P(A,B,C) = P(C|B,A)P(B,A)=P(C|B,A)P(B|A)P(A)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)P(B,C|A)=P(B|A)P(C|A,B)P(B,C∣A)=P(B∣A)P(C∣A,B)
基于马尔科夫假设的条件概率
如果满足马尔科夫链关系A→B→CA\rightarrow B \rightarrow CA→B→C,则有:
P(A,B,C)=P(C∣B,A)P(B,A)=P(C∣B,A)P(B∣A)P(A)=P(C∣B)P(B∣A)P(A)P(A,B,C) = P(C|B,A)P(B,A)=P(C|B,A)P(B|A)P(A)=P(C|B)P(B|A)P(A)P(A,B,C)=P(C∣B,A)P(B,A)=P(C∣B,A)P(B∣A)P(A)=P(C∣B)P(B∣A)P(A)
P(B,C∣A)=P(B∣A)P(C∣A,B)=P(B∣A)P(C∣B)P(B,C|A)=P(B|A)P(C|A,B)=P(B|A)P(C|B)P(B,C∣A)=P(B∣A)P(C∣A,B)=P(B∣A)P(C∣B)
高斯分布的KL散度公式
对于两个单一变量的高斯分布 ppp 和 qqq 而言,它们的KL散度为:
KL(p,q)=logσ2σ1+σ2+(μ1−μ2)22σ22−12KL(p,q)=log\frac{\sigma_{2}}{\sigma_{1}}+\frac{\sigma^{2}+(\mu_{1}-\mu_{2})^{2}}{2\sigma_{2}^{2}}-\frac{1}{2}KL(p,q)=logσ1σ2+2σ22σ2+(μ1−μ2)2−21
推导可以看这篇____高斯分布的KL散度公式
重参数技巧
如果想从高斯分布N(μ,σ2)N(\mu,\sigma^{2})N(μ,σ2)中采样,可以先从标准分布N(0,1)N(0,1)N(0,1)采样出 zzz , 再得到 σ∗z+μ\sigma*z+\muσ∗z+μ.这样做的好处是:将随机性转移到了 zzz 这个常量上,而 σ\sigmaσ和μ\muμ则当做仿射变换网络的一部分。
σ∗z\sigma * zσ∗z就把随机性加到了标准差σ\sigmaσ 上, zzz 取0附近的值的概率最大,σ∗z+μ\sigma * z+\muσ∗z+μ 就相当于在N(μ,σ)N(\mu,\sigma)N(μ,σ)中采样了
x−>zx->zx−>z为后验,训练的过程,train
z−>xz->xz−>x为inference过程,(丢掉train的过程)
p(x)=∫zpθ(x,z)dz=∫zpθ(x∣z)p(z)dzp(x)=\int_{z}p_{\theta}(x,z)dz=\int_{z}p_{\theta}(x|z)p(z)dzp(x)=∫zpθ(x,z)dz=∫zpθ(x∣z)p(z)dz
p(x)=∫qϕ(z∣x).pθ(x∣z)p(z)qϕ(z∣x)dz=Ez∼qϕ(z∣x)[pθ(x∣z)p(z)qϕ(z∣x)]p(x)=\int q_{\phi}(z|x).\frac{p_{\theta}(x|z)p(z)}{q_{\phi}(z|x)}dz =\mathbb{E}_{z\sim q_{\phi}(z|x)}\left[\frac{p_{\theta}(x|z)p(z)}{q_{\phi}(z|x)}\right]p(x)=∫qϕ(z∣x).qϕ(z∣x)pθ(x∣z)p(z)dz=Ez∼qϕ(z∣x)[qϕ(z∣x)pθ(x∣z)p(z)]
logp(x)=logEz∼qϕ(z∣x)[pθ(x∣z)p(z)qϕ(z∣x)]≥JenseInequalityEz∼qϕ(z∣x)[logpθ(x∣z)p(z)qϕ(z∣x)]log\,p(x)=log\,\mathbb{E}_{z\sim q_{\phi}(z|x)}\left[\frac{p_{\theta}(x|z)p(z)}{q_{\phi}(z|x)}\right]\overset{Jense \,Inequality}{\ge}\mathbb{E}_{z\sim q_{\phi}(z|x)}\left[log\,\frac{p_{\theta}(x|z)p(z)}{q_{\phi}(z|x)}\right]logp(x)=logEz∼qϕ(z∣x)[qϕ(z∣x)pθ(x∣z)p(z)]≥JenseInequalityEz∼qϕ(z∣x)[logqϕ(z∣x)pθ(x∣z)p(z)]
所以:
logp(x)≥Ez∼qϕ(z∣x)[logpθ(x∣z)p(z)qϕ(z∣x)]⏟ELBOlog\,p(x)\ge\underbrace{\mathbb{E}_{z\sim q_{\phi}(z|x)}\left[log\,\frac{p_{\theta}(x|z)p(z)}{q_{\phi}(z|x)}\right]}_{ELBO}logp(x)≥ELBOEz∼qϕ(z∣x)[logqϕ(z∣x)pθ(x∣z)p(z)]
目的:使得xxx出现的概率最大,即要最大化logp(x)log\,p(x)logp(x),那有Jensen不等式求得了logp(x)log\,p(x)logp(x)的下界,现在只需要最大化下界即可。最大化下界了,那logp(x)log\,p(x)logp(x)也就最大化了。即至此为止,我们要优化的目标函数已经找到了。
Jensen不等式:
log∑iλiyi≥∑iλilogyi其中,λi≥0,∑iλi=1log\underset{i}{\sum}\lambda_{i}y_{i}\ge \underset{i}{\sum}\lambda_{i}log\,y_{i}\quad\quad其中,\lambda_{i}\ge0,\underset{i}{\sum}\lambda_{i}=1logi∑λiyi≥i∑λilogyi其中,λi≥0,i∑λi=1
下界:
Ez∼qϕ(z∣x)[logpθ(x∣z)p(z)qϕ(z∣x)]=Ez∼qϕ(z∣x)[logpθ(x∣z)−logqϕ(z∣x)p(z)]=Ez∼qϕ(z∣x)[logpθ(x∣z)⏟由inference可以容易得到]−∫qϕ(z∣x)logqϕ(z∣x)p(z)⏟KL(qϕ∣∣p)\begin{aligned} &\mathbb{E}_{z\sim q_{\phi}(z|x)}\left[log\,\frac{p_{\theta}(x|z)p(z)}{q_{\phi}(z|x)}\right]\\ &=\mathbb{E}_{z\sim q_{\phi}(z|x)}\left[log\,p_{\theta}(x|z)-log\,\frac{q_{\phi}(z|x)}{p(z)}\right]\\ &=\mathbb{E}_{z\sim q_{\phi}(z|x)}\left[\underbrace{log\,p_{\theta}(x|z)}_{由inference可以容易得到}\right]- \underbrace{\int q_{\phi}(z|x) log\,\frac{q_{\phi}(z|x)}{p(z)}}_{KL(q_{\phi}||p)} \end{aligned}Ez∼qϕ(z∣x)[logqϕ(z∣x)pθ(x∣z)p(z)]=Ez∼qϕ(z∣x)[logpθ(x∣z)−logp(z)qϕ(z∣x)]=Ez∼qϕ(z∣x)由inference可以容易得到logpθ(x∣z)−KL(qϕ∣∣p)∫qϕ(z∣x)logp(z)qϕ(z∣x)
一般假设p,qp,qp,q均为高斯分布,所以整个单层的VAE是可以求解的
分子分母同乘一个后验分布??????
p(x)=∫z1∫z2pθ(x,z1,z2)dz1,dz2p(x)=\int_{z_{1}}\int_{z_{2}}p_{\theta}(x,z_{1},z_{2})dz_{1},dz_{2}p(x)=∫z1∫z2pθ(x,z1,z2)dz1,dz2
p(x)=∬qϕ(z1,z2∣x)pθ(x,z1,z2)qϕ(z1,z2∣x)dz1,dz2=Ez1,z2∼qϕ(z1,z2∣x)[pθ(x,z1,z2)qϕ(z1,z2∣x)]p(x)=\iint q_{\phi}\left(z_{1}, z_{2} \mid x\right) \frac{p_{\theta}\left(x, z_{1}, z_{2}\right)}{q_{\phi}\left(z_{1}, z_{2} \mid x\right)}dz_{1},dz_{2}=\mathbb{E}_{z_{1}, z_{2} \sim q_{\phi}\left(z_{1}, z_{2} \mid x\right)}\left[\frac{p_{\theta}\left(x, z_{1}, z_{2}\right)}{q_{\phi}\left(z_{1}, z_{2} \mid x\right)}\right]p(x)=∬qϕ(z1,z2∣x)qϕ(z1,z2∣x)pθ(x,z1,z2)dz1,dz2=Ez1,z2∼qϕ(z1,z2∣x)[qϕ(z1,z2∣x)pθ(x,z1,z2)]
logp(x)≥Ez1,z2∼qϕ(z1,z2∣x)[logpθ(x,z1,z2)qϕ(z1,z2∣x)]⏟ELBO\log p(x) \geq \underbrace{\mathbb{E}_{z_{1}, z_{2} \sim q_{\phi}\left(z_{1}, z_{2} \mid x\right)}\left[\log \frac{p_{\theta}\left(x, z_{1}, z_{2}\right)}{q_{\phi}\left(z_{1}, z_{2} \mid x\right)}\right]}_{ELBO}logp(x)≥ELBOEz1,z2∼qϕ(z1,z2∣x)[logqϕ(z1,z2∣x)pθ(x,z1,z2)]
q(z1,z2∣x)=q(z1∣x)q(z2∣z1,x)=马尔科夫性质q(z1∣x)q(z2∣z1)q(z_{1},z_{2}|x)=q(z_{1}|x)q(z_{2}|z_{1},x)\xlongequal[]{马尔科夫性质}q(z_{1}|x)q(z_{2}|z_{1})q(z1,z2∣x)=q(z1∣x)q(z2∣z1,x)马尔科夫性质q(z1∣x)q(z2∣z1)
同理:
p(x,z1,z2)=p(x∣z1)p(z1∣z2)p(z2)p(x,z_{1},z_{2})=p(x|z_{1})p(z_{1}|z_2)p(z_2)p(x,z1,z2)=p(x∣z1)p(z1∣z2)p(z2)
所以多层VAE的目标函数为:L(θ,ϕ)\mathcal{L}(\theta, \phi)L(θ,ϕ)
L(θ,ϕ)=Eq(z1,z2∣x)[logp(x∣z1)−logq(z1∣x)+logp(z1∣z2)−logq(z2∣z1)+logp(z2)]\mathcal{L}(\theta, \phi)=\mathbb{E}_{q\left(z_{1}, z_{2} \mid x\right)}\left[\log p\left(x \mid z_{1}\right)-\log q\left(z_{1} \mid x\right)+\log p\left(z_{1} \mid z_{2}\right)-\log q\left(z_{2} \mid z_{1}\right)+\log p\left(z_{2}\right)\right]L(θ,ϕ)=Eq(z1,z2∣x)[logp(x∣z1)−logq(z1∣x)+logp(z1∣z2)−logq(z2∣z1)+logp(z2)]
Diffusion 的目标函数和多层VAE的目标函数很像。
从右往左:正向过程,q:条件概率分布(不含参数),扩散过程,熵增过程,加噪过程,逐渐变为–>高斯分布
从左往右:反向过程/重建过程/生成过程:逆扩散过程,pθp_{\theta}pθ:条件概率分布(含参数),从噪声分布中推出目标分布,从目标分布中采样新样本,这样就可以生成新的图片。在推理的时候只用到逆扩散过程\color{red}在推理的时候只用到逆扩散过程在推理的时候只用到逆扩散过程
目的:搞懂逆扩散过程是咋弄的,这样就可以由噪声来生成新图片了{\color{red}目的:}{\color{blue}搞懂逆扩散过程是咋弄的,这样就可以由噪声来生成新图片了}目的:搞懂逆扩散过程是咋弄的,这样就可以由噪声来生成新图片了
Figure1.瑞士卷图解:
第一行为从左到右:q(x(0⋯T))q(\mathrm{x}^{(0\cdots T)})q(x(0⋯T)): pic–> noise加噪过程
第二行为从右到左:p(x(0⋯T))p(\mathrm{x}^{(0\cdots T)})p(x(0⋯T)): noise->pic去噪过程
第三行为漂移量:q和p之间的差q和p之间的差q和p之间的差
x0∼q(x)x_{0}\sim q(x)x0∼q(x)即训练集服从q(x)q(x)q(x)分布,即扩散过程,βt\beta_{t}βt是已知的,确定的(像learning rate),,它不是通过网络预测的。扩散过程不含参数。
3. 任意时刻的q(xt)q(x_{t})q(xt)推导也可以完全基于x0x_{0}x0和β\betaβ来计算出来,而不需要做迭代。
注意:两个正态分布X∼N(μ1,σ12)X\sim N(\mu_{1},\sigma_{1}^{2})X∼N(μ1,σ12)和Y∼N(μ2,σ22)Y\sim N(\mu_{2},\sigma_{2}^{2})Y∼N(μ2,σ22)的叠加后的分布aX+bYaX+bYaX+bY的均值为aμ1+bμ2a\mu_{1}+b\mu_{2}aμ1+bμ2, 方差为a2σ12+b2σ22a^{2}\sigma_{1}^{2}+b^{2}\sigma_{2}^{2}a2σ12+b2σ22。所以αt−αtαt−1zt−2+1−αtzt−1\sqrt{\alpha_{t}-\alpha_{t}\alpha_{t-1}}z_{t-2}+\sqrt{1-\alpha_{t}}z_{t-1}αt−αtαt−1zt−2+1−αtzt−1可以重参数化成只含一个随机变量 zzz 构成的 1−αtαt−1z\sqrt{1-\alpha_{t}\alpha_{t-1}}z1−αtαt−1z的形式。
A nice property of the above process is that we can sample xt\mathrm{x_{t}}xt at any arbitrary time step ttt in a closed form using reparameterizationtrick\color{orange}\mathrm{reparameterization\,trick}reparameterizationtrick. Let αt=1−βt\alpha_{t}=1-\beta_{t}αt=1−βt and αˉt=∏i=1tαi\bar\alpha_{t}=\prod\limits_{i=1}^{t}\alpha_{i}αˉt=i=1∏tαi
q(xt∣xt−1)=N(xt;1−βtxt−1,βtI),βtq(x_{t}|x_{t-1})=\mathcal{N}(x_{t};\sqrt{1-\beta_{t}}x_{t-1},\beta_{t}I), \beta_{t}q(xt∣xt−1)=N(xt;1−βtxt−1,βtI),βt是方差,标准差是βt\sqrt{\beta_{t}}βt
如何生成xt呢?利用重参数技巧\color{blue}如何生成x_{t}呢?利用重参数技巧如何生成xt呢?利用重参数技巧
先从正态分布中生成一个zt−1z_{t-1}zt−1, 然后把 βt.zt−1+1−βtxt−1\sqrt{\beta_{t}}.z_{t-1}+\sqrt{1-\beta_{t}}x_{t-1}βt.zt−1+1−βtxt−1 作为 xtx_{t}xt 的一个采样值,不断迭代得到 xTx_{T}xT, 其中βt\beta_{t}βt是随着ttt不断增加的。
−−−−−−−−xt的推导过程−−−−−−−−−−−--------{\color{blue}x_{t}的推导过程}-----------−−−−−−−−xt的推导过程−−−−−−−−−−−
xt=1−βtxt−1+βt.zt−1①x_{t}=\sqrt{1-\beta_{t}}x_{t-1}+\sqrt{\beta_{t}}.z_{t-1}\quad\quad\quad\quad\,\,\,\,①xt=1−βtxt−1+βt.zt−1①
xt−1=1−βt−1xt−2+βt−1.zt−2②x_{t-1}=\sqrt{1-\beta_{t-1}}x_{t-2}+\sqrt{\beta_{t-1}}.z_{t-2}\quad\quad②xt−1=1−βt−1xt−2+βt−1.zt−2②
令αt=1−βt,αˉt=∏i=1tαi\alpha_{t}=1-\beta_{t}, \bar\alpha_{t}=\prod\limits_{i=1}^{t}\alpha_{i}αt=1−βt,αˉt=i=1∏tαi,并将②带入①中得:疑惑:那βt应该代表是是方差吧,即σ2\color{red}疑惑:那\beta_{t}应该代表是是方差吧,即\sigma^{2}疑惑:那βt应该代表是是方差吧,即σ2
xt=1−βtxt−1+βt.zt−1=αtxt−1+1−αt.zt−1=αtαt−1xt−2+αt(1−αt−1)zt−2+1−αt.zt−1⏟重参数技巧=αtαt−1xt−2+1−αtαt−1zˉt−2=⋯=αˉtx0+1−αˉtz\begin{aligned} x_{t}&=\sqrt{1-\beta_{t}}x_{t-1}+\sqrt{\beta_{t}}.z_{t-1}\\&=\sqrt{\alpha_{t}}x_{t-1}+\sqrt{1-\alpha_{t}}.z_{t-1}\\ &=\sqrt{\alpha_{t}\alpha_{t-1}}x_{t-2}+\underbrace{\sqrt{\alpha_{t}(1-\alpha_{t-1})}z_{t-2}+\sqrt{1-\alpha_{t}}.z_{t-1}}_{重参数技巧}\\ &=\sqrt{\alpha_{t}\alpha_{t-1}}x_{t-2}+\sqrt{1-\alpha_{t}\alpha_{t-1}}\bar z_{t-2}\\ &=\cdots\\ &=\sqrt{\bar\alpha_{t}}x_{0}+\sqrt{1-\bar\alpha_{t}}z \end{aligned}xt=1−βtxt−1+βt.zt−1=αtxt−1+1−αt.zt−1=αtαt−1xt−2+重参数技巧αt(1−αt−1)zt−2+1−αt.zt−1=αtαt−1xt−2+1−αtαt−1zˉt−2=⋯=αˉtx0+1−αˉtz
q(xt∣x0)=N(x;αˉtx0,(1−αˉt)I)q(x_{t}|x_{0})=\mathcal{N}(x;\sqrt{\bar\alpha_{t}}x_{0},(1-\bar\alpha_{t})I)q(xt∣x0)=N(x;αˉtx0,(1−αˉt)I),其中,方差为(1−αˉt)I(1-\bar\alpha_{t})I(1−αˉt)I, 即σ2\sigma^{2}σ2
因为所有的 zzz 都是从正态分布N(0,1)N(0,1)N(0,1)中采样出来的,再由3中的两个正太分布的叠加提示得:
Letzˉt−2=[αt(1−αt−1)zt−2+1−αt.zt−1],thenzˉt−2∼N(0,1−αtαt−1)Let\,\bar z_{t-2}=\left[\sqrt{\alpha_{t}(1-\alpha_{t-1})}z_{t-2}+\sqrt{1-\alpha_{t}}.z_{t-1}\right],then\, \, \bar z_{t-2}\sim\mathcal{N}(0,1-\alpha_{t}\alpha_{t-1})Letzˉt−2=[αt(1−αt−1)zt−2+1−αt.zt−1],thenzˉt−2∼N(0,1−αtαt−1)
即zt−1∼N(0,1),zt−2∼N(0,1)z_{t-1}\sim\mathcal{N}(0,1),z_{t-2}\sim\mathcal{N}(0,1)zt−1∼N(0,1),zt−2∼N(0,1),所以aX+bY的均值为:0,方差为:1−αtαt−11-\alpha_{t}\alpha_{t-1}1−αtαt−1,即 zˉt−2\bar z_{t-2}zˉt−2 也是从高斯分布中采样得到的
−−−−−−−−−−−−−−−−−−−-------------------−−−−−−−−−−−−−−−−−−−
总结:xt=αˉtx0+1−αˉtzt③x_{t}=\sqrt{\bar\alpha_{t}}x_{0}+\sqrt{1-\bar\alpha_{t}}z_{t}\quad\quad③xt=αˉtx0+1−αˉtzt③,那当T为多少时,xTx_{T}xT才能真变为各向独立的高斯分布呢?
即αˉt→1,1−αˉt→0\bar\alpha_{t}\rightarrow1,\quad\quad1-\bar\alpha_{t}\rightarrow0αˉt→1,1−αˉt→0时,q(xt∣x0)=N(x;αˉtx0,(1−αˉt)I)q(x_{t}|x_{0})=\mathcal{N}(x;\sqrt{\bar\alpha_{t}}x_{0},(1-\bar\alpha_{t})I)q(xt∣x0)=N(x;αˉtx0,(1−αˉt)I)变为标准的高斯分布 N(0,1)\mathcal{N}(0,1)N(0,1), 由上式可以求出当t=t=t=何值时,q(xt∣x0)q(x_{t}|x_{0})q(xt∣x0)约等于标准的高斯分布。
为什么要让最后的q(xt∣x0)约等于标准的高斯分布?\color{red}为什么要让最后的q(x_{t}|x_{0})约等于标准的高斯分布?为什么要让最后的q(xt∣x0)约等于标准的高斯分布?
因为让扩散过程扩散到最后,即不断加噪,然后最后变成标准高斯分布,这样逆扩散过程就可以由任意的一个标准高斯分布的初始状态通过逆扩散过程最后生成新的样本
Diffusion 过程完全不含参数
由式③得:只要给定初始分布x0x_{0}x0, 则任何时刻的采样值均可以算出,方法有两种:1.迭代;2.直接算(需要预先计算出αt\alpha_{t}αt)
VAE:
当分布越来越接近于噪声分布时,可让βt\beta_{t}βt增大,越来越大。同理,在xT→x0x_{T}\rightarrow x_{0}xT→x0逆扩散过程中, 最开始的几步可能还是噪声的模样,到最后面的几步就很快显示出图片的模样了。