扩散模型(Duffusion Model)
生成模型,Target:从一些随机噪声中一步步去噪,最终生成一个有意义的数据样本(比如图像、分子、蛋白质结构等)
扩散过程两阶段
-
前向扩散(Foward Diffusion)
此过程是固定,无需学习的
- 输入一个真实数据(如一张图片或一个分子结构)
- 每一步加入一点高斯噪声
- 经过T步之后,输入的数据会变成一个几乎完全随机的噪声图像(纯噪声)
-
反向扩散/重建过程(Reverse Diffusion/Denoising)
此过程通过深度神经网络学习
- 从纯噪声开始
- 每一步尝试预测并去除一点噪声,逐渐恢复出原始数据
Diffusion模型训练
-
核心思想:在每一步去噪时,学会预测当前时刻加了多少噪声(或直接预测原始数据)
-
数学表达
- 原始数据输入为
- 第步的噪声图像为
- 目标是训练一个神经网络来预测噪声
-
损失函数
- 通常是最小化预测误差:
- 等号右侧第一部分表示对三个变量的期望(平均),在训练时从训练集中采样,从高斯噪声中采样,随机选一个时间步,计算后面的平方差后取平均
- 中括号内是核心,表示网络预测噪声与真实噪声之间的均方误差(MAE),其中\theta是神经网路的参数
- 总结:此损失函数衡量:在某一时间步,模型对噪声的预测误差有多大
等变扩散模型(Equivariant Diffusion Models,EDM)
等变形:输入变化,输出也以相同方式跟着变化
不变性:输入变化,输出不变
EDM是一种特殊的扩散模型,它在反向扩散的过程中显式建模数据的几何结构(如位置、旋转、平移),使用专门设计的网络结构(通常是图神经网络GNN或SE(3)网路)来实现等变形。
- 适合生成具有明确几何结构的图像,如蛋白质、分子等
条件扩散模型(Conditional Diffusion Model)
允许在生成时添加额外信息控制生成结果:在训练和采样时,将condition输入到神经网络中
python sample.py --model_path model.pth ``--class_label dog