Denoising Diffusion Probabilistic Models
Ho J , Jain A , Abbeel P .Denoising Diffusion Probabilistic Models[J]. 2020.DOI:10.48550/arXiv.2006.11239.
前向过程
前向扩散过程就是向图像不断加高斯噪声
给定初始数据点
在
在给定前一个状态
其中
这个过程中,我们逐渐将噪声加入到数据中,因为均值是
输入
重参数化技巧 (reparameterization trick)
对于采样操作,采样的输出不是输入参数(如
在深度学习中,我们通常使用梯度下降来优化模型参数,梯度计算依赖于链式法则。由于采样结果随机,这种不确定性使得梯度无法通过采样的结果反向传播到模型参数。
重参数化的核心思想是将随机过程与可微过程分离,这样我们可以对可微部分进行梯度计算,同时保留随机性。具体而言,重参数化技巧将从分布
对于一个高斯分布:
它的采样过程可以写成:
其中,
通过这种方式,将随机性分离到了
对于:
采样过程就是:
为了简化计算,令:
有:
即:
反向过程
定义反向过程为一个以
其中:
- 起点:
,即纯噪声 - 每一步:
反向过程的每一步也是一个高斯分布,其均值和方差由神经网路
直接计算很困难,所以引入了变分推断的思想:我们有一个由前向过程定义的、已知的真实数据分布
将损失函数定义为目标函数的负值,目标函数越大,损失越小:
前向过程
数学上,我们希望两个条件分布接近:
KL散度
展开KL散度:
由于:
有:
即:
根据我们之前的定义:
- 反向过程联合分布:
- 前向过程联合分布:
代入:
要计算这个期望,
- 我们需要从
中采样一个数据点 - 然后从
中采样整个加噪轨迹 - 对每个时间步,计算比值
- 最后取期望
我们希望的是对每个时间步单独计算损失,而不是对整个轨迹进行采样后再计算。
另外,公式中混合了前向和反向转移,没有清晰地分离出“去噪误差”,即缺乏明确的优化目标。
根据贝叶斯定理:
有:
于是:
整理:
第一项是
第二项同理,但注意
最后。我们得到了负对数似然的变分下界(ELBO)的分解形式:
这样,损失函数被分解为三项:
第一项是最终噪声分布的 KL散度。由于前向过程确保
接近标准高斯,且 也是标准高斯,这一项近似为 ,可以忽略。 第二项是一系列 KL散度,要求每个时间步上模型的反向分布
尽可能接近真实的后验分布 。 第三项是最后一步的对数似然,即从
生成 的概率。
TIP
真实后验
已知:
根据贝叶斯定理,真实后验分布为:
代入三个高斯分布的概率密度函数,关注指数部分(忽略常数项):
展开前两项中与
第一项展开:
第二项展开:
合并同类项:
- 二次项系数(
的系数)
- 一次项系数(
的系数)
高斯分布的精度(方差的倒数)为二次项系数:
化简:
注意到
因此:
方差为:
高斯分布的均值满足:
解得:
代入
由:
解出
有:
由于
利用
真实后验分布为:
这个结果表明在已知原始数据
我们也将反向分布
为了匹配
其中
在论文中,作者发现忽略权重系数
其中:
训练算法
重复直到收敛:
- 从训练集中采样
- 均匀采样时间步
- 采样噪声
- 计算加噪样本
- 计算损失
- 反向传播更新参数
采样算法
- 从标准高斯分布采样初始噪声:
- 从
到 循环: - 预测噪声:
- 计算均值:
- 采样
(若 则 ) - 更新:
- 预测噪声:
- 返回生成样本