DDPM 前向过程的公式推导

AI学习交流qq群873673497
官网turingevo.com
邮箱wmx@turingevo.com
githubhttps://github.com/turingevo
huggingfacehttps://huggingface.co/turingevo

论文《 Denoising Diffusion Probabilistic Models 》前向过程的公式推导

原文:
在这里插入图片描述

推导前向加噪声的过程

这张图展示的是扩散过程的一个重要特性:可以直接基于原始数据 x 0 x_0 x0 来对任意时间步 t 的 x t x_t xt 进行采样。具体的推导过程如下:

  1. 初始化
    x t = α ˉ t x 0 + 1 − α ˉ t ϵ x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon xt=αˉt x0+1αˉt ϵ
    其中, α ˉ t = ∏ i = 1 t α i \bar{\alpha}_t = \prod_{i=1}^{t} \alpha_i αˉt=i=1tαi ϵ ∼ N ( 0 , I ) \epsilon \sim N(0, I) ϵN(0,I)

  2. 递推公式
    x t = α t x t − 1 + 1 − α t ϵ t − 1 x_t = \sqrt{\alpha_t} x_{t-1} + \sqrt{1 - \alpha_t} \epsilon_{t-1} xt=αt xt1+1αt ϵt1
    其中, α t = 1 − β t \alpha_t = 1 - \beta_t αt=1βt

  3. 逐层展开
    x t = α t ( α t − 1 x t − 2 + 1 − α t − 1 ϵ t − 2 ) + 1 − α t ϵ t − 1 x_t = \sqrt{\alpha_t} \left( \sqrt{\alpha_{t-1}} x_{t-2} + \sqrt{1 - \alpha_{t-1}} \epsilon_{t-2} \right) + \sqrt{1 - \alpha_t} \epsilon_{t-1} xt=αt (αt1 xt2+1αt1 ϵt2)+1αt ϵt1
    继续展开,直到 x 0 x_0 x0
    x t = α t α t − 1 ⋯ α 1 x 0 + 1 − α t α t − 1 ⋯ α 1 ϵ x_t = \sqrt{\alpha_t \alpha_{t-1} \cdots \alpha_1} x_0 + \sqrt{1 - \alpha_t \alpha_{t-1} \cdots \alpha_1} \epsilon xt=αtαt1α1 x0+1αtαt1α1 ϵ
    其中 ϵ = 1 − α t α t − 1 ⋯ α 1 ⋅ ϵ ~ t − 1 \epsilon = \sqrt{1 - \alpha_t \alpha_{t-1} \cdots \alpha_1} \cdot \tilde{\epsilon}_{t-1} ϵ=1αtαt1α1 ϵ~t1

  4. 高斯分布的相加
    如果 X ∼ N ( μ X , σ X 2 ) X \sim N(\mu_X, \sigma_X^2) XN(μX,σX2) Y ∼ N ( μ Y , σ Y 2 ) Y \sim N(\mu_Y, \sigma_Y^2) YN(μY,σY2),则 Z = X + Y Z = X + Y Z=X+Y 服从 N ( μ X + μ Y , σ X 2 + σ Y 2 ) N(\mu_X + \mu_Y, \sigma_X^2 + \sigma_Y^2) N(μX+μY,σX2+σY2)

  5. 最终结果
    x t = α ˉ t x 0 + 1 − α ˉ t ϵ x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon xt=αˉt x0+1αˉt ϵ
    其中, ϵ ∼ N ( 0 , I ) \epsilon \sim N(0, I) ϵN(0,I)

这个推导过程表明,通过逐层展开并利用高斯分布的相加性质,可以从原始数据 x 0 x_0 x0 直接生成任意时间步 t 的样本 x t x_t xt ,这就是DDPM模型前向计算给图片加噪声的过程!!!

关于上面步骤5的推导,高斯分布的相加性质,准确说是标准正态分布的相加

要从给定的表达式

x t = α t α t − 1 x t − 2 + α t ( 1 − α t − 1 ) ϵ t − 2 + 1 − α t ϵ t − 1 x_t = \sqrt{\alpha_t \alpha_{t-1}} x_{t-2} + \sqrt{\alpha_t (1 - \alpha_{t-1})} \epsilon_{t-2} + \sqrt{1 - \alpha_t} \epsilon_{t-1} xt=αtαt1 xt2+αt(1αt1) ϵt2+1αt ϵt1

推导到 x t = α t α t − 1 x t − 2 + 1 − α t α t − 1 ϵ ′ x_t = \sqrt{\alpha_t \alpha_{t-1}} x_{t-2} + \sqrt{1 - \alpha_t \alpha_{t-1}} \epsilon' xt=αtαt1 xt2+1αtαt1 ϵ

我们需要证明 ϵ ′ \epsilon' ϵ可以表示为 ϵ t − 2 \epsilon_{t-2} ϵt2 ϵ t − 1 \epsilon_{t-1} ϵt1 的线性组合,并且这个组合的方差为: 1 − α t α t − 1 1 - \alpha_t \alpha_{t-1} 1αtαt1

  • 步骤 1:定义新的随机变量 ϵ ′ \epsilon' ϵ

ϵ ′ = α t ( 1 − α t − 1 ) ϵ t − 2 + 1 − α t ϵ t − 1 \epsilon' = \sqrt{\alpha_t (1 - \alpha_{t-1})} \epsilon_{t-2} + \sqrt{1 - \alpha_t} \epsilon_{t-1} ϵ=αt(1αt1) ϵt2+1αt ϵt1

  • 步骤 2:计算 ϵ ′ \epsilon' ϵ 的期望值
    由于 ϵ t − 2 \epsilon_{t-2} ϵt2 ϵ t − 1 \epsilon_{t-1} ϵt1 都是零均值的标准正态分布随机变量,即 E [ ϵ t − 2 ] = 0 \mathbb{E}[\epsilon_{t-2}] = 0 E[ϵt2]=0 E [ ϵ t − 1 ] = 0 \mathbb{E}[\epsilon_{t-1}] = 0 E[ϵt1]=0,因此:
    E [ ϵ ′ ] = E [ α t ( 1 − α t − 1 ) ϵ t − 2 + 1 − α t ϵ t − 1 ] \mathbb{E}[\epsilon'] = \mathbb{E}[\sqrt{\alpha_t (1 - \alpha_{t-1})} \epsilon_{t-2} + \sqrt{1 - \alpha_t} \epsilon_{t-1}] E[ϵ]=E[αt(1αt1) ϵt2+1αt ϵt1]
    E [ ϵ ′ ] = α t ( 1 − α t − 1 ) E [ ϵ t − 2 ] + 1 − α t E [ ϵ t − 1 ] \mathbb{E}[\epsilon'] = \sqrt{\alpha_t (1 - \alpha_{t-1})} \mathbb{E}[\epsilon_{t-2}] + \sqrt{1 - \alpha_t} \mathbb{E}[\epsilon_{t-1}] E[ϵ]=αt(1αt1) E[ϵt2]+1αt E[ϵt1]
    E [ ϵ ′ ] = 0 \mathbb{E}[\epsilon'] = 0 E[ϵ]=0
    所以 ϵ ′ \epsilon' ϵ也是零均值的

  • 步骤 3:计算 ϵ ′ \epsilon' ϵ的方差
    接下来计算 ϵ ′ \epsilon' ϵ 的方差。由于 ϵ t − 2 \epsilon_{t-2} ϵt2 ϵ t − 1 \epsilon_{t-1} ϵt1 是独立的标准正态分布随机变量,即 Var ( ϵ t − 2 ) = 1 \text{Var}(\epsilon_{t-2}) = 1 Var(ϵt2)=1 Var ( ϵ t − 1 ) = 1 \text{Var}(\epsilon_{t-1}) = 1 Var(ϵt1)=1,(因为相互独立)它们之间的协方差为零,因此:
    Var ( ϵ ′ ) = Var ( α t ( 1 − α t − 1 ) ϵ t − 2 + 1 − α t ϵ t − 1 ) \text{Var}(\epsilon') = \text{Var}(\sqrt{\alpha_t (1 - \alpha_{t-1})} \epsilon_{t-2} + \sqrt{1 - \alpha_t} \epsilon_{t-1}) Var(ϵ)=Var(αt(1αt1) ϵt2+1αt ϵt1)
    Var ( ϵ ′ ) = Var ( α t ( 1 − α t − 1 ) ϵ t − 2 ) + Var ( 1 − α t ϵ t − 1 ) \text{Var}(\epsilon') = \text{Var}(\sqrt{\alpha_t (1 - \alpha_{t-1})} \epsilon_{t-2}) + \text{Var}(\sqrt{1 - \alpha_t} \epsilon_{t-1}) Var(ϵ)=Var(αt(1αt1) ϵt2)+Var(1αt ϵt1)
    Var ( ϵ ′ ) = ( α t ( 1 − α t − 1 ) ) 2 Var ( ϵ t − 2 ) + ( 1 − α t ) 2 Var ( ϵ t − 1 ) \text{Var}(\epsilon') = (\sqrt{\alpha_t (1 - \alpha_{t-1})})^2 \text{Var}(\epsilon_{t-2}) + (\sqrt{1 - \alpha_t})^2 \text{Var}(\epsilon_{t-1}) Var(ϵ)=(αt(1αt1) )2Var(ϵt2)+(1αt )2Var(ϵt1)
    Var ( ϵ ′ ) = α t ( 1 − α t − 1 ) ⋅ 1 + ( 1 − α t ) ⋅ 1 \text{Var}(\epsilon') = \alpha_t (1 - \alpha_{t-1}) \cdot 1 + (1 - \alpha_t) \cdot 1 Var(ϵ)=αt(1αt1)1+(1αt)1
    Var ( ϵ ′ ) = α t ( 1 − α t − 1 ) + 1 − α t \text{Var}(\epsilon') = \alpha_t (1 - \alpha_{t-1}) + 1 - \alpha_t Var(ϵ)=αt(1αt1)+1αt
    Var ( ϵ ′ ) = α t − α t α t − 1 + 1 − α t \text{Var}(\epsilon') = \alpha_t - \alpha_t \alpha_{t-1} + 1 - \alpha_t Var(ϵ)=αtαtαt1+1αt
    Var ( ϵ ′ ) = 1 − α t α t − 1 \text{Var}(\epsilon') = 1 - \alpha_t \alpha_{t-1} Var(ϵ)=1αtαt1

  • 步骤 4:替换原表达式中的 ϵ t − 2 \epsilon_{t-2} ϵt2 ϵ t − 1 \epsilon_{t-1} ϵt1
    现在我们已经证明了 ϵ ′ \epsilon' ϵ 是零均值且方差为 1 − α t α t − 1 1 - \alpha_t \alpha_{t-1} 1αtαt1 的随机变量,可以将原表达式中的 ϵ t − 2 \epsilon_{t-2} ϵt2 ϵ t − 1 \epsilon_{t-1} ϵt1 替换为 ϵ ′ \epsilon' ϵ
    x t = α t α t − 1 x t − 2 + α t ( 1 − α t − 1 ) ϵ t − 2 + 1 − α t ϵ t − 1 x_t = \sqrt{\alpha_t \alpha_{t-1}} x_{t-2} + \sqrt{\alpha_t (1 - \alpha_{t-1})} \epsilon_{t-2} + \sqrt{1 - \alpha_t} \epsilon_{t-1} xt=αtαt1 xt2+αt(1αt1) ϵt2+1αt ϵt1
    x t = α t α t − 1 x t − 2 + ϵ ′ x_t = \sqrt{\alpha_t \alpha_{t-1}} x_{t-2} + \epsilon' xt=αtαt1 xt2+ϵ

由于 ϵ ′ \epsilon' ϵ 的方差为 1 − α t α t − 1 1 - \alpha_t \alpha_{t-1} 1αtαt1,我们可以写成:

x t = α t α t − 1 x t − 2 + 1 − α t α t − 1 ϵ x_t = \sqrt{\alpha_t \alpha_{t-1}} x_{t-2} + \sqrt{1 - \alpha_t \alpha_{t-1}} \epsilon xt=αtαt1 xt2+1αtαt1 ϵ
其中 ϵ \epsilon ϵ 服从正态分布

这个 x t x_t xt 展开到 x t − 2 x_{t-2} xt2公式,可以当做正太分布的相加性质,大家可以当做一个结果来用!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值