注: p θ ( x ∣ z ) p_{\theta}(x|z) pθ(x∣z)可以理解为“生成器”,把高斯 z z z映射到数据分布 x x x
注:Diffusion model的部分理论推导和VAE很相似
目的是能够得到真实数据的分布 p ( x ) p(x) p(x),这样就可以随意的生成数据。
借助隐变量 z z z描述 x x x的分布 p ( x ) p(x) p(x): p ( x ) = ∫ p ( x , z ) d z = ∫ p ( x ∣ z ) p ( z ) d z p(x) = \int p(x,z)dz = \int p(x|z)p(z)dz p(x)=∫p(x,z)dz=∫p(x∣z)p(z)dz
目标是最大化似然 p θ ( x ) p_{\theta}(x) pθ(x), p θ ( x ) p_{\theta}(x) pθ(x) = p θ ( z , x ) p θ ( z ∣ x ) \frac{p_{\theta}(z,x)}{p_{\theta}(z|x)} pθ(z∣x)pθ(z,x)= p θ ( z ) p θ ( x ∣ z ) p θ ( z ∣ x ) \frac{p_{\theta}(z)p_{\theta}(x|z)}{p_{\theta}(z|x)} pθ(z∣x)pθ(z)pθ(x∣z)
但是 p θ ( z ∣ x ) {p_{\theta}(z|x)} pθ(z∣x)是intractable的,通常我们都需要借助variational inference的技巧,采用 q ϕ ( z ∣ x ) {q_{\phi}(z|x)} qϕ(z∣x)去近似它。
将最大化似然 p θ ( x ) p_{\theta}(x) pθ(x)转化成使得 ELBO(变分下界)最大
模型似然 log p θ ( x ) ≥ E L B O \log p_{\theta}(x) \geq ELBO logpθ(x)≥ELBO,
E L B O = E z ∼ q ϕ ( z ∣ x ) [ log p θ ( x ∣ z ) + log p ( z ) − log q ϕ ( z ∣ x ) ] = E z ∼ q ϕ ( z ∣ x ) log p θ ( x ∣ z ) − D K L ( q ϕ ( z ∣ x ) ∣ ∣ p ( z ) ) ELBO = \mathbb{E}_{z\sim q_{\phi}(z|x)} [\log p_{\theta}(x|z) + \log p(z) - \log q_{\phi}(z|x)] = \mathbb{E}_{z\sim q_{\phi}(z|x)} \log p_{\theta}(x|z) - D_{KL}(q_{\phi}(z|x)||p(z)) ELBO=Ez∼qϕ(z∣x)[logpθ(x∣z)+logp(z)−logqϕ(z∣x)]=Ez∼qϕ(z∣x)logpθ(x∣z)−DKL(qϕ(z∣x)∣∣p(z))
p θ ( x ∣ z ) p_{\theta}(x|z) pθ(x∣z)为decoder部分, q ϕ ( z ∣ x ) q_{\phi}(z|x) qϕ(z∣x)为encoder部分
模型的优化的loss为 L V A E ( θ , ϕ ) = − E L B O = D K L ( q ϕ ( z ∣ x ) ∣ ∣ p ( z ) ) − E z ∼ q ϕ ( z ∣ x ) log p θ ( x ∣ z ) L_{VAE}(\theta,\phi) = -ELBO = D_{KL}(q_{\phi}(z|x)||p(z)) - \mathbb{E}_{z\sim q_{\phi}(z|x)} \log p_{\theta}(x|z) LVAE(θ,ϕ)=−ELBO=DKL(qϕ(z∣x)∣∣p(z))−Ez∼qϕ(z∣x)logpθ(x∣z)
第一项为计算两个多元高斯分布的KL散度
第二项为重建误差(reconstruction error),因为正是给定下 z z z生成真实数据的似然,对于一个给定的训练样本 x i x^i xi,我们可以采用蒙特卡洛方法(Monte Carlo method)来估计这个数学期望,即从 q ϕ ( z ∣ x i ) q_{\phi}(z|x^i) qϕ(z∣xi)多次采样来估计 − E z ∼ q ϕ ( z ∣ x ) log p θ ( x i ∣ z ) ≈ − 1 L ∑ l = 1 L log p θ ( x i ∣ z ( i , l ) ) - \mathbb{E}_{z\sim q_{\phi}(z|x)} \log p_{\theta}(x^i|z) \approx -\frac{1}{L}\sum^{L}_{l=1}\log p_{\theta}(x^i|z^{(i,l)}) −Ez∼qϕ(z∣x)logpθ(xi∣z)≈−L1∑l=1Llogpθ(xi∣z(i,l))
GAN和Flow-based Model,都是只需要一个“生成器”,先采样高斯噪声,然后用“生成器”把这个高斯噪声映射到数据分布就可以,而且只关心生成。
但是GAN和Flow-based Model也有别的缺陷,比如GAN还需要额外训练判别器,这导致训练很困难;而Flow-based Model需要模型是可逆函数,不能随便用一个图像分类or分割领域的SOTA神经网络,这也导致模型表达能力受限。
只需要训练“生成器”,训练目标函数简单,而且不需要训练别的网络(判别器/后验分布等),并且这个生成器没啥限制,可以随便选表达能力极强的神经网络。
前向和反向是两条马尔可夫链。
前向过程(加噪过程)
1、前者通常是手工设计的,目的是将任何数据分布转换为简单的先验分布(例如,标准高斯)
2、定义: q ( x t ∣ x t − 1 ) = N ( x t ; 1 − β t x t − 1 , β t I ) q(x_t |x_{t-1}) = \mathcal{N}(x_t;\sqrt{1- \beta_t}x_{t-1},\beta_t\mathcal{I}) q(xt∣xt−1)=N(xt;1−βtxt−1,βtI)
原图 x 0 x_0 x0,通过不断的高斯采样噪声,得到 x t x_t xt。当 t t t趋近无穷, x T x_T xT得到的就是标准的高斯噪声,均值为0,方差为1。
3、任意时刻的 x t x_t xt能通过 x 0 x_0 x0和 β \beta β表示,假设 α t = 1 − β t \alpha_t = 1-\beta_t αt=1−βt,并且 α ‾ t = ∏ i = 1 T α i \overline\alpha_t =\prod^T_{i=1}\alpha_i αt=∏i=1Tαi,展开 x t x_t xt可以得到: x t = α ‾ t x 0 + 1 − α ‾ t z ‾ t x_t=\sqrt{\overline\alpha_t}x_0+\sqrt{1-\overline\alpha_t}\overline{z}_t xt=αtx0+1−αtzt
反向过程(去噪过程)
1、利用 x t x_t xt,使用一个深度学习模型(U-net,参数为 θ \theta θ),去计算出 x t − 1 x_{t-1} xt−1
2、定义: p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , ∑ θ ( x t , t ) ) p_\theta(x_{t-1}|x_t)=\mathcal{N}(x_{t-1};\mu_\theta(x_t,t),\sum_\theta(x_t,t)) pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),∑θ(xt,t))
推理过程
最大化 p θ ( x ) p_{\theta}(x) pθ(x),求解和VAE类似,区别就是 x 0 x_0 x0到隐变量 z z z的后验变成 x 0 x_0 x0到 x t − 1 x_{t-1} xt−1的后验。和VAE的推导下界类似
完全展开后,优化的目标为
其中由于 q ( x t − 1 ∣ x t , x 0 ) = q ( x t ∣ x t − 1 , x 0 ) q ( x t − 1 ∣ x 0 ) q ( x t ∣ x 0 ) q(x_{t-1}|x_t,x_0)=q(x_{t}|x_{t-1},x_0)\frac{q(x_{t-1}|x_0)}{q(x_{t}|x_0)} q(xt−1∣xt,x0)=q(xt∣xt−1,x0)q(xt∣x0)q(xt−1∣x0),可推导其分布如下:
这个推导用于采样生成的噪声计算得到 x t − 1 x_{t-1} xt−1的均值
再看一下优化的目标,没有参数的部分可以直接忽略,即 L T L_T LT。而 L t − 1 L_{t-1} Lt−1根据多元高斯分布的KL散度求解等价于下面的式子
最后把式子(7)的均值代进(8)的左边,将 x t x_t xt通过 x 0 x_0 x0进行表示,可得最终的优化目标
最后得到的简化后的loss如下:
可以理解为拉近每一时刻对应的前向和后向两个噪声分布。
上面是discrete model (DDPM) 最先提出的形式
下面是continuous model (SDE) 完善理论框架
首次揭示了diffusion model的连续版本对应的数学背景,并且将统计机器学习中的denoising score matching方法与DDPM中的去噪训练统一起来。