參考論文:A Survey on Generative Diffusion Model
github:https://github.com/chq1155/A-Survey-on-Generative-Diffusion-Model
一、什么是擴(kuò)散模型
1.1 現(xiàn)有生成模型簡(jiǎn)介
已經(jīng)有大量的方法證明深度生成模型能夠模擬人類的想象思維,生成人類難以分辨真?zhèn)蔚膬?nèi)容,主要方法如下:
1、GAN:用神經(jīng)網(wǎng)絡(luò)訓(xùn)練生成器和判別器
GAN 的主要思想:
- GAN 就是一個(gè)互搏的過(guò)程,要訓(xùn)練兩個(gè)網(wǎng)絡(luò),一個(gè)是生成器,一個(gè)是判別器
- 生成器就是給定一個(gè)隨機(jī)噪聲,生成一些東西,我們希望其能生成一個(gè)比較逼真的圖片,把生成的圖片和真實(shí)的圖片給到判別器,讓判別器來(lái)看哪些是真圖片和假圖片,就是 0/1 的判斷
- 通過(guò)兩個(gè)網(wǎng)絡(luò)互相學(xué)習(xí),互相提高,最后能生成比較真實(shí)的圖片
缺點(diǎn):
- 可解釋性較差:GAN 不是概率模型,是通過(guò)網(wǎng)絡(luò)完成的,是隱式的,所以不知道它到底學(xué)到了什么,不知道其遵循了什么分布
- 訓(xùn)練時(shí)不穩(wěn)定:因?yàn)橐瑫r(shí)訓(xùn)練兩個(gè)網(wǎng)絡(luò),就有需要平衡的問(wèn)題,訓(xùn)練不好的話容易模型坍塌
- 多樣性較差
優(yōu)點(diǎn):
- GAN 的目標(biāo)函數(shù)是用來(lái)以假亂真的,所以保真度和細(xì)節(jié)都非常好
2、AE、DAE、VAE、VQVAE:
Auto-Encoder (AE):給定輸入 x,經(jīng)過(guò)編碼器 encoder 就能得到特征,特征維度會(huì)變小,然后在使用解碼器,得到一個(gè)圖像,訓(xùn)練的目標(biāo)函數(shù)是希望解碼器的輸出能盡可能的重建輸入,也正是因?yàn)槭亲约褐亟ㄗ约?,所以是自編碼器
Denoising Auto-Encoder (AE):先對(duì)原圖輸入進(jìn)行擾亂,后續(xù)過(guò)程和 AE 一樣,依然希望輸入能夠重建原始的未經(jīng)過(guò)擾亂的輸入,這個(gè)擾動(dòng)很有用,會(huì)讓訓(xùn)練出來(lái)的模型非常穩(wěn)健,不容易過(guò)擬合。圖片數(shù)據(jù)本來(lái)就是冗余的,所以添加一些擾動(dòng)后,模型仍然能夠?qū)W習(xí)到很好的特征。
AE 和 DAE 或者 MAE 其實(shí)都是為了學(xué)習(xí)中間那個(gè) bottleneck 特征 z,學(xué)習(xí)好了后用于分類、檢測(cè)等任務(wù),并不是做生成的,其原因在于這里的 z 是專門(mén)用來(lái)重建的特征,并不是隨機(jī)噪聲,并不能用于采樣來(lái)生成圖像
所以就有了 VAE,也就是變分自編碼器,VAE 和 AE 是很不同的,雖然結(jié)構(gòu)看起來(lái)很像,但很重要的區(qū)別是,中間不再是學(xué)習(xí)一個(gè) bottleneck 的特征,而是學(xué)習(xí)了一個(gè)分布,假設(shè)分布是高斯分布,可以用均值和方差來(lái)描述,就是從 encoder 得到特征后,加一些 FC 層,來(lái)預(yù)測(cè)均值和方差,得到后用公式采樣一個(gè) z 出來(lái),VAE 就可以用來(lái)做生成了,因?yàn)樵谟?xùn)練好后,可以扔掉 encoder,這里的 z 就是能隨機(jī)抽樣出的樣本,然后就能生成圖片了
VAE 這里生成的是一個(gè)分布,從貝葉斯角度來(lái)看,前面的過(guò)程是一個(gè)后驗(yàn)概率 p(z|x),就是給定 x 得到 z 的過(guò)程,學(xué)到的 z 就是一個(gè)先驗(yàn)分布,后面的過(guò)程是一個(gè)先驗(yàn)概率 p(x|z),就是給定 z 預(yù)測(cè) x 的過(guò)程,其實(shí)就是最大似然,這里做的就是 maximize likelihood。
VAE 因?yàn)槭菍W(xué)習(xí)的概率分布,是從分布中抽樣的,生成的圖片的多樣性比 GAN 好的多,后面還有一些 VQVAE 和 DALLE 1 都是在 VAE 的基礎(chǔ)上做的。
VAE 其實(shí)結(jié)構(gòu)和擴(kuò)散模型很像,且有較好的理論可解釋性,但 Encoder 使用很大的步長(zhǎng)來(lái)學(xué)習(xí)數(shù)據(jù)分布并進(jìn)行加噪,Decoder 也使用很大的步長(zhǎng)來(lái)去噪,導(dǎo)致學(xué)習(xí)的不夠細(xì)致,很粗糙。
3、Diffusion model
前向擴(kuò)散:在輸入 x0 上逐步加噪聲,一共加 T 次,最終變成一個(gè)真正的噪聲,各向同性正態(tài)分布
逆向去噪:從最終的 xT 逐步恢復(fù)原圖的過(guò)程,使用的是共享參數(shù)的 U-Net 結(jié)構(gòu)
擴(kuò)散模型發(fā)展歷程:
DDPM → improved DDPM → Diffusion beats GAN → GLIDE → DALLE2 → Imagen
1.2 擴(kuò)散模型的理論來(lái)源
我們主要介紹擴(kuò)散模型,擴(kuò)散模型背后的直覺(jué)來(lái)源于物理學(xué):
- 在物理學(xué)中,氣體分子從高濃度區(qū)域擴(kuò)散到低濃度區(qū)域
- 這與由于噪聲的干擾而導(dǎo)致的信息丟失是相似的
- 通過(guò)引入噪聲,然后嘗試去噪來(lái)生成圖像,模型每次在給定一些噪聲輸入的情況下學(xué)習(xí)生成新圖像。
1.3 擴(kuò)散模型的使用場(chǎng)景
擴(kuò)散模型可以用到哪些任務(wù)上:
- 計(jì)算機(jī)視覺(jué)
- 語(yǔ)言模型
- 聲音模型
- AI for science
擴(kuò)散模型的應(yīng)用場(chǎng)景:
- 圖文生成
- 視頻生成
- 分子結(jié)構(gòu)生成
- AI 繪畫(huà)
- AI 制藥
- …
1.4 擴(kuò)散模型的基本結(jié)構(gòu)
擴(kuò)散模型的工作原理:
- 學(xué)習(xí)由于噪聲引起的信息衰減,然后使用學(xué)習(xí)到的模式來(lái)生成圖像
擴(kuò)散模型的結(jié)構(gòu):
- 擴(kuò)散模型定義了一個(gè)擴(kuò)散步驟的馬爾可夫鏈,慢慢地向數(shù)據(jù)中添加隨機(jī)噪聲,也就是熵增的過(guò)程,然后學(xué)習(xí)逆向擴(kuò)散過(guò)程,從噪聲中構(gòu)建所需的數(shù)據(jù)樣本
- 前向擴(kuò)散過(guò)程 q q q:為輸入圖像 x 0 x_0 x0? 引入一系列的隨機(jī)噪聲,也就是對(duì)樣本點(diǎn)分 T 步添加高斯噪聲,隨著噪聲的引入, x 0 x_0 x0? 最終會(huì)失去區(qū)分特性
- 逆向恢復(fù)過(guò)程 p p p:從高斯先驗(yàn)出發(fā),從有大量隨機(jī)噪聲的圖中學(xué)習(xí)恢復(fù)原圖
擴(kuò)散模型相比 GAN 或 VAE 的缺點(diǎn):
- 速度慢:擴(kuò)散模型是基于馬爾科夫過(guò)程來(lái)實(shí)現(xiàn)的,在訓(xùn)練和推理的時(shí)候都需要很多步驟
1.5 馬爾可夫過(guò)程
馬爾可夫模型有兩個(gè)假設(shè):
- 系統(tǒng)在 t t t 時(shí)刻的狀態(tài)只與 t ? 1 t-1 t?1 時(shí)刻的狀態(tài)有關(guān),也稱無(wú)后效性
- 狀態(tài)轉(zhuǎn)移概率與時(shí)間 t t t 無(wú)關(guān),只與前驅(qū)和后繼的狀態(tài)有關(guān),也稱齊次性或時(shí)齊性
1、無(wú)后效性
具有馬爾科夫性質(zhì)的狀態(tài)滿足下面公式:
P ( S t + 1 ∣ S t ) = P ( S t + 1 ∣ S 1 , . . . , S t ) P(S_{t+1}|S_t)=P(S_{t+1}|S_1,...,S_t) P(St+1?∣St?)=P(St+1?∣S1?,...,St?)
上述公式的意義:
- 給定當(dāng)前狀態(tài) S t S_t St?,將來(lái)的狀態(tài) S t + 1 S_{t+1} St+1? 和 t t t 時(shí)刻之前的狀態(tài) { S 1 , . . . , S t ? 1 } \{S_1, ..., S_{t-1} \} {S1?,...,St?1?} 已經(jīng)沒(méi)有關(guān)系,只和當(dāng)前的狀態(tài) S t S_t St? 有關(guān)系。
- 當(dāng)前的狀態(tài) S t S_t St? 中已經(jīng)包括了歷史的相關(guān)信息,所以之前的狀態(tài)可以忽略
2、齊次性
對(duì)狀態(tài)
s
s
s 和后繼狀態(tài)
s
′
s'
s′,狀態(tài)轉(zhuǎn)移概率定義為:
P
s
s
′
=
P
[
S
t
+
1
=
s
′
∣
S
t
=
s
]
P_{ss'}=P[S_{t+1}=s'|S_t=s]
Pss′?=P[St+1?=s′∣St?=s]
狀態(tài)轉(zhuǎn)移矩陣 P 定義了從 s s s 轉(zhuǎn)移到后繼狀態(tài) s ′ s' s′ 的概率:
其中的每行和為1:
-
比如擲骰子游戲,當(dāng)前的點(diǎn)數(shù)為1
-
再一次擲骰子得到的點(diǎn)數(shù)的概率,即使我們不知道下一個(gè)具體點(diǎn)數(shù)的概率,但是我們知道下一個(gè)點(diǎn)數(shù)是1,2,3,4,5,6中的某一點(diǎn),那么就會(huì)有:
馬爾可夫過(guò)程:
馬爾科夫過(guò)程一個(gè)無(wú)記憶的隨機(jī)過(guò)程,是一些具有馬爾科夫性質(zhì)的隨機(jī)狀態(tài)序列構(gòu)成,可以用一個(gè)元組 <S,P> 表示:
- S 是有限數(shù)量的狀態(tài)集合
- P 是狀態(tài)轉(zhuǎn)移概率矩陣, P s s ′ = P [ S t + 1 = s ′ ∣ S t = s ] P_{ss'}=P[S_{t+1}=s'|S_t=s] Pss′?=P[St+1?=s′∣St?=s]
二、擴(kuò)散模型相關(guān)定義
2.1 符號(hào)和定義
1、State:狀態(tài)
State 是能夠描述整個(gè)擴(kuò)散模型過(guò)程的一系列數(shù)據(jù):
- 初始狀態(tài):starting state x 0 x_0 x0?
- prior state:離散時(shí)為 x T x_T xT?,連續(xù)時(shí)為 x 1 x_1 x1?
- 中間狀態(tài):intermediate state x t x_t xt?
2、Process 和 Transition Kernel
- Forward/Diffusion 過(guò)程 F F F:將初始狀態(tài)轉(zhuǎn)換到有噪聲的狀態(tài)
- Reverse/Denoised 過(guò)程 R R R:和前向過(guò)程方向相反,從有噪聲的圖像中逐步復(fù)原原圖的過(guò)程
- Transition Kernel:在上面的兩個(gè)過(guò)程中,每?jī)蓚€(gè) state 的變換都是通過(guò) transition kernel 來(lái)實(shí)現(xiàn)的,
前向和逆向的過(guò)程如下所示:
對(duì)于非離散情況,任何時(shí)間 0 < = t < s < 1 0<=t<s<1 0<=t<s<1 的前向過(guò)程如下:
- F t F_t Ft? 和 R t R_t Rt? 分別是 t t t 時(shí)刻從狀態(tài) x t ? 1 x_{t-1} xt?1? 轉(zhuǎn)換成狀態(tài) x t x_t xt? 的前向 transition kernel 和逆向 transition kernel
- σ t \sigma_t σt? 是噪聲尺度
- 最常用的 transition kernel 是 Markov kernel,因?yàn)槠渚哂休^好的任意性和可控性
3、Pipeline:
假設(shè)定義 sampled data 為 x ~ 0 \widetilde{x}_0 x 0?,則整個(gè)過(guò)程可以描述如下:
4、離散和連續(xù)過(guò)程
與離散過(guò)程相比,連續(xù)過(guò)程能夠從任何時(shí)間狀態(tài)中提取任何信息
如果擾動(dòng)核的變化足夠小,則連續(xù)過(guò)程有更好的理論支撐
5、訓(xùn)練目標(biāo)
擴(kuò)散模型是生成模型的一個(gè)子類,和 VAE 的目標(biāo)函數(shù)類似,目標(biāo)是讓初始分布 x 0 x_0 x0? 和采樣分布 x ~ 0 \widetilde{x}_0 x 0? 盡可能的接近。
通過(guò)最大化如下 log-likelihood 公式來(lái)實(shí)現(xiàn),其中 σ ~ \widetilde{\sigma} σ 在前向和逆向過(guò)程中是不同的:
2.2 問(wèn)題規(guī)范化
1、Denoised Diffusion Probabilistic Model(DDPM):去噪擴(kuò)散概率模型
NIPS 2021 的論文 ‘Denoising diffusion probabilistic models’ 中對(duì)擴(kuò)散概率模型進(jìn)行了改進(jìn),提出了 DDPM:
- 使用固定的方差回歸均值
- 用和噪聲表示,通過(guò)均值預(yù)測(cè)網(wǎng)絡(luò)重參數(shù)化,將關(guān)于均值的差改寫(xiě)為噪聲預(yù)測(cè)網(wǎng)絡(luò)與噪聲的差,將目標(biāo)函數(shù)改寫(xiě)為噪聲預(yù)測(cè)的方式
- 對(duì)高斯噪聲進(jìn)行回歸預(yù)測(cè)
- 對(duì)擴(kuò)散模型的架構(gòu)也進(jìn)行了相應(yīng)的改進(jìn),使用 U-Net 形式的架構(gòu),引入了跳躍連接,更適合于像素級(jí)別的預(yù)測(cè)任務(wù)
DDPM Forward Process:
-
DDPM 使用一系列的噪聲系數(shù) β 1 \beta_1 β1?、 β 2 \beta_2 β2? … β T \beta_T βT? 作為不同時(shí)刻的 Markov trasition kernel。
-
一般都使用常數(shù)、線性規(guī)則、cosine 規(guī)則 來(lái)選擇噪聲系數(shù),而且 [68] 中也證明了不同的噪聲系數(shù)在實(shí)驗(yàn)中也沒(méi)有明顯的影響
-
DDPM 的前向過(guò)程定義如下:
-
根據(jù)從 x 0 x_0 x0? 到 x T x_T xT? 的擴(kuò)散步驟, Forward Diffusion Process 如下:
DDPM Reverse Process:
-
逆向過(guò)程使用可學(xué)習(xí)的 Gaussian trasition 參數(shù) θ \theta θ 來(lái)定義如下:
-
逐步從 x T x_T xT? 復(fù)原到 x 0 x_0 x0? 的過(guò)程如下,假設(shè)過(guò)程為 p ( x T ) = N ( x T ; ? 0 , I ) p(x_T) = N(x_T;\ 0, I) p(xT?)=N(xT?;?0,I):
-
所以, p θ ( x 0 ) = ∫ p θ ( x 0 : T ) d x 1 : T p_{\theta}(x_0)=\int p_{\theta}(x_{0:T})dx_{1:T} pθ?(x0?)=∫pθ?(x0:T?)dx1:T? 的分布就是 x ~ 0 \widetilde{x}_0 x 0? 的分布
Diffusion Training Objective:為了最小化 negative log-likelihood (NLL),則最小化問(wèn)題轉(zhuǎn)換為:
- L T L_T LT?:prior loss
- L 0 L_0 L0?:reconstruction loss
- L 1 : T ? 1 L_{1:T-1} L1:T?1?:consistent loss
下圖是 PPDM 的 pipeline:
2、Score Matching Formulation
score matching 模型是為了解決原始數(shù)據(jù)分布的估計(jì)問(wèn)題,通過(guò)近似數(shù)據(jù)的梯度 ? x l o g p ( x ) \nabla_xlogp(x) ?x?logp(x) 來(lái)實(shí)現(xiàn),這也稱為 score。
兩個(gè)相鄰狀態(tài)的 transition kernel 為:
Score matching 過(guò)程:
score matching 的核心是訓(xùn)練一個(gè)得分估計(jì)網(wǎng)絡(luò)
s
θ
(
x
,
σ
)
s_{\theta}(x, \sigma)
sθ?(x,σ) 來(lái)預(yù)測(cè)得分。
DSM:
三、可以提升的點(diǎn)
盡管擴(kuò)散模型目前取得了很好的生成效果,到其逐步去噪的過(guò)程涉及非常多的迭代步驟,故此擴(kuò)散模型的加速是很重要的研究課題。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-495959.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-495959.html
到了這里,關(guān)于【AIGC】2、擴(kuò)散模型 | 到底什么是擴(kuò)散模型?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!