[基礎] DDPM原理

fariver發表於2024-03-11

名稱

DDPM: Denoising Diffusion Probabilistic Models

TL;DR

這篇文章介紹了一種名為去噪擴散機率模型(Denoising Diffusion Probabilistic Models, DDPM)的新型生成模型。DDPM透過模擬一個逐步新增噪聲的過程,然後訓練一個逆向過程來從噪聲中恢復出清晰的影像。這種方法在影像合成方面取得了高質量的結果,特別是在CIFAR-10和LSUN資料集上,其生成的影像在Inception分數和FID分數上達到了最先進的水平。

Method

直觀理解

訓練過程(Forward Process):將原始影像X0不斷疊加噪聲經過T步變成高斯噪聲影像XT,而中間每一步產生的噪聲都可以作為GT來訓練一個生成噪聲的模型。
推理過程(Reverse Process):以高斯噪聲影像XT作為初值,每一步使用訓好的模型生成噪聲e,並在噪聲影像上去噪,經過T步左右生成清晰影像。

訓練過程

按照上面理解,訓練過程第t步預測會將已經加過t-1次噪聲的影像Xt-1,再疊加第t步產生的噪聲e,得到Xt,監督噪聲生成模型預測e。但實際Xt-1本身可以按照該遞推公式展開。最終,利用多個正態分佈線性疊加為一個新的正態分佈,極大簡化了模型訓練的可實操性。

所以,訓練過程:輸入原圖X0、取樣出的步數t、以及標準正態分佈噪聲a。模型輸出正態分析噪聲b。Loss約束模型預測噪聲b與標準正態分佈a儘可能接近。

Q: 為什麼訓練過程噪聲模型輸入噪聲e,而Loss中的預測target也是e? 他們是同一次取樣嗎?

推理過程

原文中的虛擬碼

Q:為什麼t~1過程去噪之後還要再加高期噪聲z呢?
A:
a) 類似於VAE,去噪模型預測僅是當前這一步噪聲的Mean,而要增加多樣性還需要加上variance。
b) 訓練過程的噪聲輸入本身在每一步都加入了隨機性,但推理過程的每一步如果不加上噪聲隨機性,就會導致推理與訓練過程行為不一致。

總結與發散思考

與VAE中latent space上的高斯噪聲建模原理基本一致,只不過將該過程利用馬爾可夫鏈分散成為多步。
從AR(AutoRegressive)角度來看,像是利用一個Decoder模型,按照設定的scheduler將影像內容逐漸填充。

基礎

KL散度 FromChatGPT(提示詞:KL散度為什麼是非對稱的?為什麼不滿足交換律?從幾何角度考慮如果是兩個分佈的差異程度的話,那A與B的差異不應該和B與A的差異是相同的嗎?) KL散度(Kullback-Leibler divergence)是一種用於度量兩個機率分佈之間差異的指標。它的非對稱性和不滿足交換律是由其定義方式所決定的。

KL散度的定義如下:

KL(P || Q) = Σ P(x) * log(P(x) / Q(x))

其中,P和Q是兩個機率分佈,x是樣本空間中的元素。

從幾何角度來看,KL散度可以被理解為衡量從Q到P的資訊損失或資訊增益。它並不是一個度量兩個分佈之間的距離,而是一個度量它們之間的差異或分歧程度的指標。

為什麼KL散度是非對稱的呢?這是因為KL散度中包含了求和符號,每個元素的貢獻是由P(x) * log(P(x) / Q(x))確定的。由於log函式中的除法是非對稱的,即log(a/b)不等於log(b/a),因此KL散度也是非對稱的。

換句話說,KL(P || Q)不等於KL(Q || P)。

另外,KL散度也不滿足交換律。也就是說,KL(P || Q)不等於KL(Q || P)。

從幾何角度考慮,KL散度衡量的是從Q到P的資訊損失或資訊增益。這種資訊損失或增益是與兩個分佈的相對位置和形狀有關的。因此,A與B的差異和B與A的差異並不一定相同,因為它們可能具有不同的相對位置和形狀。KL散度度量的是兩個分佈之間的差異,而不是它們之間的對稱性或互換性。

馬爾可夫鏈 FromChatGPT(提示詞:什麼是馬爾可夫鏈?與Denoising Diffusion Probabilistic Models與什麼關係?) 馬爾可夫鏈是一種數學模型,用於描述具有“無記憶性”特點的隨機過程。在這種過程中,系統的下一個狀態只依賴於當前狀態,而與之前的歷史狀態無關。馬爾可夫鏈的核心概念包括狀態空間、轉移機率矩陣和平穩分佈。狀態空間是所有可能狀態的集合,轉移機率矩陣描述了從一個狀態轉移到另一個狀態的機率,而平穩分佈是系統長期執行後達到的穩定狀態的機率分佈。

馬爾可夫鏈可以是離散時間的(如隨機遊走)或連續時間的(如泊松過程)。它們在許多領域都有應用,包括物理學、工程學、經濟學、金融學、生物學和電腦科學等。

Denoising Diffusion Probabilistic Models(去噪擴散機率模型,簡稱DDPM)是一種生成模型,它基於擴散過程來模擬資料的生成。在DDPM中,資料的生成過程被視為一個逐步新增噪聲的過程,這個過程可以用馬爾可夫鏈來描述。具體來說,DDPM透過定義一個逆向的馬爾可夫鏈來學習如何從噪聲中恢復出清晰的資料樣本。這個過程包括兩個階段:

  1. 正向擴散過程:在這個階段,資料逐漸被噪聲“汙染”,直到達到一個完全隨機的狀態。這個過程可以看作是一個馬爾可夫鏈,其中每一步都新增一些噪聲,直到資料完全失真。

  2. 逆向生成過程:在這個階段,模型學習如何從噪聲狀態逐步恢復出原始資料。這個過程是正向擴散過程的逆過程,也是一個馬爾可夫鏈,但每一步都是去噪操作,目的是逆轉噪聲的影響,最終恢復出清晰的資料樣本。

DDPM與馬爾可夫鏈的關係在於,DDPM的逆向生成過程可以被視為一個馬爾可夫鏈,其中每一步都是基於當前狀態和噪聲水平來預測下一個狀態。這種模型在生成高質量影像和其他型別的資料方面顯示出了很好的效能,尤其是在處理高維資料時。透過訓練這個逆向馬爾可夫鏈,DDPM能夠學習如何有效地從噪聲中恢復出有意義的資訊。

參考材料

https://speech.ee.ntu.edu.tw/~hylee/ml/ml2023-course-data/DDPM (v7).pdf
https://spaces.ac.cn/archives/9119

相關文章