DDPM论文详解


前言

 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},则神经网络的优化目标就是极大似然估计,

θ ∗ = arg ⁡ max ⁡ θ ∏ i = 1 m P θ ( x i ) \theta^* = \arg \max_{\theta}\prod_{i=1}^mP_\theta(x^i) θ=argmaxθi=1mPθ(xi)

 这个公式可以理解为找到一个网络参数 θ \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)两个分布越接近。
 为什么最大似然估计(连乘概率越大),两个分布越接近呢?这个是可以通过数学公式推导出来。直接上结果:

θ ∗ = arg ⁡ max ⁡ θ ∏ i = 1 m P θ ( x i ) ≈ arg ⁡ min ⁡ θ K L ( P d a t a ∣ ∣ P θ ) \theta^* = \arg \max_\theta\prod_{i=1}^mP_\theta(x^i) \approx \arg\min_\theta KL(P_{data}||P_\theta) θ=argmaxθi=1mPθ(xi)argminθKL(Pdata∣∣Pθ)

因此可以理解为最大似然估计可以近似等于最小化两个分布之间的KL散度。
 对于最大似然公式,我们在前面加入 log ⁡ \log log,如下所示:

arg ⁡ max ⁡ θ ∏ i = 1 m P θ ( x i ) = arg ⁡ max ⁡ θ log ⁡ ∏ i = 1 m P θ ( x i ) = arg ⁡ max ⁡ θ ∑ i = 1 m log ⁡ P θ ( x i ) \arg \max_\theta\prod_{i=1}^mP_\theta(x^i) = \arg \max_\theta\log\prod_{i=1}^mP_\theta(x^i) = \arg\max_\theta\sum_{i=1}^m\log P_\theta(x^i) argmaxθi=1mPθ(xi)=argmaxθlogi=1mPθ(xi)=argmaxθi=1mlogPθ(xi)

对于每一个 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(zx)logP(x)dz=zq(zx)log(P(zx)P(z,x))dz=zq(zx)log(q(zx)P(z,x)P(zx)q(zx))dz=zq(zx)log(q(zx)P(z,x))dz+zq(zx)log(P(zx)q(zx))dzzq(zx)log(q(zx)P(z,x))dz=Eq(zx)[log(q(zx)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(zx)[log(q(zx)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(zx)[log(q(zx)P(x,z))]。其中 q ( z ∣ x ) q(z|x) q(zx)可以是任意分布,可以把其看作是模型中编码的过程,根据一个已知输入 x x x,映射为 z z z的概率。因为模型的参数和输入是确定的,所以 q ( z ∣ x ) q(z|x) q(zx)是一个确定性的分布。

二、重参数化技巧

 在正式介绍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) yN(μ,σ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) y1N(μ1,σ12I),y2N(μ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) y3N(μ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

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值