Diffusion model原理剖析

論文: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做了一個假設:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容