Learning Diffusion Model
0. 前言
文中的公式和其他文字内容可能存在错误
1. 开始
1.1 在此之前
在此之前需要进行一些定义和引理的说明,减少部分定义在普及过程中的模糊性造成的影响(比如某教材的凸函数)。
1.1.1 定义和约定
凸函数: 均指下凸函数,凹函数则相反
随机变量和期望:若随机变量$X\sim p$,则记$X$的期望是$E(X)$或者$E_p(X)$
p-范数:给定$n$维向量$X=(x_1,…,x_n)$,其$p$范数定义为
$$
||X||p=\left(\sum{i=1}^nx_i^p\right)^{\frac{1}{p}}
$$
1.1.2 引理
Jensen 不等式:已知变量$x\in \Omega$,和函数$w(x)$,以及凸函数$f(x)$(还有一些条件,对后续没什么用,没写了)。如果满足
$$
\int_{x\in\Omega}w(x)\mathrm{d}x=1
$$
则有Jensen不等关系
$$
f\left( \int_{x \in \Omega} xw(x)\mathrm{d}x \right)\leq \int_{x \in \Omega} w(x)f(x)\mathrm{d}x
$$
以及其概率形式:随机变量$X$,期望记作$E(X)$,服从概率密度函数$p(x)$定义的分布。已知凸函数$f(x)$,则满足Jensen不等式关系
$$
f(E_p(X))\leq E_p(f(X))
$$
1.2 Bayes 公式
贝叶斯公式 已知随机事件$A,B$,有贝叶斯公式
$$
P(A|B)=\frac{P(B|A)P(A)}{P(B)}
$$
其中$P(A|B)$记作后验概率,$P(A)$为先验概率,$P(B|A)$是似然
全概率公式 全集$A$有$A_1,…,A_n$个子事件,满足
$$
\cup_{i=1}^nA_i=A\quad \forall i\neq j,A_i\cap A_j=\emptyset
$$
则有全概率公式
$$
P(B)=\sum_{i=1}^nP(B|A_i)P(A_i)
$$
或连续形式
$$
P(B)=\int_{x\in A}P(B|x)P(x)\mathrm{d}x
$$
1.3 KL散度
设空间$\Omega$中连续变量$X\in\Omega$的概率密度函数为$f(X)$,记期望为$E(X)$,则熵的定义为:
$$
H(f)=H(X)=-E(\log f(X))=-\int_{x\in\Omega}f(x)\log f(x)\mathrm{d}x
$$
设空间$\Omega$中连续变量$X\in\Omega$的两个概率密度函数为$f(X),g(X)$,记$X$在分布$f$下的期望为$E_f(X)$,则交叉熵$H(f,g)$衡量了$f,g$的相似性程度
$$
H(f,g)=-E_f(\log g(X))=-\int_{x\in\Omega}f(x)\log g(x)\mathrm{d}x
$$
可以证明在真实分布$f$固定时,错误分布$g=f$时,交叉熵取得最小值
$$
f=\mathop{\arg\min}\limits_{g} \thinspace H(f,g)
$$
即在$g$可变时
$$
\min H(f,g)=H(f,f)=H(f)
$$
证明如下:
设已知分布$p,q$,其中$p$为真实分布,错误分布为$q$
$$
f(x)=H(p,p)-H(p,q)=\int_{x\in\Omega}p(x)\log \frac{q(x)}{p(x)}\mathrm{d}x
$$
由于$\log(x)$是凹函数,因此,由Jensen不等式
$$
f(x)\leq \log\left(\int_{x\in\Omega}p(x)\frac{q(x)}{p(x)}\mathrm{d}x\right)=\log\left(\int_{x\in\Omega}q(x)\mathrm{d}x\right)=0
$$
所以
$$
H(p,p)\leq H(p,q)
$$
在此基础上,可以定义KL散度,或者称为相对熵:对于分布$p,q$的相对熵,定义为
$$
D_{KL}(p||q)=H(p,q)-H(p,p) = -\int_{x\in\Omega}p(x)\log \frac{q(x)}{p(x)}\mathrm{d}x
$$
容易知道KL散度恒非负值。KL散度同样衡量了两个分布之间的相似性。
1.4 Variational Auto-encoder
Variational Auto-encoder 基于普通的Auto-encoder发展而来。自编码器(Auto-encoder)是一种Encoder-Decoder结构的模型,给定输入空间$W$的样本$x\in W$,编码器$e(x;\theta_e)$将$x$编码至特征空间(或潜在空间)$F$中的编码$z\in F$。解码器$d(z;\theta_d)$将$z$解码为$W$中的一个元素$\hat{x}$。
即给定输入$x\in W$,自编码器输出为$\hat{x}=e(d(x;\theta_d);\theta_e)$,其中$\theta_e,\theta_d$为模型参数。训练目标为最小化$x$和$\hat{x}$的差距,例如
$$
L(x;\theta_e,\theta_d)=||x-e(d(x;\theta_d);\theta_e)||_2\
\theta_e,\theta_d=\mathop{\arg\min}\limits \thinspace L
$$
Variational Auto-encoder 的编码器$e(x)$输出一个分布$F=e(x)$,并且满足编码$z\sim F$。此处可以将这个分布记作$q(z|x)$,衡量了给定输入$x$,输出编码$z$的概率密度。相反地,解码器接收一个编码$z$,输出一个$x$,设解码器的概率分布是$p(x|z)$,衡量给定编码$z$时,输出$x$的概率密度。
由此,输出$X$取值为$x$的概率是
$$
P(X=x)=\int_{z\in\Omega}p(x|z)zP(z)\mathrm{d}z = E_z(p(x|z))
$$
此处认为$z$服从同一分布$F$,且$F$为正态分布
Variational Auto-encoder 优化目标是在给定$x$时,最大化$P(X=x;\theta)$,其中$\theta$是模型参数。因此写出对数似然函数
$$
L(x;\theta)=L(x)=\log P(x)
$$
之后,考虑优化此似然函数
$$
\log P(x)=\log P(x)\int_{z\in \Omega}q(z|x)\mathrm{d}z=\int_{z\in \Omega}q(z|x)\log P(x) \mathrm{d}z
$$
$$
\log P(x)=\int_{z\in \Omega}q(z|x)\log \frac{P(z,x)}{p(z|x)} \mathrm{d}z
$$
$$
\log P(x)=\int_{z\in \Omega}q(z|x)\log \frac{P(z,x)q(z|x)}{q(z|x)p(z|x)} \mathrm{d}z
$$
$$
\log P(x)=\int_{z\in \Omega}q(z|x)\log \frac{q(z|x)}{p(z|x)} \mathrm{d}z + \int_{z\in \Omega}q(z|x)\log \frac{P(z,x)}{q(z|x)} \mathrm{d}z = \int_{z\in \Omega}q(z|x)\log \frac{P(z,x)}{q(z|x)} \mathrm{d}z +D_{KL}(q||p)
$$
由于KL散度恒非负值,因此
$$
\log P(x)\geq \int_{z\in \Omega}q(z|x)\log \frac{P(z,x)}{q(z|x)} \mathrm{d}z = \int_{z\in \Omega}q(z|x)\log \frac{p(x|z)P(z)}{q(z|x)} \mathrm{d}z
$$
为其优化的下界,进一步地
$$
\int_{z\in \Omega}q(z|x)\log \frac{p(x|z)P(z)}{q(z|x)} \mathrm{d}z = -D_{KL}(q||P(z))+E_{q(x|z)}(\log p(x|z))
$$
得到优化目标的另一个表达式
TBC…
2. Diffusion Model
2.1. 前向过程
在给定图片$X_0$的条件下,依次对其添加噪声,得到$X_1$。对得到的新图片添加噪声,如此重复$T$次,得到$X_2,…,X_T$的过程即为前向过程。第$t$次前向过程可以表述为(公式2.1.1):
$$
X_t=a_{t}X_{t-1}+b_{t}\epsilon_{t},\quad s.t. \epsilon_{t}\sim N(\mathbf{0},\mathbf{1})
$$
递归展开上述式子,得到
$$
X_t=a_{t}(a_{t-1}X_{t-2}+b_{t-1}\epsilon_{t-1})+b_{t}\epsilon_{t-1}=a_{t}a_{t-1}X_{t-2}+a_{t}b_{t-1}\epsilon_{t-1}+b_{t}\epsilon_{t}
$$
数学归纳法可得
$$
X_T=\left(\prod_{i=1}^Ta_i\right)X_0+\sum_{i=1}^T\left(\left(\prod_{j=i+1}^Ta_j\right) b_i\epsilon_i\right)
$$
公式中加号后侧为正态分布叠加,因此结果仍然为正态分布,故可以重写上式为
$$
X_T=\left(\prod_{i=1}^Ta_i\right)X_0+b_T’\epsilon_T’; \quad s.t.b_T’=\sqrt{\sum_{i=1}^T\left(\prod_{j=i+1}^Ta_j^2\right) b_i^2},\epsilon_{T}’\sim N(\mathbf{0},\mathbf{1})
$$
$$
X_T=a_T’X_0+b_T’\epsilon_T’
$$
考虑下式
$$
S_1(T)=a_T’^2+b_T’^2=\prod_{i=1}^Ta_i^2+\sum_{i=1}^T\left(\prod_{j=i+1}^Ta_j^2\right) b_i^2
$$
$$
S_1(T)=a_T’^2+b_T’^2=a_T^2\prod_{i=1}^{T-1}a_i^2+a_T^2\sum_{i=1}^{T-1}\left(\prod_{j=i+1}^{T-1}a_j^2\right) b_i^2+b_T^2=a_T^2S_1(T-1)+b_T^2
$$
若约束$\forall i,a_i^2+b_i^2=1$,则有$\forall i,S_i(T)=1$,在此约束下,记$\alpha_i=a_i^2$,则公式2.1.1可以重写写成
$$
X_t=\sqrt{\alpha_t}X_{t-1}+\sqrt{1-\alpha_t}\epsilon_{t},\quad s.t. \epsilon_{t}\sim N(\mathbf{0},\mathbf{1})
$$
在确定$X_{t-1}$时,$X_t$服从均值为$\sqrt{\alpha_t}X_{t-1}$,方差为$(1-\alpha_t)\mathbf{1}$的正态分布
$$
X_t\sim N(\sqrt{\alpha_t}X_{t-1},(1-\alpha_t)\mathbf{1})
$$
记该正态分布为$q(X_t|X_{t-1})$,即
$$
q(X_t|X_{t-1}) = N(\sqrt{\alpha_t}X_{t-1},(1-\alpha_t)\mathbf{1})
$$
前向过程的轨迹$q(X_{1:T}|X_0)$定义为
$$
q(X_{1:T}|X_0)=\prod_{i=1}^{T}q(X_i|X_{i-1})
$$
2. 逆向过程
给定已经编码的图片$X_T$,对其解码得到$X_0$的过程为逆向过程,每一个步骤同样可以建模成一个正态分布,即
$$
X_{t-1}\sim p(X_{t-1}|X_t;\theta)
$$
$$
p(X_{t-1}|X_t;\theta)=N(\mu(X_t,t;\theta),\sigma^2(X_t,t;\theta))
$$
其中$\theta$为模型参数。
给定输出$x=x_0$,似然函数$L_0(\theta;x)$描述了从$X_T\to x_0$解码过程的似然性。记对数似然函数为$L(\theta;x)=\log L_0(\theta;x)$
TBC…