参考视频:[论文速览]Denoising Diffusion Probabilistic Models / DDPM[2006.11239]
在线原理展示:click here
简明数学原理
- 正向过程: 添加噪声
小e代表重N(0, 1)中采样得到的高斯噪声, x代表某一timestep的图像.
为什么要添加根号? 因为添加了根号可以在后面的推到中获得一些每秒的数学性质. - 反向过程
令 α = 1 - β, 在反向过程中, 可以得到:
注意, 这里的xt代表着timestep为t时的某一个具体的图像所对应的三通道矩阵, 而e代表着从高斯分布中采样得到的一个噪声, 在他们背后: e对应着服从高斯分布的随机变量, xt代表着服从某个timestep下特殊复杂的位置分度的随机变量, 随机变量可以是一个矩阵(?).
那么如何从高斯噪声反退回原始图像呢? 因为我们知道xt与xt-1之间的关系, 所以只要知道了xt我们就能通过以上公式知道xt-1(直接前提: 保证预测的高斯噪声与添加的相同, 而我们又如何知道是哪一个特定的噪声呢 -> 更高级的概率论知识(由分布推导分布)), 需要意识到, 以上的正向过程与逆向过程均为随机过程, 这代表着我们可以使用贝叶斯公式来进行反推.
how
先看贝叶斯公式:
prior: 先验概率, posterior: 后验概率
该公式描述了: 当B事件发生后A事件发生的概率的计算方式, . 而P(B|A)即似然, 描述了B事件对于A事件的归因力度, 当似然越大时, B事件就提供了A事件发生的越强的证据.
在反推时, 有以下公式:
带入我们之间计算的xt与xt-1的关系, 得到可以反推出他们的分布如下:
进一步代换得到:
进一步代换到上述总的贝叶斯公式中再化简后得到如下结果:
再将x0代换掉得到:
至此我们可以通过e和由于timestep相关的几个系数, 以及已知的xt得到xt-1对应的分布, 通过采样我们就可以得到一个图像.
而这里其他的都可以知道, 最棘手的时e的获取, 因此我们训练一个神经网络, 给定xt和t, 预测噪声, 用神经网络解决最麻烦的部分.
至此, 有关概率论部分的故事讲解清楚, 接下来开始讨论神经网络部分.
Motivation
针对无条件生成任务, 而一般情况下我们想要生成的图片的分布是极其复杂难以进行数学分析的, 而像高斯分布, 二项分布一类的在数学上被充分研究的分布在现实中有基本没有使用场景.
因此, 与其他生成式模型的思路类似的, 我们可以将一股复杂的现实分布通过一步步的变换, 变换到一个简单的分布上, 如高斯分布. 这一过程被称为前向过程, 而与之反向的就是所谓的diffusion process. 这里有一个假设, 就是当状态的单次变换很小的话, 我们仍然可以假设这个变换是正态的. 有了这一个条件, 那么就可以使用数学工具分析了. 另一个条件就是马尔可夫性质, 每一个X足够表示整个状态分布.
以上的序列图和其中的p和q, 实质上是在描述一个随机过程.