AIGC: DDIM (Denoising Diffusion Implicit Models) 筆記
TL;DR: 去噪擴(kuò)散隱式模型 (DDIM) 是利用非馬爾可夫的思想,以犧牲一小部分圖片質(zhì)量為代價,對圖像生成過程大幅度加速的采樣方法。
這個話題太過復(fù)雜,如內(nèi)容有錯誤,還請在評論里面指正。
本人數(shù)學(xué)不好,盡量繞開復(fù)雜的公式(?)?
大局觀

首先,有一個問題必須要回答——為什么 DDPM 要基于馬爾可夫鏈,馬爾可夫鏈到底起一個什么樣的作用。
在這里,以一個小白的視角來理一下DDPM的大致過程:
首先,加噪過程是給數(shù)據(jù)添加一些微小的高斯噪音,即 。
在多次加噪之后,數(shù)據(jù)最終將會變成高斯分布。
在加噪強(qiáng)度非常小的情況下,去噪分布可以被看作是一個高斯分布,所以我們用一個模型(比如神經(jīng)網(wǎng)絡(luò))?去貼合去噪的分布。
但是,我們的目的不是為了去學(xué)習(xí)??(事實上我們也沒有去學(xué)習(xí)
). 我們的最終目的,是去模擬出原始數(shù)據(jù)的分布
.?
只不過,相比于直接利用極大化似然法(Maximum Likelihood)?(很明顯,如果我們能夠直接極大化似然的話,就不用在這里費這么大力氣了??), DDPM 的優(yōu)化目標(biāo)是最大化其變分下界(Evidence Lower Bound)
. (這里
?的意思是?
)
我們在 log 前面加一個負(fù)號,把最大化目標(biāo)變成最小化目標(biāo),于是就得到了?DDPM?的優(yōu)化目標(biāo):
于是,下一個問題就變成了,什么是?.?很明顯,這是一個依賴于
?的聯(lián)合分布(Joint Distribution). 對于聯(lián)合分布,我們初高中學(xué)過,有鏈?zhǔn)椒▌t
而在馬爾可夫鏈的情況下,上面這個公式將變成
所以,在馬爾可夫鏈的前提下,???這個聯(lián)合分布可以被寫成如下的乘積形式(如果外面帶 log 的話就相當(dāng)于加和形式)
?也是差不多的道理,這里就不去花力氣解釋了??傊?,在馬爾可夫鏈的前提下,上面的優(yōu)化目標(biāo)可以進(jìn)一步地寫下去:
然后,我們把???這一項從?
?中拆分出來。然后我們再將?
?改寫一下,變成?
?的形式(后面一項可以被相互抵消掉),然后我們就得到了目標(biāo)的一個新的形式:
至此,我們利用了馬爾可夫鏈的性質(zhì)對公式做了變形,如果我們把高斯分布這一個條件也加上去的話,我們可以對上面的目標(biāo)做進(jìn)一步的推導(dǎo)(這里就省略過程了,如果想知道過程,可以參考之前推薦的DDPM的文章,或者DDIM原論文附錄C,鏈接在文章末尾),得到如下的最終形式:
這里,一個重要的發(fā)現(xiàn)就是,目標(biāo)函數(shù) ,依賴于?
?而不是聯(lián)合分布?
. 那么什么是?
呢?首先,這是個加噪/前向過程,并且根據(jù)定義,有
并且,根據(jù)馬爾可夫鏈和高斯分布的兩個大前提,我們還知道,
呃,所以扯了大半天,這家伙在一本正經(jīng)的胡說八道什么?
這里,從??到公式的“解”
,我們是通過了馬爾可夫鏈推導(dǎo)出來的。但是實際上,我們未必一定要通過馬爾可夫鏈去"求解"。有沒有一種方法,基于非馬爾可夫鏈的方式,也能求得這個"解"呢?
非馬爾可夫過程
這里,直接照搬論文給出的標(biāo)準(zhǔn)答案了。如果我們的概率分布 q 滿足以下的條件:
那么可以有,.?
上面的第三個公式非常重要,至于怎么來的,論文沒有給出過程和說明。網(wǎng)上有許多大神們針對這一步寫了不少文章,感興趣的可以去看(鏈接在文章末尾)。
然后我們利用貝葉斯理論(Bayes'?Rule)獲得非馬爾科夫下的前向過程:
等式后面的每一項,代入上面的公式即可。順便一提,由于我們前向不再遵循馬爾可夫鏈,所以??不再已知。
反向過程就是上面公式?,和前向一樣,同時依賴于
和
. 當(dāng)然遵循 DDPM 的思路,我們可以將這個概率分布改寫一下
這里注意 α 和 σ 長得特別像,不要搞錯了 (lll¬ω¬)。另外,在這里,我們依舊是老老實實地在一步步地進(jìn)行采樣,還沒有涉及到任何加速采樣的內(nèi)容。
借用?DDPM 模型
BANG! 又是一個重磅炸彈——DDIM 不需要再訓(xùn)練一個單獨的模型,直接利用已經(jīng)訓(xùn)練好的 DDPM 模型就可以進(jìn)行采樣。

因為,論文團(tuán)隊證明了,對于任意的?, 都存在?
, 和一個常數(shù)
, 使得等式?
?成立。(這是什么天書)
這里對于論證過程不做敘述,但是有必要解釋一下上面的這個結(jié)論是什么意思。
,或者完整地說,
, 是我們 DDIM 非馬爾可夫過程下的目標(biāo),而?
?是我們利用 DDPM 推導(dǎo)出來的目標(biāo)(上文中有完整的公式)。這里主要想說的一點,就是因為兩者目標(biāo)相等,所以 DDIM 可以借用其對應(yīng)的參數(shù)下的 DDPM 的模型。
這里,如果我們再加入一個限定條件——如果我們的模型?, 在不同的時間 t, 權(quán)重是不共享的(比如,不同的時間點 t,我們都用一個不同的神經(jīng)網(wǎng)絡(luò))。那么最小化目標(biāo)?
?就變成了獨立地最小化
? 里面的每一項,于是
?在優(yōu)化目標(biāo)的時候就不再起作用(我們最優(yōu)解
將不再依賴?
?的取值)。比如,我們可以取
,那么這就變成了?DDPM 原論文中的情況。
加速推理
所以,講了這么多廢話。終于到了最關(guān)鍵的部分——如何利用DDIM來加速推理。

所以,上面我們知道了,DDIM采樣可以借用DDPM的模型,假設(shè),我們DDPM訓(xùn)練時,用了1000步,那么我們DDIM采樣時,就從這個 的集合中,取一個子集出來
, 這個子集的長度將遠(yuǎn)小于1000。然后我們把?
?帶入非馬爾可夫過程這一節(jié)里面的迭代公式,就得到了我們加速采樣的過程。
Why? 首先,論文里面把聯(lián)合分布拆解成了以下的形式。
等式后面的前面一項,是生成圖片的過程,后面一項,僅作用于目標(biāo)函數(shù)。其實,說到底還是因為目標(biāo)相同——用新序列的情況下的最優(yōu)化目標(biāo)函數(shù),和最優(yōu)化??是等價的。
至于證明,論文中沒有給出特別詳細(xì)的過程。查遍了整個國內(nèi)國外,沒有一篇文章詳細(xì)介紹了過程(唯一一篇張振虎的文章里面,里面介紹了 的情況)。所以目前就把它當(dāng)作一個定理來看吧,不要太深究了。
ODE
上一篇文章最后留了一個坑沒填。
DDIM 當(dāng)??時,那么方差這一項就變成了 0. 于是原先的 stochastic 的過程就變成了 deterministic 的過程(即,已知
?和
?的情況下,
是一個確定的值;意味著從相同的噪音出發(fā),將會導(dǎo)出相同的圖片)
如果我們將??的離散情況連續(xù)化,就能得到對應(yīng)的 ODE.?
我們還是利用之前“將離散化的 DDPM 轉(zhuǎn)化為 VP-SDE” 的思路,從??出發(fā)
假設(shè)我們一共有 N 步,然后?, 然后我們再把它壓縮到一個連續(xù)的區(qū)間?[0,1] 上面去,所以?
, 并且
很明顯我們這里可以用?,
?來使公式變得更加簡潔。
所以這里,?就變成了
.
?就變成了
.最終形式就是
.
一些推薦參考的資料
推薦過N遍了??,這里不厭其煩地再推薦一遍,一篇系統(tǒng)性介紹DDPM的文章:https://zhuanlan.zhihu.com/p/638442430
講?DDIM 的文章中,經(jīng)典中的經(jīng)典(里面有不少跳步,建議先看一眼上面那個講DDPM的):https://www.zhangzhenhu.com/aigc/ddim.html#equation-eq-ddim-226
非馬爾可夫下的公式由來:https://zhuanlan.zhihu.com/p/627616358

填坑結(jié)束(??)