- 两个过程
- 前向过程(forward process):添加噪声;
- 反向过程(reverse process),又称为扩散过程(diffusion process):去除噪声,数据样本生成。
- 过程核心原理
- 无论是前向过程还是反向过程都是一个参数化的马尔可夫链(Markov chain),即当前过程状态仅与上个过程状态相关;
- 复杂的条件概率推理最终将这个过程简化为学习噪声分布的网络。
- 前向过程如何加噪
- 添加 t 次随机高斯噪声(逐渐增大),但是这样比较繁琐;
- 推理得到最终添加的所有噪声可以表达为与 t 相关的一个公式;
- 每批(个)样本添加噪声的时候 t 是随机选取的。
- 反向过程如何降噪
- 反向过程的噪声不是一步到位直接去除,前向过程添加 t 次噪声,反向过程就要去除 t 次噪声;
- 每次降噪都是用一个训练好的网络,输入为当前时刻 t 和 当前值 x_t(有条件的话还要输入条件),输出噪声分布;
- 为了加快降噪过程可以减少 t 的次数。
- loss是如何计算的
- 由降噪过程可知 diffusion 使用网络学习噪声分布,loss 是约束每次添加的噪声和网络输出的噪声之间的距离。