譯者 | 朱鋼
審核 | 重樓
擴散模型(如Midjourney和DALL-E 2)可以生成令人驚嘆的圖像,但它們的訓(xùn)練始終從完全的噪聲開始。
每當(dāng)機器學(xué)習(xí)(ML)領(lǐng)域取得進展或發(fā)生微小變化時,就會引起巨大的炒作。當(dāng)涉及到人工智能時,炒作往往會失去控制,并伴隨著各種荒謬的信息。最近,你可能已經(jīng)注意到越來越多的人開始使用Midjourney、ChatGPT、Copilot等技術(shù)。
然而,這些系統(tǒng)的真相往往平淡無奇。機器學(xué)習(xí)是一門數(shù)學(xué)科學(xué),ML模型的真實影響并不像一些博主所聲稱的那樣深遠。它們可能對某些領(lǐng)域的工作流程產(chǎn)生益處,甚至在某些情況下能夠徹底改變其中的大部分,但前提是用戶(無論是組織還是個人)必須對其內(nèi)部運作、限制、能力和潛力有足夠的理解。只有在這種情況下,它們才能發(fā)揮作用。
本文希望對擴散模型的工作原理進行一些闡述,例如備受歡迎的Midjourney、DALL-E 2和Stable Diffusion,尤其是它們的訓(xùn)練過程。本文包含數(shù)學(xué)表達式,但也以易理解的方式描述了每個變量代表的含義。
前向擴散
所有的擴散模型,包括Midjourney(雖然我們還沒有一篇描述它的論文),都是由多個元素組成的神經(jīng)網(wǎng)絡(luò),通過隨機性生成圖像。最初,它們被訓(xùn)練成逐漸將圖像轉(zhuǎn)變?yōu)樵肼?。這種方法建立了一個由時間步組成的馬爾可夫鏈,在這個鏈中,圖像經(jīng)過一系列的轉(zhuǎn)換,在t=0時從一個初始純凈狀態(tài)逐漸演化為t=T時的完全噪聲,即最后一步。
*馬爾可夫鏈?zhǔn)且幌盗凶兞康男蛄?,其中一個變量的狀態(tài)僅取決于前一個變量的狀態(tài)。
在每個步驟中應(yīng)用的時間步數(shù)可以從幾百到一千甚至更多,并且必須事先確定每個步驟中要應(yīng)用的噪聲水平;這被稱為noising schedule。在數(shù)學(xué)上,這種噪聲或前向擴散過程表示為:
q(xt|xt-1) = N(xt; √(1-βt) xt-1, βtI)
q(x0)是我們的實分布,而q(xt∣xt?1)表示的是前向擴散過程,其中xt始終在xt-1的條件下進行。符號N代表高斯分布或正態(tài)分布,由均值μ和方差σ^2定義。在這種情況下,均值由√(1-βt)xt-1表示,其中βt是我們的方差。噪聲在每個步驟中從正態(tài)分布中采樣,即?~N(0,I),而方差計劃是預(yù)先確定的。
簡單來說,我們在當(dāng)前步驟上有一個正態(tài)分布,其中的均值由√(1-βt)乘以上一步驟的圖像xt-1表示。除了這種重新縮放之外,我們還在每次迭代中向圖像添加了一個小的噪聲βtI。將β視為一個很小的正標(biāo)量值,例如0.001,它被有意設(shè)置得很小。
在每個時間步驟中,我們會執(zhí)行上述的操作。但是,我們還可以為將在xt、x2、x3、...、xT序列中生成的所有樣本定義一個聯(lián)合分布。它的形式如下所示:
q(x1:T|x0) = ∏t=1:T q(xt|xt-1)
正如你所看到的,這個聯(lián)合分布由在時間步驟1到T中創(chuàng)建的條件分布q(xt|xt-1)的乘積∏表示,并給定初始圖像x0。
好的,但是我們可以跳過鏈中的鏈接來生成任何 xt 而不完成前面的所有步驟嗎?
是的,我們可以這樣做。
這是因為我們使用一個簡單的高斯核來擴散數(shù)據(jù)。為了做到這一點,我們計算標(biāo)量值αt,它等于1 - βt,并且我們將變量α?t定義為從t1到t的αs的乘積。前向擴散方差βt對于整個過程是至關(guān)重要的。它們可以通過重新參數(shù)化學(xué)習(xí),也可以作為超參數(shù)保持不變,但它們總是被設(shè)計成使得α?t在最后一步T上趨近于0。這確保了擴散后的數(shù)據(jù)具有正態(tài)分布,這對于逆向生成過程至關(guān)重要。
在我們擁有了核函數(shù)之后,我們可以隨機采樣任何xt,因為:xt = √?t x0 + √(1 - ?t),其中ε(噪聲)是從均值為0,協(xié)方差矩陣為單位矩陣I的正態(tài)分布中得到的。
簡單來說,如果我們需要生成表示馬爾可夫鏈中的一個隨機步驟的xt,只要我們有x0、α?t和噪聲項ε,我們就可以毫無問題地生成它。
生成過程
讓我們現(xiàn)在深入探討逆向過程,即模型生成新樣本的過程。首先要理解的是,我們無法直接計算去噪分布q(xt-1|xt),因為這將需要知道數(shù)據(jù)集中所有圖像的分布。然而,我們可以使用貝葉斯定理來顯示該分布與邊緣數(shù)據(jù)分布q(xt-1)和在步驟t上的擴散核q(xt|xt-1)的乘積成正比:
q(xt-1|xt) ∝ q(xt-1) q(xt|xt-1)
然而,乘積和分布仍然是難以處理的。因此,我們需要對條件概率分布進行近似。幸運的是,由于在前向過程中噪聲注入βt很小,我們可以使用正態(tài)分布來進行近似。
我們可以將對條件概率分布的近似表示為pθ(xt?1∣xt),其中θ是模型的參數(shù),通過梯度下降進行迭代優(yōu)化。
當(dāng)我們記住馬爾可夫鏈的終點是一個正態(tài)分布時,我們可以假設(shè)逆向過程也是高斯分布。因此,它必須由均值μθ和方差Σθ參數(shù)化,這是我們的神經(jīng)網(wǎng)絡(luò)需要計算的。
這是過程的參數(shù)化表示:pθ(xt?1∣xt)=N(xt?1;μθ(xt,t),Σθ(xt,t))
在原始論文《Denoising Diffusion Probabilistic Models》中,研究人員發(fā)現(xiàn)將方差固定為Σθ(xt, t) = σ^2tI是在樣本質(zhì)量方面的最佳選擇。特別是,他們發(fā)現(xiàn)將方差固定為β與將方差固定為βt的結(jié)果幾乎相同,因為當(dāng)我們在過程中添加擴散步驟時,β和βt保持接近,因此實際上是均值而不是方差決定了分布。
注:在稍后發(fā)布的論文《Improved Denoising Diffusion Probabilistic Models》中,研究人員確實對方差進行了參數(shù)化。這有助于提高對數(shù)似然,但并沒有提高樣本效率。
那么,我們?nèi)绾未_定目標(biāo)函數(shù)來推導(dǎo)均值呢?
由于q和pθ可以被視為變分自動編碼器(Variational Autoencoder),它是一種通過將數(shù)據(jù)編碼成潛在空間然后再解碼回輸入空間來近似數(shù)據(jù)分布的模型,因此我們可以使用變分上界(ELBO)目標(biāo)函數(shù)來訓(xùn)練它。它最小化了相對于x0的負對數(shù)似然。在這里,變分下界是每個時間步驟上損失的總和,而每個損失項是兩個高斯分布之間的KL散度(KL divergence)。
*潛在空間是一個壓縮空間,在其中輸入特征由不同的維度表示;它有助于模型輕松地發(fā)現(xiàn)數(shù)據(jù)對象之間的模式和相似性。
**KL散度是衡量兩個分布之間距離的度量。它基本上告訴你,如果用模型分布來近似目標(biāo)分布,你將會失去多少信息。
正如您所記得的,我們可以在任何以x0為條件的噪聲水平上對xt進行采樣。由于q(xt|x0) = N(xt;√(α?t)x0, (1-α?t)I),我們可以通過向x0添加和縮放噪聲來得到任何xt。此外,由于α?t是βt(預(yù)設(shè)的方差)的函數(shù),我們可以在訓(xùn)練過程中輕松優(yōu)化損失函數(shù)L中的隨機項。
這一屬性的另一個重要優(yōu)點是,我們可以將網(wǎng)絡(luò)轉(zhuǎn)變?yōu)樵肼曨A(yù)測器而不是均值預(yù)測器。具體來說,可以對均值進行重新參數(shù)化,使模型使用εθ(xt, t)在KL散度項中近似添加的噪聲。例如:
μθ(xt, t) = (1/√αt) (xt - (βt/√(1-αˉt)) εθ(xt, t))
最后,我們得到了損失函數(shù)Lt的目標(biāo)方程(在隨機的時間步驟上,假設(shè)噪聲是從隨機分布N(0, I)中采樣得到的):
||ε - εθ(xt, t)||^2 = ||ε - εθ(√αˉt x0 + √(1-αˉt)ε, t)||^2
其中,x0是未經(jīng)破壞的圖像,?是在時間步驟t上采樣得到的純噪聲,εθ(xt, t)是通過將近似值xt通過由θ參數(shù)化的神經(jīng)網(wǎng)絡(luò)傳遞而得到的預(yù)測噪聲。
該網(wǎng)絡(luò)通過預(yù)測噪聲與真實噪聲之間的均方誤差進行優(yōu)化。通過最小化真實誤差和預(yù)測誤差之間的距離,我們教導(dǎo)模型逐漸做出更準(zhǔn)確的近似。總而言之,這里有一系列的訓(xùn)練步驟,為我們提供了模型,如Midhjourney和穩(wěn)定擴散,可以從純噪聲中生成圖像。
圖片來自原始論文
譯者介紹
朱鋼,51CTO社區(qū)編輯,11年一線開發(fā)經(jīng)驗。目前在北京圖伽健康從事醫(yī)療軟件研發(fā)工作。
原文標(biāo)題:How Midjourney and Other Diffusion Models Create Images from Random Noise,作者:Rostyslav Demush