EDM | Datawhale AI春训营

6 阅读2分钟

扩散模型(Duffusion Model)

生成模型,Target:从一些随机噪声中一步步去噪,最终生成一个有意义的数据样本(比如图像、分子、蛋白质结构等)

扩散过程两阶段

  1. 前向扩散(Foward Diffusion)

    此过程是固定,无需学习的

    1. 输入一个真实数据(如一张图片或一个分子结构)
    2. 每一步加入一点高斯噪声
    3. 经过T步之后,输入的数据会变成一个几乎完全随机的噪声图像(纯噪声)
  2. 反向扩散/重建过程(Reverse Diffusion/Denoising)

    此过程通过深度神经网络学习

    1. 从纯噪声开始
    2. 每一步尝试预测并去除一点噪声,逐渐恢复出原始数据

Diffusion模型训练

  • 核心思想:在每一步去噪时,学会预测当前时刻加了多少噪声(或直接预测原始数据)

  • 数学表达

    • 原始数据输入为x0x_0
    • tt步的噪声图像为xt=αtx0+1αtϵx_t=\sqrt{\alpha_t}x_0+\sqrt{1-\alpha_t}\epsilon
    • 目标是训练一个神经网络ϵθ(xt,t)\epsilon_\theta(x_t,t)来预测噪声ϵ\epsilon
  • 损失函数

    • 通常是最小化预测误差:L=Ex0,ϵ,t[ϵϵθ(xt,t))2]\mathcal{L}=\mathbb{E}_{x_0,\epsilon,t} \left[\left\|\epsilon-\epsilon_\theta(x_t,t))\right\|^2\right]
    • 等号右侧第一部分表示对三个变量的期望(平均),在训练时从训练集中采样xtx_t,从高斯噪声中采样ϵ\epsilon,随机选一个时间步tt,计算后面的平方差后取平均
    • 中括号内是核心,表示网络预测噪声与真实噪声之间的均方误差(MAE),其中\theta是神经网路的参数
    • 总结:此损失函数衡量:在某一时间步,模型对噪声的预测误差有多大

等变扩散模型(Equivariant Diffusion Models,EDM)

等变形:输入变化,输出也以相同方式跟着变化

不变性:输入变化,输出不变

EDM是一种特殊的扩散模型,它在反向扩散的过程中显式建模数据的几何结构(如位置、旋转、平移),使用专门设计的网络结构(通常是图神经网络GNN或SE(3)网路)来实现等变形。

  • 适合生成具有明确几何结构的图像,如蛋白质、分子等

条件扩散模型(Conditional Diffusion Model)

允许在生成时添加额外信息控制生成结果:在训练和采样时,将condition输入到神经网络中

python sample.py --model_path model.pth ``--class_label dog