从工程和理论角度理解DDPM(一)

从工程和理论角度理解DDPM

说明

紧接着上一篇VAE,继续整理DDPM。

1.与VAE的区别和关系

设数据集 X X X的分布 P ( X ) P(X) P(X),其对于我们是未知的,但可以从里面进行采样。假设采样了一个观测变量 x 0 x_0 x0
从极大似然出发,然后引入隐变量,再到变分推导这一系列过程其实都和VAE一致,只不过隐变量改了一下

  1. 隐变量由单独一个 z z z变成了 x 1 , x 2 , … , x T x_{1}, x_{2}, \ldots, x_{T} x1,x2,,xT,注意这些不是和 x 0 x_0 x0平行的样本,而是由 x 0 x_0 x0加噪得到的隐变量。
  2. 隐变量的维度是没有像VAE一样经过压缩的,即维度和 x 0 x_0 x0一致。
  3. 边缘概率密度公式变为了:
    P ( x 0 ) = ∫ P ( x 0 : T ) d x 1 : T ,       P ( x 0 : T ) = P ( x T ) ∏ t = 1 T P θ ( x t − 1 ∣ x t ) P(x_0) = \int P(x_{0:T}) dx_{1:T}, \ \ \ \ \ P(x_{0:T})=P(x_T)\prod_{t=1}^{T} P_{\theta}\left(x_{t-1} \mid x_{t}\right) P(x0)=P(x0:T)dx1:T,     P(x0:T)=P(xT)t=1TPθ(xt1xt)
  4. 贝叶斯公式变为了:
    P ( x 0 ) = P ( x 0 : T ) P ( x 1 : T ∣ x 0 ) ,       P ( x 1 : T ∣ x 0 ) = ∏ t = 1 T P ( x t ∣ x t − 1 ) P(x_0) = \frac{P(x_{0:T})}{P(x_{1: T} \mid x_{0})}, \ \ \ \ \ P(x_{1: T} \mid x_{0})=\prod_{t=1}^{T} P\left(x_{t} \mid x_{t-1}\right) P(x0)=P(x1:Tx0)P(x0:T),     P(x1:Tx0)=t=1TP(xtxt1)

2.变分推断

变分推断的公式基本和VAE的一致,最终也是转换成求解ELBO的代理任务
概率密度公式推导:
log ⁡ P ( x 0 ) = log ⁡ ∫ P ( x 0 : T ) d x 1 : T = log ⁡ ∫ P ( x 0 : T ) d x 1 : T Q ϕ ( x 1 : T ∣ x 0 ) Q ϕ ( x 1 : T ∣ x 0 ) d x 1 : T = log ⁡ E Q ϕ ( x 1 : T ∣ x 0 ) [ P ( x 0 : T ) Q ϕ ( x 1 : T ∣ x 0 ) ] ≥ E Q ϕ ( x 1 : T ∣ x 0 ) [ l o g P ( x 0 : T ) Q ϕ ( x 1 : T ∣ x 0 ) ] \begin{aligned} \log P(x_0) & =\log \int P(x_{0:T}) dx_{1:T} \\ & =\log \int \frac{P(x_{0:T}) dx_{1:T} Q_{\phi}(x_{1: T} \mid x_{0})}{Q_{\phi}(x_{1: T} \mid x_{0})} dx_{1:T} \\ & =\log \mathbb{E}_{Q_{\phi}(x_{1: T} \mid x_{0})}\left[\frac{P(x_{0:T})}{Q_{\phi}(x_{1: T} \mid x_{0})} \right] \\ & \geq \mathbb{E}_{Q_{\phi}(x_{1: T} \mid x_{0})}\left[log \frac{P(x_{0:T})}{Q_{\phi}(x_{1: T} \mid x_{0})} \right] \end{aligned} logP(x0)=logP(x0:T)dx1:T=logQϕ(x1:Tx0)P(x0:T)dx1:TQϕ(x1:Tx0)dx1:T=logEQϕ(x1:Tx0)[Qϕ(x1:Tx0)P(x0:T)]EQϕ(x1:Tx0)[logQϕ(x1:Tx0)P(x0:T)]
贝叶斯公式推导:
l o g P ( x 0 ) = l o g P ( x 0 : T ) P ( x 1 : T ∣ x 0 ) = l o g P ( x 0 : T ) P ( x 1 : T ∣ x 0 ) ∫ Q ϕ ( x 1 : T ∣ x 0 ) d x 1 : T = ∫ Q ϕ ( x 1 : T ∣ x 0 ) l o g P ( x 0 : T ) P ( x 1 : T ∣ x 0 ) d x 1 : T = E Q ϕ ( x 1 : T ∣ x 0 ) [ l o g P ( x 0 : T ) Q ϕ ( x 1 : T ∣ x 0 ) P ( x 1 : T ∣ x 0 ) Q ϕ ( x 1 : T ∣ x 0 ) ] = E Q ϕ ( x 1 : T ∣ x 0 ) [ l o g P ( x 0 : T ) Q ϕ ( x 1 : T ∣ x 0 ) ] + E Q ϕ ( x 1 : T ∣ x 0 ) [ l o g Q ϕ ( x 1 : T ∣ x 0 ) P ( x 1 : T ∣ x 0 ) ] = E Q ϕ ( x 1 : T ∣ x 0 ) [ l o g P ( x 0 : T ) Q ϕ ( x 1 : T ∣ x 0 ) ] + D K L ( Q ϕ ( x 1 : T ∣ x 0 ) ∥ P ( x 1 : T ∣ x 0 ) ) ≥ E Q ϕ ( x 1 : T ∣ x 0 ) [ l o g P ( x 0 : T ) Q ϕ ( x 1 : T ∣ x 0 ) ] \begin{aligned} log P(x_0) &= log \frac{P(x_{0:T})}{P(x_{1: T} \mid x_{0})} \\ &= log \frac{P(x_{0:T})}{P(x_{1: T} \mid x_{0})} \int Q_{\phi}(x_{1: T} \mid x_{0}) dx_{1:T} \\ &= \int Q_{\phi}(x_{1: T} \mid x_{0}) log \frac{P(x_{0:T})}{P(x_{1: T} \mid x_{0})} dx_{1:T} \\ &= \mathbb{E}_{Q_{\phi}(x_{1: T} \mid x_{0})}\left[log \frac{P(x_{0:T}) Q_{\phi}(x_{1: T} \mid x_{0}) }{P(x_{1: T} \mid x_{0}) Q_{\phi}(x_{1: T} \mid x_{0})} \right] \\ &= \mathbb{E}_{Q_{\phi}(x_{1: T} \mid x_{0})}\left[log \frac{P(x_{0:T}) }{ Q_{\phi}(x_{1: T} \mid x_{0})} \right] + \mathbb{E}_{Q_{\phi}(x_{1: T} \mid x_{0})}\left[log \frac{ Q_{\phi}(x_{1: T} \mid x_{0}) }{ P(x_{1: T} \mid x_{0}) } \right] \\ &= \mathbb{E}_{Q_{\phi}(x_{1: T} \mid x_{0})}\left[log \frac{P(x_{0:T}) }{ Q_{\phi}(x_{1: T} \mid x_{0})} \right] + D_{\mathrm{KL}}\left(Q_{\phi}(x_{1: T} \mid x_{0}) \| P(x_{1: T} \mid x_{0}) \right) \\ & \geq \mathbb{E}_{Q_{\phi}(x_{1: T} \mid x_{0})}\left[log \frac{P(x_{0:T})}{Q_{\phi}(x_{1: T} \mid x_{0})} \right] \end{aligned} logP(x0)=logP(x1:Tx0)P(x0:T)=logP(x1:Tx0)P(x0:T)Qϕ(x1:Tx0)dx1:T=Qϕ(x1:Tx0)logP(x1:Tx0)P(x0:T)dx1:T=EQϕ(x1:Tx0)[logP(x1:Tx0)Qϕ(x1:Tx0)P(x0:T)Qϕ(x1:Tx0)]=EQϕ(x1:Tx0)[logQϕ(x1:Tx0)P(x0:T)]+EQϕ(x1:Tx0)[logP(x1:Tx0)Qϕ(x1:Tx0)]=EQϕ(x1:Tx0)[logQϕ(x1:Tx0)P(x0:T)]+DKL(Qϕ(x1:Tx0)P(x1:Tx0))EQϕ(x1:Tx0)[logQϕ(x1:Tx0)P(x0:T)]

3.ELBO继续推导

E L B O = E Q ϕ ( x 1 : T ∣ x 0 ) [ l o g P ( x 0 : T ) Q ϕ ( x 1 : T ∣ x 0 ) ] = E Q ϕ ( x 1 ∣ x 0 ) [ log ⁡ P θ ( x 0 ∣ x 1 ) ] ⏟ reconstruction term  − D K L ( Q ϕ ( x T ∣ x 0 ) ∥ P ( x T ) ) ⏟ prior matching term  − ∑ t = 2 T E Q ϕ ( x t ∣ x 0 ) [ D K L ( Q ϕ ( x t − 1 ∣ x t , x 0 ) ∥ P θ ( x t − 1 ∣ x t ) ) ] ⏟ denoising matching term  \begin{aligned} ELBO &= \mathbb{E}_{Q_{\phi}(x_{1: T} \mid x_{0})}\left[log \frac{P(x_{0:T})}{Q_{\phi}(x_{1: T} \mid x_{0})} \right] \\ &=\underbrace{\mathbb{E}_{Q_{\phi}(x_{1} \mid x_{0})}\left[\log P_{\theta}\left(x_{0} \mid x_{1}\right)\right]}_{\text {reconstruction term }} -\underbrace{D_{\mathrm{KL}}\left(Q_{\phi}\left(x_{T} \mid x_{0}\right) \| P\left(x_{T}\right)\right)}_{\text {prior matching term }} \\ &-\sum_{t=2}^{T} \underbrace{\mathbb{E}_{Q_{\phi}(x_{t} \mid x_{0})}\left[D_{\mathrm{KL}}\left(Q_{\phi}\left(x_{t-1} \mid x_{t}, x_{0}\right) \| P_{\theta}\left(x_{t-1} \mid x_{t}\right)\right)\right]}_{\text {denoising matching term }} \end{aligned} ELBO=EQϕ(x1:Tx0)[logQϕ(x1:Tx0)P(x0:T)]=reconstruction term  EQϕ(x1x0)[logPθ(x0x1)]prior matching term  DKL(Qϕ(xTx0)P(xT))t=2Tdenoising matching term  EQϕ(xtx0)[DKL(Qϕ(xt1xt,x0)Pθ(xt1xt))]
r e c o n s t r u c t i o n   t e r m reconstruction \ term reconstruction term和VAE一样,是衡量从 x 1 x_1 x1 x 0 x_0 x0的重建程度。

p r i o r   m a t c h i n g   t e r m prior \ matching \ term prior matching term由于 Q ϕ ( x T ∣ x 0 ) Q_{\phi}\left(x_{T} \mid x_{0}\right) Qϕ(xTx0)不像VAE一样需要神经网络去拟合,而是人工预设的加噪步骤,按照人工设定最终一定会趋向于标准正态分布,所以该项没有可学习参数,所以该项可以忽略。

d e n o i s i n g   m a t c h i n g   t e r m denoising \ matching \ term denoising matching term这一项是最重要的一项,也是和VAE的区别,DDPM网络的学习主要也是靠这一项。

4. r e c o n s t r u c t i o n   t e r m reconstruction \ term reconstruction term

r e c o n s t r u c t i o n   t e r m reconstruction \ term reconstruction term 是将最后一步的加噪图像 x 1 x_1 x1 生成去噪图像 x 0 x_0 x0 的极大似然估计,为了生成更好的图像,我们需要对每个像素都运用极大似然估计,使得图像上每个像素值都满足离散的对数似然。

为了达到这个目的,将逆扩散过程中的最后从 x 1 x_1 x1 x 0 x_0 x0 的转换设置为独立的离散计算方式。 即在最后一个转换过程在给定 x 1 x_1 x1 下得到图像 x 0 x_0 x0 满足对数似然,假设像素与像素之间是相互独立的:
P θ ( x 0 ∣ x 1 ) = ∏ i = 1 D P θ ( x 0 i ∣ x 1 i ) P_{\theta}\left(x_{0} \mid x_{1}\right)=\prod_{i=1}^{D} P_{\theta}\left(x_{0}^{i} \mid x_{1}^{i}\right) Pθ(x0x1)=i=1DPθ(x0ix1i)
D D D 代表 x x x 的维度,上标 i i i 表示图像中的一个坐标位置。现在的目标是确定给定像素的值可能性有多大,也就是想要知道对应时间步 t = 1 t=1 t=1 下噪声图像 x x x 中相应像素值的分布:
N ( x ; μ θ i ( x 1 , 1 ) , σ 1 2 ) \mathcal{N}\left(x ; \mu_{\theta}^{i}\left(x_{1}, 1\right), \sigma_{1}^{2}\right) N(x;μθi(x1,1),σ12)
其中 t = 1 t=1 t=1 的像素分布来自多元高斯分布,其对角协方差矩阵允许我们将分布拆分为单变量高斯的乘积:
N ( x ; μ θ ( x 1 , 1 ) , σ 1 2 I ) = ∏ i = 1 D N ( x ; μ θ i ( x 1 , 1 ) , σ 1 2 ) \mathcal{N}\left(x ; \mu_{\theta}\left(x_{1}, 1\right), \sigma_{1}^{2} \mathbb{I}\right)=\prod_{i=1}^{D} \mathcal{N}\left(x ; \mu_{\theta}^{i}\left(x_{1}, 1\right), \sigma_{1}^{2}\right) N(x;μθ(x1,1),σ12I)=i=1DN(x;μθi(x1,1),σ12)
现在假设图像已经从0-255的数值之间,经过归一化在[-1,1]的范围内。在 t=0 时给定每个像素的像素值,最后一个时间步 t=1 的转换概率分布 p θ ( x 0 ∣ x 1 ) p_{\theta}\left(x_{0} \mid x_{1}\right) pθ(x0x1) 的值就是每个像素值的乘积。所以:
P θ ( x 0 ∣ x 1 ) = ∏ i = 1 D ∫ δ − ( x 0 i ) δ + ( x 0 i ) N ( x ; μ θ i ( x 1 , 1 ) , σ 1 2 ) d x δ + ( x ) = { ∞  if  x = 1 x + 1 255  if  x < 1 δ − ( x ) = { − ∞  if  x = − 1 x − 1 255  if  x > − 1 \begin{aligned} P_{\theta}\left(\mathbf{x}_{0} \mid \mathbf{x}_{1}\right) & =\prod_{i=1}^{D} \int_{\delta_{-}\left(x_{0}^{i}\right)}^{\delta_{+}\left(x_{0}^{i}\right)} \mathcal{N}\left(x ; \mu_{\theta}^{i}\left(\mathbf{x}_{1}, 1\right), \sigma_{1}^{2}\right) d x \\ \delta_{+}(x) & =\left\{\begin{array}{ll} \infty & \text { if } x=1 \\ x+\frac{1}{255} & \text { if } x<1 \end{array} \quad \delta_{-}(x)=\left\{\begin{array}{ll} -\infty & \text { if } x=-1 \\ x-\frac{1}{255} & \text { if } x>-1 \end{array}\right.\right. \end{aligned} Pθ(x0x1)δ+(x)=i=1Dδ(x0i)δ+(x0i)N(x;μθi(x1,1),σ12)dx={x+2551 if x=1 if x<1δ(x)={x2551 if x=1 if x>1
这个公式来自原论文,这里解析一下它的含义。就是我们要将最后一步的加噪图像 x 1 x_1 x1 拟合去燥图像 x 0 x_0 x0 ,把图像的每一个像素点都设为一个高斯分布,一共 D D D 个像素点。而 x 0 x_0 x0 每个像素点原本的取值范围为 { 0 , 1 , … , 255 } \{0,1, \ldots, 255\} {0,1,,255} ,经过归一化映射到了 [ − 1 , 1 ] [-1,1] [1,1] 范围内。

现在我们把单独取出一个 x 1 x_1 x1 上的像素点 x 1 i x_1^i x1i,它服从分布 N ( x ; μ θ i ( x 1 , 1 ) , σ 1 2 ) \mathcal{N}\left(x ; \mu_{\theta}^{i}\left(x_{1}, 1\right), \sigma_{1}^{2}\right) N(x;μθi(x1,1),σ12),需要拟合的目标为 x 0 x_0 x0 上的对应位置像素点 x 0 i x_0^i x0i ,而 x 0 i x_0^i x0i 的取值范围由原本的离散空间 { 0 , 1 , … , 255 } \{0,1, \ldots, 255\} {0,1,,255} 映射到了空间 [ − 1 , 1 ] [-1,1] [1,1] { − 1 , − 1 + 2 255 , . . . . , 1 − 2 255 , 1 } \{-1,-1 + \frac{2}{255}, ...., 1- \frac{2}{255}, 1 \} {1,1+2552,....,12552,1},然后再映射到连续空间 ( − ∞ , − 1 + 1 255 ) (-\infty, -1+\frac{1}{255}) (,1+2551) ( − 1 + 1 255 , − 1 + 3 255 ) (-1+\frac{1}{255}, -1+\frac{3}{255}) (1+2551,1+2553)
所以每个原本的离散值在连续空间中对应一个区间,而区间映射的公式就是:
δ + ( x ) = { ∞  if  x = 1 x + 1 255  if  x < 1 δ − ( x ) = { − ∞  if  x = − 1 x − 1 255  if  x > − 1 \begin{aligned} \delta_{+}(x) & =\left\{\begin{array}{ll} \infty & \text { if } x=1 \\ x+\frac{1}{255} & \text { if } x<1 \end{array} \quad \delta_{-}(x)=\left\{\begin{array}{ll} -\infty & \text { if } x=-1 \\ x-\frac{1}{255} & \text { if } x>-1 \end{array}\right.\right. \end{aligned} δ+(x)={x+2551 if x=1 if x<1δ(x)={x2551 if x=1 if x>1

5. d e n o i s i n g   m a t c h i n g   t e r m denoising \ matching \ term denoising matching term

∑ t = 2 T E Q ϕ ( x t ∣ x 0 ) [ D K L ( Q ϕ ( x t − 1 ∣ x t , x 0 ) ∥ P θ ( x t − 1 ∣ x t ) ) ] ⏟ denoising matching term  \sum_{t=2}^{T} \underbrace{\mathbb{E}_{Q_{\phi}(x_{t} \mid x_{0})}\left[D_{\mathrm{KL}}\left(Q_{\phi}\left(x_{t-1} \mid x_{t}, x_{0}\right) \| P_{\theta}\left(x_{t-1} \mid x_{t}\right)\right)\right]}_{\text {denoising matching term }} t=2Tdenoising matching term  EQϕ(xtx0)[DKL(Qϕ(xt1xt,x0)Pθ(xt1xt))]

Q ϕ ( x t − 1 ∣ x t , x 0 ) Q_{\phi}\left(x_{t-1} \mid x_{t}, x_{0}\right) Qϕ(xt1xt,x0)代表ground truth,即给定 x t x_t xt x 0 x_0 x0 x t − 1 x_{t-1} xt1的真实分布。因为加噪过程是全程人工参与的,透明的,直观一些就是我们是知道 x t − 1 x_{t-1} xt1 x t x_{t} xt这一步加了什么噪音的得到了具体分布,所以我们就可以知道从 x t x_t xt x t − 1 x_{t-1} xt1这一步需要减去哪些噪音,所以 Q ϕ ( x t − 1 ∣ x t , x 0 ) Q_{\phi}\left(x_{t-1} \mid x_{t}, x_{0}\right) Qϕ(xt1xt,x0)对我们来说就是ground truth。

P θ ( x t − 1 ∣ x t ) P_{\theta}\left(x_{t-1} \mid x_{t}\right) Pθ(xt1xt)是我们需要学习的网络(原论文中就是那个UNet)拟合的去噪过程,需要受到ground truth的监督。

由于是个累加,所以我们单独拿出第 t t t步来讨论:
D K L ( Q ϕ ( x t − 1 ∣ x t , x 0 ) ∥ P θ ( x t − 1 ∣ x t ) ) D_{\mathrm{KL}}\left(Q_{\phi}\left(x_{t-1} \mid x_{t}, x_{0}\right) \| P_{\theta}\left(x_{t-1} \mid x_{t}\right)\right) DKL(Qϕ(xt1xt,x0)Pθ(xt1xt))
接下来的目标就是求出ground truth Q ϕ ( x t − 1 ∣ x t , x 0 ) Q_{\phi}\left(x_{t-1} \mid x_{t}, x_{0}\right) Qϕ(xt1xt,x0)的表达式。

文章太长发不出去,接下一章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值