Diffusion Model—Denoising Diffusion Probabilistic Models 去噪概率扩散模型的公式推导
通过扩散模型进行跟踪的多目标跟踪算法越来越多的出现在了CVPR之中。
Diffusion Model—Denoising Diffusion Probabilistic Models
也即是网上资料最多的DDPM去噪概率扩散模型。在进行公式推导之前结合网上的一下课程说明进行简单的总结。——更为基础的推导公式可以看之前写的部分数学基础公式
Diffusion Model生成步骤
总结一下:就是将一张带有噪声的图片,经过多个Denoise model,步数由自己指定好,从而生成一张图片的过程。
李宏毅的课中引入了一句让我印象很深的话:“雕像本来就在大理石之中。只是把不要的部分拿掉了。也就是图片本来就在噪声里面只是将噪音的部分过滤掉(去噪)就可以得到图片信息了。
之后引出了一个问题,即:第1000张图片和最后的倒数第二张图片的程度不同。那么对应的Denoise model应该相同吗?
显然答案应该是相同的。除了输入图像之外还应该输入一个步数(自己理解应该是噪声的强度。)
Denoise model
输入一张噪声图片和当前的步骤之后,会进行噪声预测的部分,我们根据这两个部分产生噪声图片。然后在原图片当中减去噪声图片就可以的带去噪之后的图片。
先加噪学习在反向的进行去噪。
需要的就是去训练这个Noise Prdicter呢?
前向的扩散过程(加噪训练) Forward Diffusion Process
之前在自己初步学习ddpm推导的时候也接触过前向扩散的过程。我们这里对其进行补充。
我们的训练数据集需要的是什么呢?也就是图中所示的部分了。
我们给定一张带有噪音的图片,告诉它这是第几次进行加噪训练的。加入的噪声是什么。
模型需要学习的就是我们的第n步的图片加入的噪声是什么。(LAION)
多模态学习
现在流行许多的多模态的学习,给定模型一段文字我们可以生成对应的图像的信息。其实也就是在训练的时候要加入各种不同的文字描述。
自己感觉也就是在学习的时候多加上一个模态来进行融合的操作。
拓展 Stable Diffusion
总结为三个部分组成的:1 对于输入文字的编码器 2. Generation Model也就是我们的Stable Diffusion Model。3. 对压缩图片的一个解码器。
公式推导
前向加噪过程
- 根据之前对加噪过程的描述我们首先根据定义得到xt时刻与xt-1时刻的加噪公式显然是成立的。
x t = β t × ϵ t + 1 − β t × x t − 1 x_{t}=\sqrt{\beta}_{t} \times \epsilon_{t}+\sqrt{1-\beta_{t}} \times x_{t-1} xt=βt×ϵt+1−βt×xt−1
- 为了方便进行表示我们可以定义:αt = 1 - βt就可以将上面的公式化简为下面的表达形式了。由此我们得到了xt和Xt-1之间的公式关系
x t = 1 − α t × ϵ t + α t × x t − 1 x_{t}=\sqrt{1-\alpha_{t}} \times \epsilon_{t}+\sqrt{\alpha_{t}} \times x_{t-1} xt=1−αt×ϵt+αt×xt−1
-
显然下面关于xt-1与xt-2的加噪公式同样也是成立的
x t − 1 = 1 − α t − 1 × ϵ t − 1 + α t − 1 × x t − 2 x_{t-1}=\sqrt{1-\alpha_{t-1}} \times \epsilon_{t-1}+\sqrt{\alpha_{t-1}} \times x_{t-2} xt−1=1−αt−1×ϵt−1+αt−1×xt−2 -
我们将公式中的xt-1带入到上面的式子中就可以得到下面的式子了
x t = 1 − α t × ϵ t + α t × ( 1 − α t − 1 × ϵ t − 1 + α t − 1 × x t − 2 ) ‾ = α t ( 1 − α t − 1 ) × ϵ t − 1 + 1 − α t × ϵ t + α t α t − 1 × x t − 2 \begin{aligned} x_{t} & =\sqrt{1-\alpha_{t}} \times \epsilon_{t}+\sqrt{\alpha_{t}} \times\left(\underline{\left.\sqrt{1-\alpha_{t-1}} \times \epsilon_{t-1}+\sqrt{\alpha_{t-1}} \times x_{t-2}\right)}\right. \\ & =\sqrt{\alpha_{t}\left(1-\alpha_{t-1}\right)} \times \epsilon_{t-1}+\sqrt{1-\alpha_{t}} \times \epsilon_{t}+\sqrt{\alpha_{t} \alpha_{t-1}} \times x_{t-2} \end{aligned} xt=1−αt×ϵt+αt×(1−αt−1×ϵt−1+αt−1×xt−2)=αt(1−αt−1)×ϵt−1+1−αt×ϵt+αtαt−1×xt−2
其中, ϵ t 和 ϵ t − 1 是两个独立的随机变量, 且 ϵ t ∼ N ( 0 , 1 ) , ϵ t − 1 ∼ N ( 0 , 1 ) \text { 其中, } \epsilon_{t} \text { 和 } \epsilon_{t-1} \text { 是两个独立的随机变量, 且 } \epsilon_{t} \sim N(0,1), \epsilon_{t-1} \sim N(0,1) 其中, ϵt 和 ϵt−1 是两个独立的随机变量, 且 ϵt∼N(0,1),ϵt−1∼N(0,1)
- 根据高斯分布的概率性质结合我们的重参数化技巧。可以进行如下的推导过程。
我们根据正态分布的第一条性质可以得到
(1) α t ( 1 − α t − 1 ) × ϵ t − 1 ∼ N ( 0 , α t − α t α t − 1 ) \text { (1) } \sqrt{\alpha_{t}\left(1-\alpha_{t-1}\right)} \times \epsilon_{t-1} \sim N\left(0, \alpha_{t}-\alpha_{t} \alpha_{t-1}\right) (1) αt(1−αt−1)×ϵt−1∼N(0,αt−αtαt−1)
(2) 1 − α t × ϵ t ∼ N ( 0 , 1 − α t ) \text { (2) } \sqrt{1-\alpha_{t}} \times \epsilon_{t} \sim N\left(0,1-\alpha_{t}\right) (2) 1−αt×ϵt∼N(0,1−αt)
我们根据正态分布的第二条性质又可以得到:
α t ( 1 − α t − 1 ) × ϵ t − 1 + 1 − α t × ϵ t ∼ N ( 0 , 1 − α t α t − 1 ) \sqrt{\alpha_{t}\left(1-\alpha_{t-1}\right)} \times \epsilon_{t-1}+\sqrt{1-\alpha_{t}} \times \epsilon_{t} \sim N\left(0,1-\alpha_{t} \alpha_{t-1}\right) αt(1−αt−1)×ϵt−1+1−αt×ϵt∼N(0,1−αtαt−1)
由此可以得到xt和xt-2之间的关系式
x t = 1 − α t α t − 1 × ϵ + α t α t − 1 × x t − 2 其中, ϵ ∼ N ( 0 , 1 ) x_{t}=\sqrt{1-\alpha_{t} \alpha_{t-1}} \times \epsilon+\sqrt{\alpha_{t} \alpha_{t-1}} \times x_{t-2} \quad \text { 其中, } \epsilon \sim N(0,1) xt=1−αtαt−1×ϵ+αtαt−1×xt−2 其中, ϵ∼N(0,1)
- 使用数学归纳法进行类推就可以完成最后的推导过程了。
结合数学归纳法可以得到:
x t = 1 − α t α t − 1 … α 2 α 1 × ϵ + α t α t − 1 … α 2 α 1 × x 0 x_{t}=\sqrt{1-\alpha_{t} \alpha_{t-1} \ldots \alpha_{2} \alpha_{1}} \times \epsilon+\sqrt{\alpha_{t} \alpha_{t-1} \ldots \alpha_{2} \alpha_{1}} \times x_{0} xt=1−αtαt−1…α2α1×ϵ+αtαt−1…α2α1×x0
最后改写形式就可以得到公式推导的第一个结果:
令 α ˉ t = α t α t − 1 … α 2 α 1 ,得: x t = 1 − α ˉ t × ϵ + α ˉ t × x 0 \begin{array}{l} \text { 令 } \bar{\alpha}_{t}=\alpha_{t} \alpha_{t-1} \ldots \alpha_{2} \alpha_{1} \text { ,得: }\\ x_{t}=\sqrt{1-\bar{\alpha}_{t}} \times \epsilon+\sqrt{\bar{\alpha}_{t}} \times x_{0} \end{array} 令 αˉt=αtαt−1…α2α1 ,得: xt=1−αˉt×ϵ+αˉt×x0
我们通过这个公式的推导就可以证明了只要给定我们原图像x就可以根据我们推导的公式得到任意时刻t的一个图像。
这也说明了对于1000步一个加噪的过程我们不在需要加噪1000次了,指定好最后的步数即可通过这个公式完成一次加噪
反向去噪的过程
对于去噪的过程我们也提出了两个基本的假设
- 假设去噪过程也是马尔可夫链
- 假设去噪过程看作是高斯分布
由于xt到xt-1是一个随机过程,则令:
P ( x t − 1 ∣ x t ) P\left(x_{t-1} \mid x_{t}\right) P(xt−1∣xt)
我们用这个数学公式就表示在已经给出xt图像的基础上通过反向去噪,生成一个噪音图像进行相减得到xt-1的一个过程。也是我们要推导的第一个去噪过程的公式表达。
- 使用贝叶斯公式
P ( x t − 1 ∣ x t ) = P ( x t ∣ x t − 1 ) ∗ P ( x t − 1 ) P ( x t ) P\left(x_{t-1} \mid x_{t}\right)=\frac{P\left(x_{t} \mid x_{t-1}\right) * P\left(x_{t-1}\right)}{P\left(x_{t}\right)} P(xt−1∣xt)=P(xt)P(xt∣xt−1)∗P(xt−1)
其中,P(xt)和P(xt-1)分别表示xt和xt-1的概率,也就是从原图x0得到它们的概率。
- 根据假设和上面提到的等价的原理。所以,可以在每个式子后面添加一个先验x0,即:
P ( x t − 1 ∣ x t , x 0 ) = P ( x t ∣ x t − 1 , x 0 ) ∗ P ( x t − 1 ∣ x 0 ) P ( x t ∣ x 0 ) P\left(x_{t-1} \mid x_{t}, x_{0}\right)=\frac{P\left(x_{t} \mid x_{t-1}, x_{0}\right) * P\left(x_{t-1} \mid x_{0}\right)}{P\left(x_{t} \mid x_{0}\right)} P(xt−1∣xt,x0)=P(xt∣x0)P(xt∣xt−1,x0)∗P(xt−1∣x0)
- 我们对贝叶斯公式里面的每一个部分进行分别的分析可以知道。
P ( x t ∣ x t − 1 , x 0 ) 给定 x t − 1 到 x t 的概率。前向过程中可知 : P\left(x_{t} \mid x_{t-1}, x_{0}\right) 给定 x_{t-1} 到 x_{t} 的概率。前向过程中可知: P(xt∣xt−1,x0)给定xt−1到xt的概率。前向过程中可知:
x t = 1 − α t ∗ ϵ t + α t ∗ x t − 1 x t = 1 − a ˉ t ∗ ϵ + a ˉ t x 0 \begin{array}{c} x_{t}=\sqrt{1-\alpha_{t}} * \epsilon_{t}+\sqrt{\alpha_{t}} * x_{t-1} \\ \quad x_{t}=\sqrt{1-\bar{a}_{t}} * \epsilon+\sqrt{\bar{a}_{t}} x_{0} \end{array} xt=1−αt∗ϵt+αt∗xt−1xt=1−aˉt∗ϵ+aˉtx0
- et 和e分别服从N(0,1)结果高斯分布的两个性质我们就可以推导出来。
x t ∼ N ( a t x t − 1 , 1 − a t ) x_{t} \sim N\left(\sqrt{a_{t}} x_{t-1}, 1-a_{t}\right) xt∼N(atxt−1,1−at)
x t ∼ N ( a ˉ t x 0 , 1 − a ˉ t ) x_{t} \sim N\left(\sqrt{\bar{a}_{t}} x_{0}, 1-\bar{a}_{t}\right) xt∼N(aˉtx0,1−aˉt)
x t − 1 ∼ N ( a ˉ t − 1 x 0 , 1 − a ˉ t − 1 ) x_{t-1} \sim N\left(\sqrt{\bar{a}_{t-1}} x_{0}, 1-\bar{a}_{t-1}\right) xt−1∼N(aˉt−1x0,1−aˉt−1)
- 将上面根据高斯公式的性质推导出来的三个分布带入到包括x0的贝叶斯公式中就可以得到。
需要计算的每一个贝叶斯公式的结果,本质上就是按照均值和方差的定义来写出需要的结果。
P ( x t − 1 ∣ x t , x 0 ) = P ( x t ∣ x t − 1 , x 0 ) ∗ P ( x t − 1 ∣ x 0 ) P ( x t ∣ x 0 ) P\left(x_{t-1} \mid x_{t}, x_{0}\right)=\frac{P\left(x_{t} \mid x_{t-1}, x_{0}\right) * P\left(x_{t-1} \mid x_{0}\right)}{P\left(x_{t} \mid x_{0}\right)} P(xt−1∣xt,x0)=P(xt∣x0)P(xt∣xt−1,x0)∗P(xt−1∣x0)
它经过化简之后就可以表示为下面的形式来进行表达:
P ( x t − 1 ∣ x t , x 0 ) = P\left(x_{t-1} \mid x_{t}, x_{0}\right)= P(xt−1∣xt,x0)=
1 2 π ( 1 − a t 1 − a ˉ t − 1 1 − a ˉ t ) e [ − ( x t − 1 − ( a t ( 1 − a ˉ t − 1 ) 1 − a ˉ t x t + a t − 1 ( 1 − a t ) 1 − a ˉ t x 0 ) ) 2 2 ( 1 − a t 1 − t ˉ t − 1 1 − a ˉ t ) 2 ] \frac{1}{\sqrt{2 \pi}\left(\frac{\sqrt{1-a_{t}} \sqrt{1-\bar{a}_{t-1}}}{\sqrt{1-\bar{a}_{t}}}\right)} e^{\left[-\frac{\left(x_{t-1}-\left(\frac{\sqrt{a_{t}\left(1-\bar{a}_{t-1}\right)}}{1-\bar{a}_{t}} x_{t}+\frac{\sqrt{a_{t-1}}\left(1-a_{t}\right)}{1-\bar{a}_{t}} x_{0}\right)\right)^{2}}{2\left(\frac{\sqrt{1-a_{t}} \sqrt{1-\bar{t}_{t-1}}}{\sqrt{1-\bar{a}_{t}}}\right)^{2}}\right]} 2π(1−aˉt1−at1−aˉt−1)1e −2(1−aˉt1−at1−tˉt−1)2(xt−1−(1−aˉtat(1−aˉt−1)xt+1−aˉtat−1(1−at)x0))2
- 这个可以看作是一个高斯分布的表示形式根据其性质我们就可以得到分布的均值和方差的信息了。
P ( x t − 1 ∣ x t , x 0 ) ∼ N ( a t ( 1 − a ˉ t − 1 ) 1 − a ˉ t x t + a ˉ t − 1 ( 1 − a t ) 1 − a ˉ t x 0 , ( 1 − a t 1 − a ˉ t − 1 1 − a ˉ t ) 2 ) P\left(x_{t-1} \mid x_{t}, x_{0}\right) \sim N\left(\frac{\sqrt{a_{t}}\left(1-\bar{a}_{t-1}\right)}{1-\bar{a}_{t}} x_{t}+\frac{\sqrt{\bar{a}_{t-1}}\left(1-a_{t}\right)}{1-\bar{a}_{t}} x_{0},\left(\frac{\sqrt{1-a_{t}} \sqrt{1-\bar{a}_{t-1}}}{\sqrt{1-\bar{a}_{t}}}\right)^{2}\right) P(xt−1∣xt,x0)∼N(1−aˉtat(1−aˉt−1)xt+1−aˉtaˉt−1(1−at)x0,(1−aˉt1−at1−aˉt−1)2)
我们推导出的这个公式其实就是在给出xt的基础上向前推去噪后的图像xt-1的过程公式了
我们要求的是通过这个关系从xt一直向前进行迭代一直到求解出x0的结果。
- 根据xt和x0之间的关系公式进行变换就可以得到下面的表达形式进行带入即可:
x 0 = x t − 1 − a ˉ t × ϵ a ˉ t x_{0}=\frac{x_{t}-\sqrt{1-\bar{a}_{t}} \times \epsilon}{\sqrt{\bar{a}_{t}}} x0=aˉtxt−1−aˉt×ϵ
P ( x t − 1 ∣ x t , x 0 ) ∼ N ( a t ( 1 − a ˉ t − 1 ) 1 − a ˉ t x t + a ˉ t − 1 ( 1 − a t ) 1 − a ˉ t × x t − 1 − a ˉ t × ϵ a ˉ t , ( β t ( 1 − a ˉ t − 1 ) 1 − a ˉ t ) 2 ) P\left(x_{t-1} \mid x_{t}, x_{0}\right) \sim N\left(\frac{\sqrt{a_{t}}\left(1-\bar{a}_{t-1}\right)}{1-\bar{a}_{t}} x_{t}+\frac{\sqrt{\bar{a}_{t-1}}\left(1-a_{t}\right)}{1-\bar{a}_{t}} \times \frac{x_{t}-\sqrt{1-\bar{a}_{t}} \times \epsilon}{\sqrt{\bar{a}_{t}}},\left(\sqrt{\frac{\beta_{t}\left(1-\bar{a}_{t-1}\right)}{1-\bar{a}_{t}}}\right)^{2}\right) P(xt−1∣xt,x0)∼N 1−aˉtat(1−aˉt−1)xt+1−aˉtaˉt−1(1−at)×aˉtxt−1−aˉt×ϵ, 1−aˉtβt(1−aˉt−1) 2
它表示的是:对于任意xt的图像都可以用x0加载而来;而只要知道了从x0到xt加入的噪声∈,就能得到它前一时刻xt-1的概率分布。
- 利用之前一部分提到的重参数变换技巧来进行化简变换就可以得到下面的形式了。
μ = 1 α t ( α t − α t ‾ 1 − α t ‾ x t + α t ‾ ( 1 − α t ) 1 − α t ‾ ∗ x t − 1 − α t ‾ ϵ α t ‾ ) = 1 α t [ α t − α t ‾ 1 − α t ‾ x t + 1 − α t 1 − α t ‾ ∗ ( x t − 1 − α t ‾ ϵ ) ] = 1 α t ( x t − 1 − α t 1 − α t ‾ 1 − α t ‾ ϵ ) = 1 α t ( x t − 1 − α t 1 − α t ‾ ϵ ) \begin{array}{l} \mu=\frac{1}{\sqrt{\alpha_{t}}}\left(\frac{\alpha_{t}-\overline{\alpha_{t}}}{1-\overline{\alpha_{t}}} x_{t}+\frac{\sqrt{\overline{\alpha_{t}}}\left(1-\alpha_{t}\right)}{1-\overline{\alpha_{t}}} * \frac{x_{t}-\sqrt{1-\overline{\alpha_{t}}} \epsilon}{\sqrt{\overline{\alpha_{t}}}}\right) \\ =\frac{1}{\sqrt{\alpha_{t}}}\left[\frac{\alpha_{t}-\overline{\alpha_{t}}}{1-\overline{\alpha_{t}}} x_{t}+\frac{1-\alpha_{t}}{1-\overline{\alpha_{t}}} *\left(x_{t}-\sqrt{1-\overline{\alpha_{t}}} \epsilon\right)\right]=\frac{1}{\sqrt{\alpha_{t}}}\left(x_{t}-\frac{1-\alpha_{t}}{1-\overline{\alpha_{t}}} \sqrt{1-\overline{\alpha_{t}}} \epsilon\right) \\ =\frac{1}{\sqrt{\alpha_{t}}}\left(x_{t}-\frac{1-\alpha_{t}}{\sqrt{1-\overline{\alpha_{t}}}} \epsilon\right) \end{array} μ=αt1(1−αtαt−αtxt+1−αtαt(1−αt)∗αtxt−1−αtϵ)=αt1[1−αtαt−αtxt+1−αt1−αt∗(xt−1−αtϵ)]=αt1(xt−1−αt1−αt1−αtϵ)=αt1(xt−1−αt1−αtϵ)
- 带入即可得到我们的最终结果了。
P ( x t − 1 ∣ x t , x 0 ) ∼ N ( 1 a t ( x t − 1 − a t 1 − a ˉ t ϵ ) , ( β t ( 1 − a ˉ t − 1 ) 1 − a ˉ t ) 2 ) P\left(x_{t-1} \mid x_{t}, x_{0}\right) \sim N\left(\frac{1}{\sqrt{a_{t}}}\left(x_{t}-\frac{1-a_{t}}{\sqrt{1-\bar{a}_{t}}} \epsilon\right),\left(\sqrt{\frac{\beta_{t}\left(1-\bar{a}_{t-1}\right)}{1-\bar{a}_{t}}}\right)^{2}\right) P(xt−1∣xt,x0)∼N at1(xt−1−aˉt1−atϵ), 1−aˉtβt(1−aˉt−1) 2
q ( x t − 1 ∣ x t , x 0 ) = N ( 1 α t ( x t − 1 − α t 1 − α ˉ t ϵ ) , β t ( 1 − α ˉ t − 1 ) 1 − α ˉ t ) { μ = 1 α t ( x t − 1 − α t 1 − α ˉ t ϵ ) σ 2 = β t ( 1 − α ˉ t − 1 ) 1 − α ˉ t \begin{array}{l} q\left(x_{t-1} \mid x_{t}, x_{0}\right)=\mathcal{N}\left(\frac{1}{\sqrt{\alpha_{t}}}\left(x_{t}-\frac{1-\alpha_{t}}{\sqrt{1-\bar{\alpha}_{t}}} \epsilon\right), \frac{\beta_{t}\left(1-\bar{\alpha}_{t-1}\right)}{1-\bar{\alpha}_{t}}\right) \\ \left\{\begin{array}{l} \mu=\frac{1}{\sqrt{\alpha_{t}}}\left(x_{t}-\frac{1-\alpha_{t}}{\sqrt{1-\bar{\alpha}_{t}}} \epsilon\right) \\ \sigma^{2}=\frac{\beta_{t}\left(1-\bar{\alpha}_{t-1}\right)}{1-\bar{\alpha}_{t}} \end{array}\right. \end{array} q(xt−1∣xt,x0)=N(αt1(xt−1−αˉt1−αtϵ),1−αˉtβt(1−αˉt−1)){ μ=αt1(xt−1−αˉt1−αtϵ)σ2=1−αˉtβt(1−αˉt−1)
我们得到噪音图像之后将它乘以一个系数。
1 − α t 1 − α ˉ t ϵ θ \frac{1-\alpha_{t}}{\sqrt{1-\bar{\alpha}_{t}}} \boldsymbol{\epsilon}_{\theta} 1−αˉt1−αtϵθ
x t − 1 = 1 α t ( x t − 1 − α t 1 − α ˉ ‾ t ϵ θ ) + σ t z \mathbf{x}_{t-1}=\frac{1}{\sqrt{\alpha_{t}}}\left(\mathbf{x}_{t}-\frac{1-\alpha_{t}}{\sqrt{1-\overline{\bar{\alpha}} t}} \boldsymbol{\epsilon}_{\theta}\right)+\sigma_{t} \mathbf{z} xt−1=αt1(xt−1−αˉt1−αtϵθ)+σtz
σ 2 = β t ( 1 − α ˉ t − 1 ) 1 − α ˉ t \sigma^{2}=\frac{\beta_{t}\left(1-\bar{\alpha}_{t-1}\right)}{1-\bar{\alpha}_{t}} σ2=1−αˉtβt(1−αˉt−1)
这部分就是关于反向去噪的部分q的一个描述结果的证明了。
损失函数的过程
损失函数主要是采用极大似然估计的方法来给出证明的过程。ELBO近似的数学理论部分,可以之前写过的概率模型数学基础的文章。
- 极大似然估计写对数函数。损失函数的目标:
log L ( θ ) = log ∏ i = 1 n p ( x i ∣ θ ) = ∑ i = 1 n log p ( x i ∣ θ ) \begin{aligned} \log L(\theta) & =\log \prod_{i=1}^{n} p\left(x_{i} \mid \theta\right) \\ & =\sum_{i=1}^{n} \log p\left(x_{i} \mid \theta\right) \end{aligned} logL(θ)=logi=1∏np(xi∣θ)=i=1∑nlogp(xi∣θ)
对于每一个样本 , 我想要求出一组参数 θ ^ = ( μ , σ ) 使得 log p θ ( x 0 ) 值最大 对于每一个样本, 我想要求出一组参数 \hat{\theta}=\left(\begin{array}{ll}\mu, & \sigma\end{array}\right) 使得 \log p_{\theta}\left(x_{0}\right) 值最大 对于每一个样本,我想要求出一组参数θ^=(μ,σ)使得logpθ(x0)值最大
- 使用ELBO : Evidence Lower Bound的思想来求解这个极大似然估计。
添加一个q式子凑数两个分布的kl散度在进行一步放缩也就是ELBO的推导过程。
maximize logp θ ( x 0 ) = ∫ x 1 : x T q ( x 1 : x T ∣ x 0 ) log θ ( x 0 ) d x 1 : x T = ∫ x 1 : x T q ( x 1 : x T ∣ x 0 ) log p θ ( x 0 : x T ) p θ ( x 1 : x T ∣ x 0 ) d x 1 : x T = ∫ x 1 : x T q ( x 1 : x T ∣ x 0 ) log p θ ( x 0 : x T ) q ( x 1 : x T ∣ x 0 ) p θ ( x 1 : x T ∣ x 0 ) q ( x 1 : x T ∣ x 0 ) d x 1 : x T = ∫ x 1 : x T q ( x 1 : x T ∣ x 0 ) log p θ ( x 0 : x T ) q ( x 1 : x T ∣ x 0 ) d x 1 : x T + ∫ x 1 : x T q ( x 1 : x T ∣ x 0 ) log q ( x 1 : x T ∣ x 0 ) p θ ( x 1 : x T ∣ x 0 ) d x 1 : x T = ∫ x 1 : x T q ( x 1 : x T ∣ x 0 ) log p θ ( x 0 : x T ) q ( x 1 : x T ∣ x 0 ) d x 1 : x T + D K L ( q ( x 1 : x T ∣ x 0 ) ∥ p θ ( x 1 : x T ∣ x 0 ) ) > = 0 ≥ ∫ x 1 : x T q ( x 1 : x T ∣ x 0 ) log p θ ( x 0 : x T ) q ( x 1 : x T ∣ x 0 ) d x 1 : x T = E x 1 : x T ∼ q ( x 1 : x T ∣ x 0 ) [ log p θ ( x 0 : x T ) q ( x 1 : x T ∣ x 0 ) ] \begin{array}{l} \operatorname{maximize} \operatorname{logp}_{\theta}\left(x_{0}\right)=\int_{x_{1}: x_{T}} q\left(x_{1}: x_{T} \mid x_{0}\right) \log _{\theta}\left(x_{0}\right) d_{x_{1}: x_{T}} \\ =\int_{x_{1}: x_{T}} q\left(x_{1}: x_{T} \mid x_{0}\right) \log \frac{p_{\theta}\left(x_{0}: x_{T}\right)}{p_{\theta}\left(x_{1}: x_{T} \mid x_{0}\right)} d_{x_{1}: x_{T}} \\ =\int_{x_{1}: x_{T}} q\left(x_{1}: x_{T} \mid x_{0}\right) \log \frac{p_{\theta}\left(x_{0}: x_{T}\right) q\left(x_{1}: x_{T} \mid x_{0}\right)}{p_{\theta}\left(x_{1}: x_{T} \mid x_{0}\right) q\left(x_{1}: x_{T} \mid x_{0}\right)} d_{x_{1}: x_{T}} \\ =\int_{x_{1}: x_{T}} q\left(x_{1}: x_{T} \mid x_{0}\right) \log \frac{p_{\theta}\left(x_{0}: x_{T}\right)}{q\left(x_{1}: x_{T} \mid x_{0}\right)} d_{x_{1}: x_{T}}+\int_{x_{1}: x_{T}} q\left(x_{1}: x_{T} \mid x_{0}\right) \log \frac{q\left(x_{1}: x_{T} \mid x_{0}\right)}{p_{\theta}\left(x_{1}: x_{T} \mid x_{0}\right)} d_{x_{1}: x_{T}} \\ =\int_{x_{1}: x_{T}} q\left(x_{1}: x_{T} \mid x_{0}\right) \log \frac{p_{\theta}\left(x_{0}: x_{T}\right)}{q\left(x_{1}: x_{T} \mid x_{0}\right)} d_{x_{1}: x_{T}}+\frac{D_{K L}\left(q\left(x_{1}: x_{T} \mid x_{0}\right) \| p_{\theta}\left(x_{1}: x_{T} \mid x_{0}\right)\right)}{>=\mathbf{0}} \\ \geq \int_{x_{1: x_{T}}} q\left(x_{1}: x_{T} \mid x_{0}\right) \log \frac{p_{\theta}\left(x_{0}: x_{T}\right)}{q\left(x_{1}: x_{T} \mid x_{0}\right)} d_{x_{1}: x_{T}} \\ =E_{x_{1}: x_{T} \sim q\left(x_{1}: x_{T} \mid x_{0}\right)}\left[\log \frac{p_{\theta}\left(x_{0}: x_{T}\right)}{q\left(x_{1}: x_{T} \mid x_{0}\right)}\right] \end{array} maximizelogpθ(x0)=∫x1:xTq(x1:xT∣x0)logθ(x0)dx1:xT=∫x1:xTq(x1:xT∣x0)logpθ(x1:xT∣x0)pθ(x0:xT)dx1:xT=∫x1:xTq(x1:xT∣x0)logpθ(x1:xT∣x0)q(x1:xT∣x0)pθ(x0:xT)q(x1:xT∣x0)dx1:xT=∫x1:xTq(x1:xT∣x0)logq(x1:xT∣x0)pθ(x0:xT)dx1:xT+∫x1:xTq(x1:xT∣x0)logpθ(x1:xT∣x0)q(x1:xT∣x0)dx1:xT=∫x1:xTq(x1:xT∣x0)logq(x1:xT∣x0)pθ(x0:xT)dx1:xT+>=0DKL(q(x1:xT∣x0)∥pθ(x1:xT∣x0))≥∫x1:xTq(x1:xT∣x0)logq(x1:xT∣x0)pθ(x0:xT)dx1:xT=Ex1:xT∼q(x1:xT∣x0)[logq(x1:xT∣x0)pθ(x0:xT)]
- 对这个包含期望的式子在进行一次推导—我们在ELBO的基础上对这个式子在进行化简和推导。
maximize log p ( x ) ≥ E q ( x 1 : T ∣ x 0 ) [ log p ( x 0 : T ) q ( x 1 : T ∣ x 0 ) ] \operatorname{maximize} \log p(\boldsymbol{x}) \geq \mathbb{E}_{q\left(\boldsymbol{x}_{1: T} \mid \boldsymbol{x}_{0}\right)}\left[\log \frac{p\left(\boldsymbol{x}_{0: T}\right)}{q\left(\boldsymbol{x}_{1: T} \mid \boldsymbol{x}_{0}\right)}\right] maximizelogp(x)≥Eq(x1:T∣x0)[logq(x1:T∣x0)p(x0:T)]
- 中间过程的推导参考之前写的数学基础里面的内容,我们经过复杂的推导流程之后就可以推导出下面的公式结果了。
推导到最后的结果就由下面的三个部分组成的。
E q ( x 1 ∣ x 0 ) [ log p θ ( x 0 ∣ x 1 ) ] − D K L ( q ( x T ∣ x 0 ) ∥ p ( x T ) ) − ∑ T E q ( x t ∣ x 0 ) [ D K L ( q ( x t − 1 ∣ x t , x 0 ) ∥ p θ ( x t − 1 ∣ x t ) ) ] \mathbb{E}_{q\left(\boldsymbol{x}_{1} \mid \boldsymbol{x}_{0}\right)}\left[\log p_{\boldsymbol{\theta}}\left(\boldsymbol{x}_{0} \mid \boldsymbol{x}_{1}\right)\right]-D_{\mathrm{KL}}\left(q\left(\boldsymbol{x}_{T} \mid \boldsymbol{x}_{0}\right) \| p\left(\boldsymbol{x}_{T}\right)\right)-\sum^{T} \mathbb{E}_{q\left(\boldsymbol{x}_{t} \mid \boldsymbol{x}_{0}\right)}\left[D_{\mathrm{KL}}\left(q\left(\boldsymbol{x}_{t-1} \mid \boldsymbol{x}_{t}, \boldsymbol{x}_{0}\right) \| p_{\boldsymbol{\theta}}\left(\boldsymbol{x}_{t-1} \mid \boldsymbol{x}_{t}\right)\right)\right] Eq(x1∣x0)[logpθ(x0∣x1)]−DKL(q(xT∣x0)∥p(xT))−∑TEq(xt∣x0)[DKL(q(xt−1∣xt,x0)∥pθ(xt−1∣xt))]
其中第二部分的KL散度可以看作是一个已知的值,xt:加噪后的图像分布于从x0加噪得到的分布之间的差异值。已知常数。无影响去掉。
- 将第一部分化简凑出与第三部分相同的kl散度形式进行化简合并即可。本质上也就是加一个已知的加噪过程进行化简合并。
= − E q ( x 1 ∣ x 0 ) [ log 1 p θ ( x 0 ∣ x 1 ) ] = − E q ( x 1 ∣ x 0 ) [ q ( x 0 ∣ x 0 , x 1 ) log q ( x 0 ∣ x 0 , x 1 ) p θ ( x 0 ∣ x 1 ) ] = − E q ( x 1 ∣ x 0 ) [ D K L ( q ( x 0 ∣ x 0 , x 1 ) ∥ p θ ( x 0 ∣ x 1 ) ] \begin{array}{l} =-E_{q}\left(x_{1} \mid x_{0}\right)\left[\log \frac{1}{p_{\theta}\left(x_{0} \mid x_{1}\right)}\right] \\ =-E_{q}\left(x_{1} \mid x_{0}\right)\left[q\left(x_{0} \mid x_{0}, x_{1}\right) \log \frac{q\left(x_{0} \mid x_{0}, x_{1}\right)}{p_{\theta}\left(x_{0} \mid x_{1}\right)}\right] \\ =-E_{q}\left(x_{1} \mid x_{0}\right)\left[D_{K L}\left(q\left(x_{0} \mid x_{0}, x_{1}\right) \| p_{\theta}\left(x_{0} \mid x_{1}\right)\right]\right. \end{array} =−Eq(x1∣x0)[logpθ(x0∣x1)1]=−Eq(x1∣x0)[q(x0∣x0,x1)logpθ(x0∣x1)q(x0∣x0,x1)]=−Eq(x1∣x0)[DKL(q(x0∣x0,x1)∥pθ(x0∣x1)]
∑ 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\left(\boldsymbol{x}_{t} \mid \boldsymbol{x}_{0}\right)}\left[D_{\mathrm{KL}}\left(q\left(\boldsymbol{x}_{t-1} \mid \boldsymbol{x}_{t}, \boldsymbol{x}_{0}\right) \| p_{\boldsymbol{\theta}}\left(\boldsymbol{x}_{t-1} \mid \boldsymbol{x}_{t}\right)\right)\right]}_{\text {denoising matching term }} t=2∑Tdenoising matching term Eq(xt∣x0)[DKL(q(xt−1∣xt,x0)∥pθ(xt−1∣xt))]
第三部分的t是从2开始的刚好缺凑出来的第一项的结果。
- 因为前面带符号之间变为去最小化的一个操作就可以得到最终的损失函数的形式了。
minimize ∑ t = 1 T E q ( x t ∣ x 0 ) [ D K L ( q ( x t − 1 ∣ x t , x 0 ) ∥ p θ ( x t − 1 ∣ x t ) ) ] \operatorname{minimize} \sum_{t=1}^{T} \mathbb{E}_{q\left(\boldsymbol{x}_{t} \mid \boldsymbol{x}_{0}\right)}\left[D_{\mathrm{KL}}\left(q\left(\boldsymbol{x}_{t-1} \mid \boldsymbol{x}_{t}, \boldsymbol{x}_{0}\right) \| p_{\boldsymbol{\theta}}\left(\boldsymbol{x}_{t-1} \mid \boldsymbol{x}_{t}\right)\right)\right] minimizet=1∑TEq(xt∣x0)[DKL(q(xt−1∣xt,x0)∥pθ(xt−1∣xt))]
这个公式的推导过程虽然十分的繁琐但是代表的含义主要就是,从x0到xt-1所得到的加噪过程图像分布于从已知xt推导xt-1的去噪过程的图像所满足的分布之间的差异最小即可。