Denoising Diffusion GAN:Tackling the Generative Learning Trilemma with Denoising Diffusion GANs
Tackling the Generative Learning Trilemma with Denoising Diffusion GANs
用Diffusion GANs解決生成學習的三難困境
paper:https://arxiv.org/abs/2112.07804
code:https://github.com/NVlabs/denoising-diffusion-gan
Introduction
本文提出了一種結合Diffusion和GAN的生成模型, 在CIFAR-10數據集上能夠比DDPM快2000倍, 同時與傳統的GAN相比, 又可以生成質量相近有具有多樣性的結果. 作者指出DiffusionGAN是第一個可以把Diffusion采樣步驟降低到可以被應用到實際當中的模型.
本文提出了一種比較貼切的說法叫做:生成學習的三元悖論(The Generative Learning Trilemma). 現有的各種各樣的生成模型都需要滿足三個方面的需求:
sampling;
如圖所示, 可以直觀的看出, 現有的四大類的生成模型:
Background
Diffusion模型, 包括DDPM模型, 都包含了前向過程和反向過程. 而且前向過程和反向過程中間數據的分布都被建模為了高斯分布.
前向過程:
反向過程:
那么, Diffusion模型優化的目標本質上是將前向的真實的加噪過程的數據分布(true denoising distribution)與反向過程參數化之后去噪過程的數據分布(parameterized denoising distribution)對齊:
注意到這里的形式與之前在介紹DDPM的筆記里邊的兩種形式都不太一樣, 主要區別在于q的分布的表示形式.
由于 q(xt∣xt?1)=q(xt?1∣xt)q(xt)q(xt?1)\mathrm{q}\left(\mathrm{x}_{\mathrm{t}} \mid \mathrm{x}_{\mathrm{t}-1}\right)=\frac{q\left(x_{t}-1 \mid x_{t}\right) q\left(x_{t}\right)}{q\left(x_{t}-1\right)}q(xt?∣xt?1?)=q(xt??1)q(xt??1∣xt?)q(xt?)? ) , 這兩種形式是等價的, 而相比之下, 本文這種表示形式更能體現Diffusion模型的本質. 也就是反向的去噪過程是在模擬前向過程所對應的真實的去噪過程.
Diffusion模型基于兩個重要的假設:
Denoising Diffusion GANs
3.1 去噪過程的分布
首先來看什么時候真實的去噪過程的分布 q(xt?1∣xt)\mathrm{q}\left(\mathrm{x}_{\mathrm{t}-1} \mid \mathrm{x}_{\mathrm{t}}\right)q(xt?1?∣xt?) 是高斯分布. 根據貝葉斯法則, q(xt?1∣xt)∝q(xt∣xt?1)q(xt?1)q\left(x_{t-1} \mid x_{t}\right) \propto q\left(x_{t} \mid x_{t-1}\right) q\left(x_{t-1}\right)q(xt?1?∣xt?)∝q(xt?∣xt?1?)q(xt?1?)其中前向過程的分布 q(xt∣xt?1)q\left(x_{t} \mid x_{t-1}\right)q(xt?∣xt?1?) 服從高斯分布. 那么可以證明在如下兩種情形下, 真實的去噪過程的分布服從高斯分布的形式:
但是, 當這兩個條件都不滿足的情況下, 會是什么樣呢? 作者指出當兩個條件都不滿足時, 真實的去噪過程的分布會更加復雜和多模態. 并用一維數據的分布舉了個例子:
3.2 Diffusion GANs
為了能在數據的邊緣分布不是高斯分布的情況下, 也能減少采樣的步數, 這種情況下既然真實的去噪過程的分布 q(xt?1∣xt)q(x_{t-1} | x_t)q(xt?1?∣xt?)不再服從高斯分布的形式, 那么將反向過程的分布 pθ(xt?1∣xt)p_{\theta}(x_{t-1} | x_t)pθ?(xt?1?∣xt?) 也不再建模為高斯分布的形式, 而是通過Conditional GAN來使得兩個分布對齊, 而不是顯式地去學習高斯分布的均值和方差. 這也就是本文的基本思路.
相應的, 優化的目標也就變成了:
那么GAN包括兩個部分, 生成器generator G 和判別器 discriminator D . 那么對于生成器就是 xt?1=G(xt,z,t)x_{t-1} = G(x_t, z, t)xt?1?=G(xt?,z,t) 其中引入的噪聲 z 是為了模型的結果能有良好的多樣性.
相應的, GAN的Discriminator也應該與步驟 t 有關, 其輸入除了數據 xtx_txt? 外, 還要包括 t .
但是判別器還需要真實的去噪分布的數據, 這個數據怎么得到? 作者在這里進行了簡單的轉換.
簡單的來表述就是, DDPM為代表的Diffusion模型, 反向過程是在其去噪的分布是高斯分布的前提下,利用 xtx_txt? 來得到 t ? 1 的均值和方差, 再來計算得到 xt?1x_{t-1}xt?1? , 而本文的DiffusionGAN則不再有去噪的分布是高斯分布的假設, 利用 xtx_txt? 直接通過生成器 G(xt,z,t)G(x_t, z, t)G(xt?,z,t) 得到 xt?1x_{t-1}xt?1?
3.3 一些討論
一個自然而然的問題就是, 為什么不用一步的GAN而要這樣用多步的GAN呢? 這樣做相比一步直接得到結果的GAN有什么好處呢? 作者給出了如下解釋(歸結起來就是一句話, 多步的GAN比一步的GAN訓練更穩定, 而且模態覆蓋更充分, 結果多樣性更好.):
逆過程不是Gaussian
當 βt\beta_tβt? 足夠小的時候,逆過程q(xt?1∣xt)q\left(x_{t-1} \mid x_{t}\right)q(xt?1?∣xt?)和已知前向過程和函數形式是一樣的,當逆過程表示為貝葉斯規則q(xt?1∣xt)=q(xt∣xt?1)q(xt?1)q(xt)q\left(x_{t-1} \mid x_{t}\right)=\frac{q\left(x_{t} \mid x_{t-1}\right) q\left(x_{t-1}\right)}{q\left(x_{t}\right)}q(xt?1?∣xt?)=q(xt?)q(xt?∣xt?1?)q(xt?1?)?時q(xt?1)q(xt)≈1\frac{q\left(x_{t-1}\right)}{q\left(x_{t}\right)} \approx 1q(xt?)q(xt?1?)?≈1,因此q(xt∣xt?1)q\left(x_{t} \mid x_{t-1}\right)q(xt?∣xt?1?)支配了表達,由于q(xt∣xt?1)q\left(x_{t} \mid x_{t-1}\right)q(xt?∣xt?1?)是高斯過程,反向也可以被認為是高斯過程。
問題是這個假設只有βt\beta_tβt?在很小的時候成立,擴散模型的創建過程非常緩慢。因為只在βt\beta_tβt?很小的時候才成立,并且必須將T設置得很大才能這樣做。 如果我們增加βt\beta_tβt?并減少T,則反向不再是高斯的,那么KLD就變得難以計算。
(編者注:這個βt\beta_tβt?最小假設在論文https://arxiv.org/abs/2006.11239當中有詳細的討論)
更復雜的逆過程
Eq[DKL(q(xT∣x0)∥p(xT))?LT+∑t>1DKL(q(xt?1∣xt,x0)∥pθ(xt?1∣xt))?Lt?1?log?pθ(x0∣x1)?L0]\mathbb{E}_{q}[\underbrace{D_{\mathrm{KL}}\left(q\left(\mathbf{x}_{T} \mid \mathbf{x}_{0}\right) \| p\left(\mathbf{x}_{T}\right)\right)}_{L_{T}}+\sum_{t>1} \underbrace{D_{\mathrm{KL}}\left(q\left(\mathbf{x}_{t-1} \mid \mathbf{x}_{t}, \mathbf{x}_{0}\right) \| p_{\theta}\left(\mathbf{x}_{t-1} \mid \mathbf{x}_{t}\right)\right)}_{L_{t-1}} \underbrace{-\log p_{\theta}\left(\mathbf{x}_{0} \mid \mathbf{x}_{1}\right)}_{L_{0}}]Eq?[LT?DKL?(q(xT?∣x0?)∥p(xT?))??+∑t>1?Lt?1?DKL?(q(xt?1?∣xt?,x0?)∥pθ?(xt?1?∣xt?))??L0??logpθ?(x0?∣x1?)??]
現有 DDPM 的目標如上所述。 其實單看這個表達式q(xt?1∣xt,x0)q\left(x_{t-1} \mid x_{t}, x_{0}\right)q(xt?1?∣xt?,x0?)無βt\beta_tβt?,因此是無條件高斯的。pθ(xt?1∣xt)p_{\theta}\left(x_{t-1} \mid x_{t}\right)pθ?(xt?1?∣xt?)似乎沒有任何理由使設計更加復雜。 上面的表達式也可以寫成形式:
L=?∑t≥1Eq(xt)[DKL(q(xt?1∣xt)∥pθ(xt?1∣xt))]+C\mathcal{L}=-\sum_{t \geq 1} \mathbb{E}_{q\left(\mathbf{x}_{t}\right)}\left[D_{\mathrm{KL}}\left(q\left(\mathbf{x}_{t-1} \mid \mathbf{x}_{t}\right) \| p_{\theta}\left(\mathbf{x}_{t-1} \mid \mathbf{x}_{t}\right)\right)\right]+CL=?∑t≥1?Eq(xt?)?[DKL?(q(xt?1?∣xt?)∥pθ?(xt?1?∣xt?))]+C
這里q(xt?1∣xt)q\left(x_{t-1} \mid x_{t}\right)q(xt?1?∣xt?)由于難以處理,這種形式并未用于實際學習??粗@個表達式pθ(xt?1∣xt)和q(xt?1∣xt)p_{\theta}\left(x_{t-1} \mid x_{t}\right)和q\left(x_{t-1} \mid x_{t}\right)pθ?(xt?1?∣xt?)和q(xt?1?∣xt?)比較復雜,因此使用這種方式表示:
min?θ∑t≥1Eq(t)[Dadv(q(xt?1∣xt)∥pθ(xt?1∣xt))]\min _{\theta} \sum_{t \geq 1} \mathbb{E}_{q(t)}\left[D_{\mathrm{adv}}\left(q\left(\mathbf{x}_{t-1} \mid \mathbf{x}_{t}\right) \| p_{\theta}\left(\mathbf{x}_{t-1} \mid \mathbf{x}_{t}\right)\right)\right]minθ?∑t≥1?Eq(t)?[Dadv?(q(xt?1?∣xt?)∥pθ?(xt?1?∣xt?))]
方程 L=?∑t≥1Eq(xt)[DKL(q(xt?1∣xt)∥pθ(xt?1∣xt))]+C\mathcal{L}=-\sum_{t \geq 1} \mathbb{E}_{q\left(\mathbf{x}_{t}\right)}\left[D_{\mathrm{KL}}\left(q\left(\mathbf{x}_{t-1} \mid \mathbf{x}_{t}\right) \| p_{\theta}\left(\mathbf{x}_{t-1} \mid \mathbf{x}_{t}\right)\right)\right]+CL=?∑t≥1?Eq(xt?)?[DKL?(q(xt?1?∣xt?)∥pθ?(xt?1?∣xt?))]+C 當中由于 KLD是比較棘手的,因此必須使用不同的散度。 由于GAN可以理解為散度最小化,所以如上用DadvD_{adv}Dadv?代替KLD,DadvD_{adv}Dadv?可以是JSD、Wasserstein距離等,具體取決于損失函數。而判別器的損失如下:
min??∑t≥1Eq(xt)[Eq(xt?1∣xt)[?log?(D?(xt?1,xt,t)]+Epθ(xt?1∣xt)[?log?(1?D?(xt?1,xt,t))]]\min _{\phi} \sum_{t \geq 1} \mathbb{E}_{q\left(\mathbf{x}_{t}\right)}\left[\mathbb{E}_{q\left(\mathbf{x}_{t-1} \mid \mathbf{x}_{t}\right)}\left[-\log \left(D_{\phi}\left(\mathbf{x}_{t-1}, \mathbf{x}_{t}, t\right)\right]+\mathbb{E}_{p_{\theta}\left(\mathbf{x}_{t-1} \mid \mathbf{x}_{t}\right)}\left[-\log \left(1-D_{\phi}\left(\mathbf{x}_{t-1}, \mathbf{x}_{t}, t\right)\right)\right]\right]\right.min??∑t≥1?Eq(xt?)?[Eq(xt?1?∣xt?)?[?log(D??(xt?1?,xt?,t)]+Epθ?(xt?1?∣xt?)?[?log(1?D??(xt?1?,xt?,t))]]
然而q(xt?1∣xt)q\left(x_{t-1} \mid x_{t}\right)q(xt?1?∣xt?)棘手的問題仍然存在,因此無法計算第一個期望,因此解決如下:
Eq(xt)q(xt?1∣xt)[?log?(D?(xt?1,xt,t))]=Eq(x0)q(xt?1∣x0)q(xt∣xt?1)[?log?(D?(xt?1,xt,t))]\mathbb{E}_{q\left(\mathbf{x}_{t}\right) q\left(\mathbf{x}_{t-1} \mid \mathbf{x}_{t}\right)}\left[-\log \left(D_{\phi}\left(\mathbf{x}_{t-1}, \mathbf{x}_{t}, t\right)\right)\right]=\mathbb{E}_{q\left(\mathbf{x}_{0}\right) q\left(\mathbf{x}_{t-1} \mid \mathbf{x}_{0}\right) q\left(\mathbf{x}_{t} \mid \mathbf{x}_{t-1}\right)}\left[-\log \left(D_{\phi}\left(\mathbf{x}_{t-1}, \mathbf{x}_{t}, t\right)\right)\right]Eq(xt?)q(xt?1?∣xt?)?[?log(D??(xt?1?,xt?,t))]=Eq(x0?)q(xt?1?∣x0?)q(xt?∣xt?1?)?[?log(D??(xt?1?,xt?,t))]
q(x0)q(xt?1∣x0)q(xt∣xt?1)=q(x0,xt?1,xt)q\left(x_{0}\right) q\left(x_{t-1} \mid x_{0}\right) q\left(x_{t} \mid x_{t-1}\right)=q\left(x_{0}, x_{t-1}, x_{t}\right)q(x0?)q(xt?1?∣x0?)q(xt?∣xt?1?)=q(x0?,xt?1?,xt?),和Eq(xt?1,xt)[?log(D?(xt?1,xt,t))]=Eq(x0,xt?1,xt)[?log(D?(xt?1,xt,t))]E_{q(x_{t-1},x_t)}[-log(D_\phi(x_{t-1},x_t,t))]=E_{q(x_0,x_{t-1},x_t)}[-log(D_\phi(x_{t-1},x_t,t))]Eq(xt?1?,xt?)?[?log(D??(xt?1?,xt?,t))]=Eq(x0?,xt?1?,xt?)?[?log(D??(xt?1?,xt?,t))]共同和使用。
參數化pθp_\thetapθ?
逆過程可以預測的是x0x_0x0?、μ~t\tilde\mu_tμ~?t?或者?\epsilon?。與之前預測?\epsilon?的模型不同,生成器預測x0x_0x0?,因為
對所有時間步均等地預測x0x_0x0?取決于t,這是因為它比預測μ~t\tilde\mu_tμ~?t?直接。
它在實驗上顯示出更好的性能。
μ~t(xt,x0):=αˉt?1βt1?αˉtx0+αt(1?αˉt?1)1?αˉtxtand?β~t:=1?αˉt?11?αˉtβt\tilde{\boldsymbol{\mu}}_{t}\left(\mathbf{x}_{t}, \mathbf{x}_{0}\right):=\frac{\sqrt{\bar{\alpha}_{t-1}} \beta_{t}}{1-\bar{\alpha}_{t}} \mathbf{x}_{0}+\frac{\sqrt{\alpha_{t}}\left(1-\bar{\alpha}_{t-1}\right)}{1-\bar{\alpha}_{t}} \mathbf{x}_{t} \quad \text { and } \quad \tilde{\beta}_{t}:=\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_{t}} \beta_{t}μ~?t?(xt?,x0?):=1?αˉt?αˉt?1??βt??x0?+1?αˉt?αt??(1?αˉt?1?)?xt??and?β~?t?:=1?αˉt?1?αˉt?1??βt?
預測x0′x'_0x0′?后,xt?1′x'_{t-1}xt?1′?是從q(xt?1∣xt,x0′)q(x_{t-1}|x_t,x'_0)q(xt?1?∣xt?,x0′?)中采樣得到的,均值和標準與上面相同。 用獲得的(xt′,xt?1′)(x'_t,x'_{t-1})(xt′?,xt?1′?)對構造一個假樣本。 真實樣本是(xt,xt?1)(x_t, x_{t-1})(xt?,xt?1?),判別器學會區分兩者。 其實這樣看,q(xt?1∣xt,x0′)q(x_{t-1}|x_t,x'_0)q(xt?1?∣xt?,x0′?)也是高斯的,所以不知道為什么逆過程的分布更復雜,看起來和以前一樣。
在這里通過將潛在變量 z添加到預測x0′x'_0x0′?的生成器中來與現有的 DDPM 有所不同,例如x0′=G(xt,t,z)x'_0=G(x_t,t,z)x0′?=G(xt?,t,z)。
pθ(xt?1∣xt):=∫pθ(x0∣xt)q(xt?1∣xt,x0)dx0=∫p(z)q(xt?1∣xt,x0=Gθ(xt,z,t))dzp_{\theta}\left(\mathbf{x}_{t-1} \mid \mathbf{x}_{t}\right):=\int p_{\theta}\left(\mathbf{x}_{0} \mid \mathbf{x}_{t}\right) q\left(\mathbf{x}_{t-1} \mid \mathbf{x}_{t}, \mathbf{x}_{0}\right) d \mathbf{x}_{0}=\int p(\mathbf{z}) q\left(\mathbf{x}_{t-1} \mid \mathbf{x}_{t}, \mathbf{x}_{0}=G_{\theta}\left(\mathbf{x}_{t}, \mathbf{z}, t\right)\right) d \mathbf{z}pθ?(xt?1?∣xt?):=∫pθ?(x0?∣xt?)q(xt?1?∣xt?,x0?)dx0?=∫p(z)q(xt?1?∣xt?,x0?=Gθ?(xt?,z,t))dz
以前,由于pθ(x0∣xtp_\theta(x_0|x_tpθ?(x0?∣xt?)是一個 δ\deltaδ 函數,所以逆過程pθ(xt?1∣xt)p_\theta(x_{t-1}|x_t)pθ?(xt?1?∣xt?)是高斯函數,而在本工作中,pθ(x0∣xt)=∫G(xt,t,z)p(z)dzp_{\theta}\left(x_{0} \mid x_{t}\right)=\int G\left(x_{t}, t, z\right) p(z) d zpθ?(x0?∣xt?)=∫G(xt?,t,z)p(z)dz變成了連續高斯混合。
結論
起初,我認為 FID 比擴散模型差,它是一個比 GAN 慢的模棱兩可的模型,但這似乎是提高擴散模型的采樣速度和我認為還有很大的發展空間。 在這些研究中,這篇論文似乎是最杰出的。 然而,有點奇怪的是,該實驗僅在 cifar-10 和 LSUN 上進行,而不是在 imageNet 上進行,聲稱比 GAN 具有更好的模式覆蓋率作為優勢。
知乎:https://blog.csdn.net/D_Trump/article/details/125533291
總結
以上是生活随笔為你收集整理的Denoising Diffusion GAN:Tackling the Generative Learning Trilemma with Denoising Diffusion GANs的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java输出矩形、三角形、圆形面积和周长
- 下一篇: Eureka自我保护机制原理及作用ena