美文网首页
Diffusion model原理剖析

Diffusion model原理剖析

作者: zilla | 来源:发表于2023-06-28 16:40 被阅读0次

    论文:Dnoising Diffusion Probabilistic Models

    1. DDPM的训练过程

    Diffusion model的训练,即noise predictor的训练

    训练即重复下面的过程直至收敛:

    • #2:取一张干净图片作为样本x_0
    • #3:从1到T之间sample出t
    • #4:生成噪声\epsilon(shape和x_0相同)
    • #5:将噪声\epsilon叠加到x_0,让noise predictor尽量准确地估计噪声。
      红色框内将x_0\epsilon做带权的叠加得到一个带噪声的图片,权重\overline{\alpha}_t是事先定义的(由t指定);\epsilon_\theta是noise predictor,它以混入噪声的latentt为输入,估计当前图片中的噪声(噪声的ground truth即前一步生成的噪声)。

    注意,实际在DDPM方法的训练过程中,噪声并不是一步一步加入的,而是一次性加入的。

    2. DDPM的推理过程

    • #1:生成一个纯噪声的图x_T
    • #2~#4:重复T步去噪过程,(有一些预先定义的仅和t相关的系数),当前的图片减去预测的噪声再加上这一步的随机噪声z,得到新的图片。
      DDPM的推理

    上述过程的合理性见李宏毅老师的数学推导(分集23)和猜测(分集4)。


    部分数学推导

    给模型\theta一个随机噪声z,我们希望\theta能输出一个尽量真实的图像x\theta生成的图像的分布应该尽量接近真实图像的分布。如下图,我们通过极大似然估计(Maximum Likelihood Estimation)来达到这个目的,P_{\theta}(x)表示生成图片的分布,P_{data}(x)表示真实图片的分布。
    P_{data}(x)中sample数据其实就是收集真实的图片。

    我们计算真实图片x^i为生成图片的概率P_{\theta}(x^i),我们的目标是得到让真实图片被认为是生成图片的概率最大的模型\theta^*

    通过极大似然估计找出最好的模型
    • 第2个=,取log不影响argmax

    • 第4个=,m足够大,期望的定义
      不断取真实图像x,计算log P_{\theta}(x)的期望

    • 第5个=,关于X的随机变量log P_{\theta}(X)期望的计算(取x的概率乘上log P_{\theta}(x)做积分)。后一项是真实分布的期望,与\theta无关,不影响argmax,减去它是为了凑KL散度。

      优化目标的推导
      极大似然估计的结果等价于最小化KL散度。所以,优化目标直接设置为极大似然,就相当于让生成数据的分布尽量接近真实数据了。
    • VAE对P_{\theta}(x)的计算
      对于某个图片x_i,它被\theta生成出来的概率是\int_z {P(z) P_{\theta}(x_i|z)}P(z)是容易算的,z可以是从高斯分布sample出来的。但P_{\theta}(x_i|z)若定义为“当且仅当输入z恰好让\theta生成了x则为1,否则为0”,那可能算出来的P_{\theta}(x_i|z)几乎都是0。所以VAE做了一个假设:

    相关文章

      网友评论

          本文标题:Diffusion model原理剖析

          本文链接:https://www.haomeiwen.com/subject/tjjoydtx.html