前言
DDPM是2020年被提出来的一篇论文,论文全称是《Denoising Diffusion Probabilistic Models》去噪扩散概率模型,这是一种基于马尔科夫链的图像生成模型,其生成的图像质量更好,多样性更强,并且训练更加稳定。DDPM模型的工作原理包括两个主要过程:前向过程(扩散过程)和反向过程(逆扩散过程)。在前向过程中,模型逐步向数据中添加噪声,直到数据完全变成高斯噪声;而在反向过程中,模型则逐步从高斯噪声中去除噪声,最终生成原始数据或新的数据样本。接下来我们详细介绍一下DDPM这篇论文。
一、建模
图像生成可以建模如下图所示:
首先从一个简单的分布Z中(例如高斯分布)进行采样,然后将其经过神经网络,使得最后生成图像X的概率 P θ ( x ) P_{\theta}(x) Pθ(x)和从真实分布中采样到图像X的概率 P d a t a ( x ) P_{data}(x) Pdata(x)相同。我们要求的就是神经网络的参数 θ \theta θ。
假设我们可以计算出 P θ ( x ) P_{\theta}(x) Pθ(x)的概率,在 P d a t a ( x ) P_{data}(x) Pdata(x)中进行采样的到{
x 1 , x 2 , x 3 , . . . , x m x^1,x^2,x^3,...,x^m x1,x2,x3,...,xm},则神经网络的优化目标就是极大似然估计,
这个公式可以理解为找到一个网络参数 θ \theta θ,让其产生{
x 1 , x 2 , x 3 , . . . , x m x^1,x^2,x^3,...,x^m x1,x2,x3,...,xm}的概率连乘最大。也就是说最终连乘概率最大,则 P θ ( x ) P_\theta(x) Pθ(x)和 P d a t a ( x ) P_{data}(x) Pdata(x)两个分布越接近。
为什么最大似然估计(连乘概率越大),两个分布越接近呢?这个是可以通过数学公式推导出来。直接上结果:
因此可以理解为最大似然估计可以近似等于最小化两个分布之间的KL散度。
对于最大似然公式,我们在前面加入 log \log log,如下所示:
对于每一个 log P ( x ) \log P(x) logP(x),对其进行变形,
log P ( x ) = ∫ z q ( z ∣ x ) log P ( x ) d z = ∫ z q ( z ∣ x ) log ( P ( z , x ) P ( z ∣ x ) ) d z = ∫ z q ( z ∣ x ) log ( P ( z , x ) q ( z ∣ x ) q ( z ∣ x ) P ( z ∣ x ) ) d z = ∫ z q ( z ∣ x ) log ( P ( z , x ) q ( z ∣ x ) ) d z + ∫ z q ( z ∣ x ) log ( q ( z ∣ x ) P ( z ∣ x ) ) d z ⩾ ∫ z q ( z ∣ x ) log ( P ( z , x ) q ( z ∣ x ) ) d z = E q ( z ∣ x ) [ log ( P ( x , z ) q ( z ∣ x ) ) ] \log P (x) \\= \int_zq(z|x)\log P(x)dz \\= \int_zq(z|x)\log(\frac{P(z,x)}{P(z|x)})dz \\= \int_zq(z|x)\log(\frac{P(z,x)}{q(z|x)}\frac{q(z|x)}{P(z|x)})dz \\= \int_zq(z|x)\log(\frac{P(z,x)}{q(z|x)})dz + \int_zq(z|x)\log(\frac{q(z|x)}{P(z|x)})dz \\\geqslant\int_zq(z|x)\log(\frac{P(z,x)}{q(z|x)})dz \\= E_{q(z|x)}[\log(\frac{P(x,z)}{q(z|x)})] logP(x)=∫zq(z∣x)logP(x)dz=∫zq(z∣x)log(P(z∣x)P(z,x))dz=∫zq(z∣x)log(q(z∣x)P(z,x)P(z∣x)q(z∣x))dz=∫zq(z∣x)log(q(z∣x)P(z,x))dz+∫zq(z∣x)log(P(z∣x)q(z∣x))dz⩾∫zq(z∣x)log(q(z∣x)P(z,x))dz=Eq(z∣x)[log(q(z∣x)P(x,z))]
可以得出, log P ( x ) \log P(x) logP(x)的下界为 E q ( z ∣ x ) [ log ( P ( x , z ) q ( z ∣ x ) ) ] E_{q(z|x)}[\log(\frac{P(x,z)}{q(z|x)})] Eq(z∣x)[log(q(z∣x)P(x,z))],最大化 log P ( x ) \log P(x) logP(x)的问题可以转化为最大化 E q ( z ∣ x ) [ log ( P ( x , z ) q ( z ∣ x ) ) ] E_{q(z|x)}[\log(\frac{P(x,z)}{q(z|x)})] Eq(z∣x)[log(q(z∣x)P(x,z))]。其中 q ( z ∣ x ) q(z|x) q(z∣x)可以是任意分布,可以把其看作是模型中编码的过程,根据一个已知输入 x x x,映射为 z z z的概率。因为模型的参数和输入是确定的,所以 q ( z ∣ x ) q(z|x) q(z∣x)是一个确定性的分布。
二、重参数化技巧
在正式介绍DDPM之前,首先介绍一下高斯分布的重参数化相关知识。
对于一个高斯分布 ϵ ∼ N ( 0 , I ) \epsilon\sim\mathcal{N}(0, I) ϵ∼N(0,I), y = μ + σ ∗ ϵ y = \mu+\sigma*\epsilon y=μ+σ∗ϵ,则 y ∼ N ( μ , σ 2 I ) y\sim\mathcal{N}(\mu,\sigma^2I) y∼N(μ,σ2I)。
y 1 ∼ N ( μ 1 , σ 1 2 I ) , y 2 ∼ N ( μ 2 , σ 2 2 I ) y_1\sim\mathcal{N}(\mu_1,\sigma_1^2I),y_2\sim\mathcal{N}(\mu_2,\sigma_2^2I) y1∼N(μ1,σ12I),y2∼N(μ2,σ22I),假设 y 3 = y 1 + y 2 y_3=y_1+y_2 y3=y1+y2,则 y 3 ∼ N ( μ 1 + μ 2 , ( σ 1 2 + σ 2 2 ) I ) y_3\sim\mathcal{N}(\mu_1+\mu_2,(\sigma_1^2+\sigma_2^2)I) y3∼N(μ1+μ2,(σ12+σ22)I)。
接下来举一个详细的例子说明重参数化的作用。
y 1 = μ 1 + σ 1 ∗ ϵ 1 y_1 = \mu_1+\sigma_1*\epsilon_1 y1=μ1+σ1∗ϵ1, y 1 ∼ N ( μ 1 , σ 1 2 I ) y_1\sim\mathcal{N}(\mu_1,\sigma_1^2I) y1