天天看點

從大一統視角了解擴散模型(Diffusion Models)

©作者 | 中森

研究方向 | 自然語言處理 https://zhuanlan.zhihu.com/p/558937247

資料來源

這篇文章是近期筆者閱讀擴散模型的一些技術部落格和概覽的一篇梳理,主要參考的内容來自 Calvin Luo 的論文,針對的對象主要是對擴散模型已經有一些基礎了解的讀者。

Calvin Luo 的這篇論文為了解擴散模型提供了一個統一的視角,尤其是其中的數理公式推導非常詳盡,本文将試圖盡量簡要地概括一遍大一統視角下的擴散模型的推導過程。在結尾處,筆者附上了一些推導過程中的強假設的思考和疑惑,并簡要讨論了下擴散模型應用在自然語言處理時的一些思考。

本篇閱讀筆記一共參考了以下技術部落格。其中如果不了解擴散模型的讀者可以考慮先閱讀 lilian-weng 的科普部落格。Calvin-Luo 的這篇介紹性論文在書寫的時候經過了包括 Jonathan Ho(DDPM 作者), Song Yang 博士和一系列相關擴散模型論文的發表者的稽核,非常值得一讀。

1. What are Diffusion Models? by Lilian Weng:

​​https://lilianweng.github.io/posts/2021-07-11-diffusion-models/​​

2. Generative Modeling by Estimating Gradients of the Data Distribution by Song Yang:

​​https://yang-song.net/blog/2021/score/​​

3. Understanding Diffusion Models: A Unified Perspective by Calvin Luo:

​​https://arxiv.org/abs/2208.11970​​

生成模型希望可以生成符合真實分布(或給定資料集)的資料。我們常見的幾種生成模型有 GANs,Flow-based Models,VAEs,Energy-Based Models 以及我們今天希望讨論的擴散模型 Diffusion Models。其中擴散模型和變分自編碼器  VAEs,和基于能量的模型 EBMs 有一些聯系和差別,筆者會在接下來的章節闡述。

從大一統視角了解擴散模型(Diffusion Models)

▲ 常見的幾種生成模型

從大一統視角了解擴散模型(Diffusion Models)

ELBO & VAE

在介紹擴散模型前,我們先來回顧一下變分自編碼器 VAE。我們知道 VAE 最大的特點是引入了一個潛在向量的分布來輔助模組化真實的資料分布。

那麼為什麼我們要引入潛在向量?有兩個直覺的原因,一個是直接模組化高維表征十分困難,常常需要引入很強的先驗假設并且有次元詛咒的問題存在。另外一個是直接學習低維的潛在向量,一方面起到了次元壓縮的作用,一方面也希望能夠在低維空間上探索具有語義化的結構資訊(例如圖像領域裡的 GAN 往往可以通過操控具體的某個次元影響輸出圖像的某個具體特征)。

引入了潛在向量後,我們可以将我們的目标分布的對數似然 logP(x),也稱為“證據evidence”寫成下列形式:

從大一統視角了解擴散模型(Diffusion Models)

▲ ELBO的推理過程

其中,我們重點關注式 15。等式的左邊是生成模型想要接近的真實資料分布(evidence),等式右邊由兩項組成,其中第二項的 KL 散度因為恒大于零,是以不等式恒成立。如果在等式右邊減去該 KL 散度,則我們得到了真實資料分布的下界,即證據下界 ELBO。對 ELBO 進行進一步的展開,我們就可以得到 VAE 的優化目标。

從大一統視角了解擴散模型(Diffusion Models)

▲ ELBO等式的展開

對該證據下界的變形的形式,我們可以直覺地這麼了解:證據下界等價于這麼一個過程,我們用編碼器将輸入 x 編碼為一個後驗的潛在向量分布 q(z|x)。我們希望這個向量分布盡可能地和真實的潛在向量分布 p(z) 相似,是以用 KL 散度限制,這也可以避免學習到的後驗分布 q(z|x) 坍塌成一個狄拉克 delta 函數(式 19 的右側)。而得到的潛在向量我們用一個解碼器重構出原資料,對應的是式 19 的左邊 P(x|z)。

VAE 為什麼叫變分自編碼器。變分的部分來自于尋找最優的潛在向量分布 q(z|x) 的這個過程。自編碼器的部分是上面提到的對輸入資料的編碼,再解碼為原資料的行為。

那麼提煉一下為什麼 VAE 可以比較好地貼合原資料的分布?因為根據上述的公式推導我們發現:原資料分布的對數似然(稱為證據 evidence)可以寫成證據下界加上我們希望近似的後驗潛在向量分布和真實的潛在向量分布間的 KL 散度(即式 15)。如果把該式寫為 A=B+C 的形式。

因為 evidence(即 A)是個常數(與我們要學習的參數無關),是以最大化 B,也就是我們的證據下界,等價于最小化 C,也即是我們希望拟合的分布和真實分布間的差别。而因為證據下界,我們可以重新寫成式 19 那樣一個自編碼器的形式,我們也就得到了自編碼器的訓練目标。優化該目标,等價于近似真實資料分布,也等價于用變分手法來優化後驗潛在向量分布 q(z|x) 的過程。

但 VAE 自身依然有很多問題。一個最明顯的就是我們如何標明後驗分布 。絕大多數的 VAE 實作裡,這個後驗分布被標明為了一個多元高斯分布。但這個選擇更多的是為了計算和優化的友善而選擇。這樣的簡單形式極大地限制了模型逼近真實後驗分布的能力。VAE 的原作者 kingma 曾經有篇非常經典的工作就是通過引入 normalization flow [1] 在改進後驗分布的表達能力。而擴散模型同樣可以看做是對後驗分布 的改進。

從大一統視角了解擴散模型(Diffusion Models)

Hierarchical VAE

下圖展示了一個變分自編碼器裡,潛在向量和輸入間的閉環關系。即從輸入中提取低維的潛在向量後,我們可以通過這個潛在向量重構出輸入。

從大一統視角了解擴散模型(Diffusion Models)

▲ VAE裡潛在向量與輸入的關系

很明顯,我們認為這個低維的潛在向量裡一定是高效地編碼了原資料分布的一些重要特性,才使得我們的解碼器可以成功重構出原資料分布裡的各式資料。那麼如果我們遞歸式地對這個潛在向量再次計算“潛在向量的潛在向量”,我們就得到了一個多層的 HVAE,其中每一層的潛在向量條件于所有前序的潛在向量。

但是在這篇文章裡,我們主要關注具有馬爾可夫性質的層級變分自編碼器 MHVAE,即每一層的潛在向量僅條件于前一層的潛在向量。

從大一統視角了解擴散模型(Diffusion Models)

▲ MHVAE裡的潛在向量隻條件于上一層

對于該 MHVAE,我們可以通過馬爾可夫假設得到以下二式:

從大一統視角了解擴散模型(Diffusion Models)

▲ 23和24式是用鍊式法則對依賴圖裡的關系的拆解

對于該 MHVAE,我們可以用以下步驟推導其證據下界:

從大一統視角了解擴散模型(Diffusion Models)

▲ MHVAE的變分下界推導

從大一統視角了解擴散模型(Diffusion Models)

Variation Diffusion Model 

我們之是以在談論擴散模型之前,要花如此大的篇幅介紹 VAE,并引出 MHVAE 的證據下界推導是因為我們可以非常自然地将擴散模型視為一種特殊的 MHVAE,該 MHVAE 滿足以下三點限制(注意以下三點限制也是整個擴散模型推斷的基礎):

  1. 潛在向量 Z 的次元和輸入 X 的次元保持一緻。
  2. 每一個時間步的潛在向量都被編碼為一個僅依賴于上一個時間步的潛在向量的高斯分布。
  3. 每一個時間步的潛在向量的高斯分布的參數,随時間步變化,且滿足最終時間步的高斯分布滿足标準高斯分布的限制。

因為第一點次元一緻的原因,在不影響了解的基礎上,我們将 MHVAE 裡的 Zt 表示為 Xt(其中 x0 為原始輸入),則我們可以将 MHVAE 的層級潛在向量依賴圖,重新畫為以下形式(即将擴散模型的中間擴散過程當做潛在向量的層級模組化過程):

從大一統視角了解擴散模型(Diffusion Models)

▲ 擴散過程的直覺解釋:在資料x0上不斷加高斯噪聲直至退化為純噪聲圖像Xt

直至這裡,我們終于見到了我們熟悉的擴散模型的形式。

而在将上面的公式 25-28 裡的 Zt 與 Xt 替換後,我們可以得到 VDM 裡證據下界的推導公式裡的前四行,即公式 34-37。并且在此基礎上,我們可以繼續往下推導。

37 至 38 行的變換是鍊式法則的等價替換(或上述公式 23 和 24 的變換),38 至 39 行是連乘過程的重組,39 至 40 行是對齊連乘符号的區間,40 至 41 行應用了 Log 乘法的性質,41 至 42繼續運用該性質進一步拆分,42 至 43 行是因為和的期望等于期望的和,43 至 44 是因為期望目标與部分時間步的機率無關可以直接省去,44 至 45 步是應用了KL 散度的定義進行了重組。

從大一統視角了解擴散模型(Diffusion Models)

▲ VDM的證據下界推導

至此,我們又一次将原資料分布的對數似然,轉化為了證據下界(公式 37),并将其轉化為了幾項非常直覺的損失函數的加和形式(公式 45),他們分别為:

  1. 重構項,即從潛在向量 到原資料 的變化。在 VAE 裡該重構項寫為 ,而在這裡我們寫做 。
  2. 先驗比對項。回憶我們上述提到的 MHVAE 裡最終時間步的高斯分布應建立為标準高斯分布。
  3. 一緻項。該項損失是為了使得前向加噪過程和後向去噪的過程中,Xt 的分布保持一緻。直覺上講,對一個更混亂圖像的去噪應一緻于對一個更清晰的圖像的加噪。而因為一緻項的損失是定義于所有時間步上的,這也是三項損失裡最耗時計算的一項。

雖然以上的公式推導給了我們一個非常直覺的證據下界,并且由于每一項都是以期望來計算,是以天然适用蒙特卡洛方法來近似,但如果優化該證據下界依然存在幾個問題:

  1. 我們的一緻項損失是一項建立在兩個随機變量 上的期望。他們的蒙特卡洛估計的方差大機率比建立在單個獨立變量上的蒙特卡洛估計的方差大。
  2. 我們的一緻項是定義于所有時間步上的 KL 散度的期望和。對于 T 取值較高的情況(通常擴散模型 T 取 2000 左右),該期望的方差也會很大。

是以我們需要重新推導一個證據下界。而這個推導的關鍵将着眼于以下這個觀察:我們可以将擴散過程的正向加噪過程 重寫為 。之是以這樣重寫的原因是基于馬爾可夫假設,這兩個式子完全等價。于是對這個式子使用貝葉斯法則,我們可以得到式 46。

從大一統視角了解擴散模型(Diffusion Models)

▲ 對前向加噪過程使用馬爾可夫假設和貝葉斯法則後的公式

基于公式 46,我們可以重寫上面的證據下界(式 37)為以下形式:其中式 47,48 和式 37,38 一緻。式 49 開始,分母的連乘拆解由從 T 開始改為從 1 開始。式 50 基于上文提及的馬爾可夫假設對分母添加了 的依賴。式 51 用 log 的性質拆分了對數的目标。

式 52 代入了式 46 做了替換。式 53 将劃掉的分母部分連乘單獨提取出來後發現各項可約剩下式 54 部分的 。式 54 用 log 的性質消去了 得到了式 55。式 56 用 log 的性質拆分重組了公式,式 57 如同前述式 43-44 的變換,省去了無關的時間步。式 58 則用了 KL 散度的性質。

從大一統視角了解擴散模型(Diffusion Models)

▲ 應用了馬爾可夫假設的擴散模型證據下界推導1

從大一統視角了解擴散模型(Diffusion Models)

▲ 應用了馬爾可夫假設的擴散模型證據下界推導2

至此,我們應用了馬爾可夫假設得到了一個更優的證據下界推導。該證據下界同樣包含幾項直覺的損失函數:

  1. 重構項。該重構項與上面提及的重構項一緻。
  2. 先驗比對項。與上面提及的形式略有差别,但同樣是基于最終時間步應為标準高斯的先驗假設。
  3. 去噪比對項。與上面提及的一緻項的最大差別在于不再是對兩個随機變量的期望。并且直覺上了解 代表的是後向的去噪過程,而 代表的是已知原始圖像和目标噪聲圖像的前向加噪過程。該加噪過程作為目标信号,來監督後向的去噪過程。該項解決了期望建立于兩個随機變量上的問題。

注意,以上的推導完全基于馬爾可夫的性質是以适用于所有 MHVAE,是以當 T=1 的時候,以上的證據下界和 VAE 所推導出的證據下界完全一緻!并且本文之是以稱為大一統視角,是因為對于該證據下界裡的去噪比對項,不同的論文有不同的優化方式。但歸根結底,他們的本質互相等價,且皆由該式展開推導得到。

下面我們會從擴散模型的角度做公式推導,來展開計算去噪比對項。(注意第一版的推導裡的一緻項,也完全可以通過下一節的方式得到 q 和 p 的表達式,再通過 KL 來計算解析式)

從大一統視角了解擴散模型(Diffusion Models)

Diffusion Model recap

在擴散模型裡,有幾個重要的假設。其中一個就是每一步擴散過程的變換,都

是對前一步結果的高斯變換(上一節 MHVAE 的限制條件 2):

從大一統視角了解擴散模型(Diffusion Models)

▲ 與 MHVAE 不同,編碼器側的潛在向量分布并不經過學習得到,而是固定為線性高斯模型

這一點和 VAE 有很大不同。VAE 裡編碼器側的潛在向量的分布是通過模型訓練得到的。而擴散模型裡,前向加噪過程裡的每一步都是基于上一步結果的高斯變換。其中 一般當作超參設定得到。這點對于我們計算擴散模型的證據下界有很大幫助。因為我們可以基于輸入 确切地知道前向過程裡的某一步的具體狀态,進而監督我們的預測。

基于式 31,我們可以遞歸式地對 不斷加噪變換,得到最終 的表達式:

從大一統視角了解擴散模型(Diffusion Models)

▲  可以寫為關于 的一個高斯分布的采樣結果

是以對于式 58 裡噪音比對項裡的監督信号,我們可以重寫成以下形式,其中根據式 70,我們可以得到 和 的表達式,而 因為是前向擴散過程,可以應用馬爾可夫性質看做 使用式 31 得到具體表達式。

從大一統視角了解擴散模型(Diffusion Models)

▲ 式58裡的監督信号可以通過 計算具體的值

代入每一項 q 所代表的高斯函數表達式後,我們最後可以得到一個新的高斯分布表達式,其中每一項都是具體可求的:

從大一統視角了解擴散模型(Diffusion Models)

▲  的解析形式

參考已經證明了前向加噪過程可以寫為一個高斯分布了。在擴散模型的初始論文 [2] 裡提到,對于一個連續的高斯擴散過程,其逆過程與前向過程的方程形式(functional form)一緻。是以我們将對去噪比對項裡的 也采用高斯分布的形式(更加具體的一些推導放在了末尾的補充裡)。注意式 58 裡,對兩個高斯分布求 KL 散度,其解析解的形式如下:

從大一統視角了解擴散模型(Diffusion Models)

▲ 兩個高斯分布的KL散度解析解

我們現在已知其中一個高斯分布(左側)的參數,現在如果我們令右側的高斯分布和左側高斯分布的方差保持一緻。那麼優化該 KL 散度的解析式将簡化為以下形式:

從大一統視角了解擴散模型(Diffusion Models)

▲ 式58的噪音比對項簡化為最小化前後向均值的預測誤差

如此一來式 58 的噪音比對項就被簡化為最小化前後向均值的預測誤差(式 92)。讀者請注意,以下的大一統的三個角度來看待 Diffusion model,實質上都是對式 92 裡 的不同變形所推論出來的。其中 是關于 的函數,而 是關于 和t的函數。其中通過式 84,我們有 的準确計算結果,而因為 是關于 的函數。

我們可以将其寫為類似式 84 的形式(注意,有關為什麼可以忽略方差并且讓均值選取這個形式放在了最末尾的補充讨論裡。但關于這個形式的選擇的深層原因實質上開辟了一個全新的領域來研究,并且關于該領域的研究直接導向了擴散模型之後的一系列加速采樣技術的出現)。

從大一統視角了解擴散模型(Diffusion Models)

▲ 将後向預測的均值寫為類似前向加噪的形式

比較式 84 與 94 可知, 是我們通過噪音資料 來預測原始資料 的神經網絡。那麼我們可以将式 58 裡證據下界的噪音比對項,最終寫為

從大一統視角了解擴散模型(Diffusion Models)

▲ 噪聲比對項的最終形式

那麼,我們最後得到擴散模型的優化,最終表現為訓練一個神經網絡,以任意時間步的噪音圖像為輸入,來預測最初的原始圖像!此時優化目标轉化為了最小化預測誤差。同時式 58 上的對所有時間步的噪音比對項求和的優化,可以近似為對每一時間步上的預測誤差的期望的最小值,而該優化目标可以通過随機采樣近似:

從大一統視角了解擴散模型(Diffusion Models)

▲ 該優化目标可以通過随機采樣實作

從大一統視角了解擴散模型(Diffusion Models)

Three Equivalent Perspective

為什麼 Calvin Luo 的這篇論文叫做大一統視角來看待擴散模型?以上我們花了不菲的篇幅論證了擴散模型的優化目标可以最終轉化為訓練一個神經網絡在任意時間步從 預測原始輸入 。以下我們将論述如何通過對 不同的推導得到類似的角度看待擴散模型。

首先,我們已經知道給定每個時間步的噪聲系數 之後,我們可以由初始輸入 遞歸得到 。同理,給定 我們也可以求得 。那麼對式 69 重置後,我們可以得到式 115。

從大一統視角了解擴散模型(Diffusion Models)

▲ 将式69裡的 和 關系重置後可得式115

重新将式 115 代入式 84 裡,我們所得的關于時間步 t 的真實均值表達式 後,我們可以得到以下推導:

從大一統視角了解擴散模型(Diffusion Models)

▲ 在推導真實均值時替換   

注意在上一次推導的過程中, 裡的 在計算 kl 散度的解析式時被抵消掉了,而 我們采取的是用神經網絡直接拟合的政策。而在這一次的推導過程中, 被替換成了關于 的表達式(關于 和 )後,我們可以得到 的新的表達式,依舊關于 ,隻是不再與 相關,而是與 相關(式 124)。

其中,和式 94 一樣,我們忽略方差(将其設為與前向一緻)并将希望拟合的 寫成與真實均值 一樣的形式,隻是将 替換為神經網絡的拟合項後我們可以得到式 125。

從大一統視角了解擴散模型(Diffusion Models)

▲ 與上次推導時替換 為神經網絡所拟合項一樣,這次換為拟合初始噪聲項

将我們新得到的兩個均值表達式重新代入 KL 散度的表達式裡, 再次被抵消掉(因為 和 選取的形式一緻)最終隻剩下 和 的內插補點。注意式 130 和式 99 的相似性!

從大一統視角了解擴散模型(Diffusion Models)

▲ 最終對證據下界裡的去噪比對項的優化可以寫成關于初始噪聲和其拟合項的差的最小化

至此,我們得到了對擴散模型的第二種直覺了解。對于一個變分擴散模型 VDM,我們優化該模型的證據下界既等價于優化其在所有時間步上對初始圖像的預測誤差的期望,也等價于優化在所有時間步上對噪聲的預測誤差的期望!事實上 DDPM 采取的做法就是式 130 的做法(注意 DDPM 裡的表達式實際上用的是 ,關于這點在文末也會讨論)。

下面筆者将概括第三種看待 VDM 的推導方式。這種方式主要來自于 SongYang 博士的系列論文,非常直覺。并且該系列論文将擴散模型這種離散的多步去噪過程統一成了一個連續的随機微分方程(SDE)的特殊形式。SongYang 博士是以獲得了 ICLR 2021 的最佳論文獎!

後續來自清華大學的基于将該 SDE 轉化為常微分方程 ODE 後的采樣提速論文,也獲得了 ICLR 2022 的最佳論文獎!關于該論文的一些細節和直覺了解,Song Yang 博士在他自己的部落格裡給出了非常精彩和直覺的講解。有興趣的讀者可以點開本文初始的第二個連結檢視。以下隻對大一統視角下的第三種視角做簡短的概括。

第三種推導方式主要基于 Tweedie's formula。該公式主要闡述了對于一個指數家族的分布的真實均值,在給定了采樣樣本後,可以通過采樣樣本的最大似然機率(即經驗均值)加上一個關于分數(score)預估的校正項來預估。注意 score 在這裡的定義是真實資料分布的對數似然關于輸入 的梯度。即

從大一統視角了解擴散模型(Diffusion Models)

▲ score的定義

根據 Tweedie's formula,對于一個高斯變量 z~N(mu_z, sigma_z) 來說,該高斯變量的真實均值的預估是:

從大一統視角了解擴散模型(Diffusion Models)

▲ Tweedie’s formula對高斯變量的應用

我們知道在訓練時,模型的輸入 關于 的表達式如下

從大一統視角了解擴散模型(Diffusion Models)

▲ 上文裡的式70

我們也知道根據 Tweedie's formula 的高斯變量的真實均值預估我們可以得到下式

從大一統視角了解擴散模型(Diffusion Models)

▲ 将式70的方差代入Tweedie’s formula

那麼聯立兩式的關于均值的表達式後,我們可以得到 關于 score 的表達式 133

從大一統視角了解擴散模型(Diffusion Models)

▲ 将 寫為關于score的表達式

如上一種推導方式所做的一樣,再一次重新将 的表達式代入式 84 對真實均值 的表達式裡:(注意式 135 到 136 的變形主要在分子裡最右邊的 到 ,約去了根号下 )

從大一統視角了解擴散模型(Diffusion Models)

▲ 将 的關于score表達式代入式84

同樣,将 采取和 一樣的形式,并用神經網絡 來近似 score 後,我們得到了新的   的表達式 143。

從大一統視角了解擴散模型(Diffusion Models)

▲ 關于score的 的表達式

再再再同樣,和上種推導裡的做法一樣,我們再将新的 代入證據下界裡 KL 散度的損失項我們可以得到一個最終的優化目标

從大一統視角了解擴散模型(Diffusion Models)

▲ 将新的 的表達式代入證據下界的優化目标裡

事實上,比較式 148 和式 130 的形式,可以說是非常的接近了。那麼我們的 score function delta_p(xt) 和初始噪聲 是否有關聯呢?聯立關于 的兩個表達式 133 和 115 我們可以得到。

從大一統視角了解擴散模型(Diffusion Models)

▲ score function和初始噪聲間的關系

讀者如果将式 151 代入 148 會發現和式 130 等價!直覺上來講,score function 描述的是如何在資料空間裡最大化似然機率的更新向量。而又因為初始噪聲是在原輸入的基礎上加入的,那麼往噪聲的反方向(也是最佳方向)更新實質上等價于去噪的過程。而數學上講,對 score function 的模組化也等價于對初始噪聲乘上負系數的模組化!

至此我們終于将擴散模型的三個形式的所有推導整理完畢!即對變分擴散模型 VDM 的訓練等價于訓練一個神經網絡來預測原輸入 ,也等價于預測噪聲 ,也等價于預測初始輸入在特定時間步的 score delta_logp(xt)。

讀到這裡,相比讀者也已經發現,不同的推導所得出的不同結果,都來自于對證據下界裡去噪比對項的不同推導過程。而不同的變形,基本上都是利用了 MHVAE 裡最開始提到的三點基本假設所得。

從大一統視角了解擴散模型(Diffusion Models)

Drawbacks to Consider

盡管擴散模型在最近兩年成功出圈,引爆了業界,學術界甚至普通人對文本生成圖像的 AI 模型的關注,但擴散模型這個體系本身依舊存在着一些缺陷:

  1. 擴散模型本身盡管理論架構已經比較完善,公式推導也十分優美。但仍然非常不直覺。最起碼從一個完全噪聲的輸入不斷優化的這個過程和人類的思維過程相去甚遠。
  2. 擴散模型和 GAN 或者 VAE 相比,所學的潛在向量不具備任何語義和結構的可解釋性。上文提到了擴散模型可以看做是特殊的 MHVAE,但裡面每一層的潛在向量間都是線性高斯的形式,變化有限。
  3. 而擴散模型的潛在向量要求次元與輸入一緻這一點,則更加死地限制住了潛在向量的表征能力。
  4. 擴散模型的多步疊代導緻了擴散模型的生成往往耗時良久。

不過學術界對以上的一些難題其實也提出了不少解決方案。比如擴散模型的可解釋性問題。筆者最近就發現了一些工作将 score-matching 直接應用在了普通 VAE 的潛在向量的采樣上。這是一個非常自然的創新點,就和數年前的 flow-based-vae 一樣。而耗時良久的問題,今年 ICLR 的最佳論文也将采樣這個問題加速和壓縮到了幾十步内就可以生成非常高品質的結果。

但是對于擴散模型在文本生成領域的應用最近似乎還不多,除了 prefix-tuning 的作者 xiang-lisa-li 的一篇論文 [3]

之外筆者暫未關注到任何工作。而具體來講,如果将擴散模型直接用在文本生成上,仍有諸多不便。比如輸入的尺寸在整個擴散過程必須保持一緻就決定了使用者必須事先決定好想生成的文本的長度。而且做有引導的條件生成還好,要用擴散模型訓練出一個開放域的文本生成模型恐怕難度不低。

本篇筆記着重的是在探讨大一統角度下的擴散模型推斷。但具體對 score matching 如何訓練,如何引導擴散模型生成我們想要的條件分布還沒有寫出來。筆者打算在下一篇探讨最近一些将擴散模型應用在受控文本生成領域的方法調研裡詳細記錄和比較一下

從大一統視角了解擴散模型(Diffusion Models)

補充

關于為什麼擴散核是高斯變換的擴散過程的逆過程也是高斯變換的問題,來自清華大神的一篇知乎回答裡 [4] 給出了比較直覺的解釋。其中第二行是将 和 近似。第三行是對 使用一階泰勒展開消去了 。第四行是直接代入了 的表達式。于是我們得到了一個高斯分布的表達式。

從大一統視角了解擴散模型(Diffusion Models)

▲ 擴散的逆過程也是高斯分布

在式 94 和式 125,我們都将對真實高斯分布 q 的均值 的近似 模組化成了與我們所推導出的 一緻的形式,并且将方差設定為了與 q 的方差一緻的形式。

直覺上來講,這樣模組化的好處很多,一方面是根據 KL 散度對兩個高斯分布的解析式來說,這樣我們可以約掉和抵消掉絕大部分的項,簡化了模組化。另一方面真實分布和近似分布都依賴于 。在訓練時我們的輸入就是 xt,采取和真實分布形式一樣的表達式沒有洩漏任何資訊。并且在工程上 DDPM 也驗證了類似的簡化是事實上可行的。但實際上可以這樣做的原因背後是從 2021 年以來的一系列論文裡複雜的數理證明所在解釋的目标。同樣引用清華大佬 [4] 的回答:

從大一統視角了解擴散模型(Diffusion Models)

▲ DDPM裡簡化去噪的高斯分布的做法其實蘊含着深刻的道理

在 DDPM 裡,其最終的優化目标是 而不是 。即預測的誤差到底是初始誤差還是某個時間步上的初始誤差。誰對誰錯?實際上這個誤解來源于我們對 關于 的表達式的求解中的誤解。

從式 63 開始的連續幾步推導,都應用到了一個高斯性質,即兩個獨立高斯分布的和的均值與方差等于原分布的均值和與方差和。而實質上我們在應用重參數化技巧求 的過程中,是遞歸式的不斷引入了新的 來替換遞歸中的 裡的 。那麼到最後,我們所得到的 無非是一個囊括了所有擴散過程中的 。這個噪聲即可以說是 t,也可以說是 0,甚至最準确來說應該不等于任何一個時間步,就叫做噪聲就好!

從大一統視角了解擴散模型(Diffusion Models)

▲ DDPM的優化目标

關于對證據下界的不同簡化形式。其中我們提到第二種對噪聲的近似是 DDPM 所采用的模組化方式。但是對初始輸入的近似其實也有論文采用。也就是上文提及的将擴散模型應用在可控文本生成的論文裡 [3] 所采用的形式。該論文每輪直接預測初始 Word-embedding。而第三種 score-matching 的角度可以參照 SongYang 博士的系列論文 [5] 來看。裡面的優化函數的形式用的是第三種。

本篇筆記着重于講述擴散模型的變分下界的公式推導,關于擴散模型與能量模型,朗之萬動力學,随機微分方程等一系列名詞的關系本篇筆記并無涉及。筆者将在另外一篇筆記裡梳理相關的了解。

參考文獻

[1] Improving Variational Inference with Inverse Autoregressive Flow https://arxiv.org/abs/1606.04934

[2] Deep Unsupervised Learning using Nonequilibrium Thermodynamics https://arxiv.org/abs/1503.03585