学习笔记:扩散模型算法介绍

本文原写于2024年8月16日。
原理
扩散模型可实现从噪声(采样自简单分布,如高斯分布)到数据样本的转换,分为两个步骤:
- 固定的前向扩散过程
:逐步向图片添加噪声直至得到一张纯噪声图像; - 可训练的去噪过程
:训练神经网络从纯噪声图像中去噪,得到一张真正的图片。
该过程是一个马尔可夫过程,因为计算
正向过程中,向原图像
前向与反向过程
前向过程
设来自某训练集的图像
这里
原论文中随着
令
接着向前递推,可做如下推导:
如此我们就可以直接从
反向过程
该过程我们希望能倒过来取消每一步的加噪操作,使一幅纯噪声图像
数学上有:当
为了描述去噪操作,神经网络的任务就是根据当前时刻
虽然我们无法得到逆转过程的概率分布
等式左边(其中均值和方差是待求项):
等式右边:
等式右边全部已知,代入可得给定
经过化简可得分布均值与方差:
其中
训练算法与采样算法
训练算法
逐行分析算法含义:
- 从训练集中取出一个数据
- 随机从
中取出一个时刻训练(虽然要求神经网络拟合 个正态分布,但实际训练时,不用一轮预测 个结果,只需要随机预测 个时刻中某一个时刻的结果就行) - 随机生成一个噪声
- 将
传给神经网络,通过梯度下降预测随机噪声 - 训练到收敛位置(时间较长,通常设
)
采样(测试)算法
- 从标准高斯分布采样一个噪声图像
- 循环迭代
- 如果时间步不为1,从高斯分布采样一个噪声
,否则 - 计算每个时间步
的噪声图( 由训练步骤获得)
以上是关于扩散模型的粗略解读。部分推导未在本文列出,除非研究目标是改进扩散模型本身,学习时了解该模型整体思想和主要原理即可。
- Title: 学习笔记:扩散模型算法介绍
- Author: Jachin Zhang
- Created at : 2025-02-06 20:04:45
- Updated at : 2025-02-19 17:30:55
- Link: https://jachinzhang1.github.io/2025/02/06/DiffusionModel/
- License: This work is licensed under CC BY-NC-SA 4.0.