DDPM | Diffusion基础
论文原文
论文原文是20年的这一篇 Denoising diffusion probabilistic models 论文的地址: Arxiv.org
题外话,现在网上的教程都是一个抄一个,有个公式打错了结果我发现网上大部分教程都打错了 :-(
模型的整体思路
整体的流程润下图所示:
首先是从训练集开始不断地往上面加高斯噪声,最后直到达到一个纯随机的分布,再训练这个去除噪声的过程,从任意一个纯随机分布开始,一步步地去除噪声,直到还原出最后的图片
加噪声的过程
引理
考虑原输入和一个高斯噪声的加权平均的过程,假设第
这其中的
考虑权重
注意到这里的
上面的式子
加噪声的过程
在论文中,加噪的过程被描述为:
如果你对这个式子里面的正态分布为什么有三个参数感到迷惑,你可以理解为第一个分号前面的
那么考虑从最开始的图像加噪
根据前面的引理,记
去除噪声的过程
去除噪声的过程简言之就是推到出后验概率
已经有论文证明了在
而这里面的
接下来考虑怎么去求一个loss,这样就可以优化这两个参数了,注意到如果知道
这里面的
上面式子中的第一步是根据贝叶斯公式把先验概率转换成后验概率
第二个正比是因为这里已经全是后验概率了,全是高斯噪声,而高斯分布的计算公式是:
去掉第一项就是正比
由于我们知道这个分布是近似为正态分布的,那么把这个正态分布记为:
接下来求这两个参数
根据正态分布的表达式,有:
将之前得到的式子
带入上面求参数的式子可以得到:
在上面的式子中,只有第
另一篇博客的记号
加噪过程
记加噪过程为:
其中
可以得到如下的算式:
$$
\begin{split}
x_t &= \alpha_{t} x_{t - 1} + \beta_t\epsilon_t\
&= \alpha_{t} (\alpha_{t - 1} x_{t - 2} + \beta_{t - 1}\epsilon_{t - 1}) + \beta_t\epsilon_t\
&= \cdots \
&= \prod_{i = 1}^T\alpha_i x_0 + (\alpha_t\cdots\alpha_2)\beta_1\epsilon_1 + (\alpha_t\cdots\alpha_3)\beta_2\epsilon_2 + \cdots +\alpha_t\beta_{t - 1}\epsilon_{t - 1} +\beta_{t}\epsilon_t\
&=\prod_{i = 1}^T\alpha_i x_0 + \sqrt{1 - \left(\prod_{i = 1}^T\alpha_i\right)^2}\bar{\epsilon}t,\bar{\epsilon}t \sim \mathcal N (0,I)
\end{split}
$$
这里记 $\bar\alpha_t = \prod{i = 1}^T\alpha_i
去噪过程
考虑重建的去噪过程,其实本质上就是在给定第
这里记
由于我们注意到,这里面的
的形式,那么我们可以把这里的预测模型写成类似的形式:
这里面的
带入计算,可以得到损失函数:
带入
这就是最后的损失函数了。
减少采样变量个数降低方差
观察上面的损失函数,这里面每一轮训练有四个东西需要采样:
:这是从样本里面采样一个图片出来 采样两个噪声出来 - 采样