來源:3D視覺工坊
1. 引言
擴散模型的迅速崛起是過去幾年機器學習領域最大的發展之一。在這本簡單易懂的指南中,學習你需要知道的關于擴散模型的一切。
擴散模型是生成模型,在過去的幾年中已經獲得了顯著的流行,并且有很好的理由。20世紀20年代發表的幾篇開創性論文單獨的向世界展示了擴散模型的能力,比如擊敗GANs關于圖像合成。
鑒于最近擴散模型的成功浪潮,許多機器學習實踐者肯定對它們的內部工作方式感興趣。在本文中,我們將研究擴散模型的理論基礎,關于擴散模型的更直觀的解釋,請隨意查看我們的文章。
2. 擴散模型簡介
擴散模型是生成模型,意味著它們被用來生成與它們被訓練的數據相似的數據?;旧?,擴散模型的工作原理是,通過連續添加高斯噪聲,銷毀訓練數據。然后學習去噪的過程,來恢復數據。經過訓練后,我們可以通過所學習的去噪過程,使用擴散模型來生成數據。
更具體地說,擴散模型是一種隱變量模型,它使用固定的馬爾可夫鏈映射到隱空間。該鏈逐漸向數據中添加噪聲,以獲得近似的后驗概率q(x1:T|x0),其中x1、….、x是與x0具有相同維數的潛變量。在下圖中,我們看到這樣的馬爾可夫鏈表現為圖像數據。
最終,圖像會漸近地轉化為純高斯噪聲。訓練擴散模型的目標是學習反向過程--即訓練p(xt-1|xt)。通過沿著這條鏈反向遍歷,我們可以生成新的數據。
3. 擴散模型的好處
如上所述,近年來對擴散模型的研究呈爆炸式增長。受非平衡熱力學的啟發,擴散模型目前產生最先進的圖像質量,其示例如下所示:
除了尖端的圖像質量,擴散模型還有許多其他好處,包括不需要對抗性訓練。對抗性訓練的困難是有據可查的;而且,如果存在非對抗性的替代方案,表現和訓練效率相當,通常最好利用它們。關于培訓效率的話題,擴散模型也有額外的好處可擴展性和并行性。
雖然擴散模型似乎是憑空產生結果,但有許多仔細而有趣的數學選擇和細節為這些結果提供了基礎,最佳實踐仍在文獻中不斷發展。現在讓我們更詳細地看看支撐擴散模型的數學理論。
4. 擴散模型-深入
如上所述,擴散模型包括正向過程(或者擴散過程),其中一個數據(通常是一個圖像)是漸進的噪聲,和翻轉過程(或者反向擴散過程),其中噪聲從目標分布轉換回樣本。
當噪聲水平足夠低時,正向過程中的采樣鏈轉換可以設置為條件高斯型。將這一事實與馬爾可夫假設相結合,導致正向過程的簡單參數化:
其中β是方差表,(學習或固定),如果行為良好,確保xT是近似的各向同性高斯為足夠大的T。給定馬爾可夫假設,潛在變量的聯合分布是高斯條件鏈轉移的產物:
如前所述,擴散模型的“魔法”在于逆向過程。在訓練過程中,模型學習逆向擴散過程以生成新數據。從純高斯開始,噪聲p(xT):=N(xT, 0, I),模型學習聯合分布p(x0:T)為
其中學習高斯躍遷的時間相關參數。特別要注意的是,馬爾可夫公式斷言給定的反向擴散轉移分布僅取決于前一時間步(或后一時間步,取決于你如何看待它):
5. 訓練
擴散模型通過以下方式訓練找到使訓練數據的可能性最大化的反向馬爾可夫轉移。實際上,訓練等價地包括最小化負對數似然的變分上限。
我們試圖根據 Kullback-Leibler(KL)散度重寫 Lvlbin。KL散度是一個不對稱統計距離度量一個概率分布P與參考分布0的差異。我們感興趣的是制定KL散度的Lvlbin 項,因為我們的馬爾可夫鏈中的轉移分布是正態分布,正態分布之間的KL 散度具有封閉形式。
KL散度是什么?連續分布KL發散的數學形式為
雙線表示該功能是不關于它的參數是對稱的。
下面你可以看到不同分布的KL散度P(藍色)來自參考分布Q(紅色)。綠色曲線表示上述KL散度定義中積分內的函數,曲線下的總面積表示KL散度的值P從Q在任何給定的時刻,也是用數字顯示的一個值。
如前所述,根據KL的差異幾乎完全重寫Lvlb是可能的:
在 Lt-1中,將前向過程的后驗概率x0條件化,得到一個易于處理的公式,使得所有 KL散度都是高斯之間的比較。這意味著可以使用封閉形式的表達式而不是蒙特卡羅估計來精確計算散度
6. 模型選擇
隨著我們的目標函數的數學基礎的建立,我們現在需要就如何實現我們的擴散模型作出幾個選擇。對于前向過程,唯一需要的選項是定義方差時間表,其值通常在前向過程中增加。
對于反向過程,我們應選擇高斯分布參數化/模型架構。請注意Diffusion模型的高度靈活性--我們架構的唯一要求是其輸入和輸出具有相同的維數。
我們將在下面更詳細地探討這些選擇的細節。
前向流程與LT
如上所述,關于前向過程,我們必須定義方差進度表。特別是,我們將它們設置為時間相關的常數,忽略了它們可以被學習的事實。無論選擇什么特定的值,方差表固定的事實導致LT成為我們可學習參數集的一個常數使我們可以在訓練時忽略它。
逆向過程和L 1:T -1
現在我們討論定義反向過程所需要的選擇,從上面我們定義的反向馬爾可夫轉換為高斯:
我們簡單地設置:
也就是說,我們假設多元正態分布是獨立正態分布的乘積,這些獨立正態分布具有相同的方差,方差值可以隨時間變化。我們將這些方差設定為與我們的正向過程方差表相等。
其中差值中的第一個項是xt和x0的線性組合,該組合取決于方差。時間表決定這個函數的確切形式與我們的目的無關。最直接的參數化是預測擴散后均值。重要的是,預測任何給定時間步數的噪聲成分會產生更好的結果。
這導致了下面的替代損失函數,能帶來更穩定的訓練和更好的結果:
還要注意擴散模型的這種公式化與基于朗之萬動力學的分數匹配生成模型的聯系。事實上,似乎擴散模型和基于分數的模型可能是同一枚硬幣的兩面,類似于基于波的量子力學和基于矩陣的量子力學的獨立和并行發展,揭示了同一現象的兩個等效公式。
7. 網絡體系結構
雖然我們簡化的損失函數試圖訓練一個模型。我們還沒有定義這個模型的架構。請注意僅僅對模型的要求是它的輸入和輸出維數相同。鑒于這種限制,圖像擴散模型通常用類似U-Net的架構來實現就不足為奇了。
8. 反向過程解碼器和L0
沿著相反過程的路徑由連續條件高斯分布下的許多變換組成。在反向過程的最后,回想一下我們試圖生成一個圖像,由整數像素值組成。因此,我們必須設計一種方法來獲得離散(對數)可能性對于所有像素中的每個可能的像素值。
實現這一點的方法是將反向擴散鏈中的最后一個轉換設置為獨立離散解碼器。為了確定給定圖像的可能性,我們首先在數據維度之間強加獨立性:
其中,D是數據的維數,上標i表示提取一個坐標。現在的目標是確定在給定像素的分布下,每個整數值對給定像素的概率。在時間t=1時,微帶噪聲圖像中對應像素的可能值:
其中,t=1的像素分布由以下多元高斯分布得出,其對角線協方差矩陣允許我們將分布分解為多元高斯分布的乘積,對每個數據維度:
我們假設圖像由 0、1、…255(與標準 RGB圖像相同)中的整數組成,這些整數已被線性縮放為 【-1,1】。然后,我們將實線分解為小的“桶”,其中,對于給定的縮放像素值x,該范圍內的桶為【x-1/255,x+1/256】。給定x1中相應像素的一元高斯分布像素值x的概率是圍繞x中心桶內的一元高斯分布的面積。推薦課程:機械臂抓取從入門到實戰課程(理論+源碼)。
您可以在下面看到每個桶的區域以及它們的平均-0高斯概率,在這種情況下,平均像素值為255/2(一半亮度)。紅色曲線表示t=1圖像中特定像素的分布,而區域給出t=0圖像中相應像素值的概率。
給定每個像素的t=0像素值,p(x0|x1)的值就是它們的乘積。這個過程簡潔地用下面的方程來描述:
給出p(xo|x1)的這個方程式,我們可以計算Lvb的最后一個項,這個項不是用KL散度來表示的:
9. 最終目標
正如在上一節中所提到的,預測圖像在給定時間步數下的噪聲成分會產生最佳結果。最終,他們使用以下目標:
因此,我們的擴散模型的訓練和采樣算法可以簡潔地體現在下圖中:
10. 擴散模型總結
我們詳細探討了擴散模型的理論,很容易陷入數學細節,因此我們在下面指出了這一節中最重要的幾點,以便從鳥瞰的角度保持我們的方向:
1.我們的擴散模型參數化為馬爾可夫鏈,這意味著我們的潛變量x1,…,xT僅依賴于之前(或后續)時間步。
2.在馬爾可夫鏈的過渡分布是高斯,其中的正向過程需要方差調度,和反向過程的參數被學習。
3.擴散過程確保xT是漸近分布的各向同性高斯。
4.在我們的情況下,方差時間表是固定的,但也可以學習。對于固定的時間表遵循幾何級數可能比線性級數提供更好的結果。在這兩種情況下,方差通常隨著時間的推移而增加。
5.擴散模型非常靈活,允許使用輸入和輸出維數相同的任何體系結構,許多實現使用類似于U-Net的體系結構。
6.訓練目標是使訓練數據的可能性最大化。這表現在調整模型參數以最小化負對數似然的變分上界。
7.由于我們的馬爾可夫假設,目標函數中幾乎所有的項都可以轉換為KL散度。這些值變得可信的計算,因為我們使用高斯,因此省略了執行蒙特卡羅近似的需要。
8.最終,使用一個簡化的訓練目標來訓練一個預測給定潛變量的噪聲分量的函數會產生最佳和最穩定的結果。
9.作為反向擴散過程的最后一步,使用離散解碼器來獲取像素值之間的似然率。
-
噪聲
+關注
關注
13文章
1125瀏覽量
47517 -
機器學習
+關注
關注
66文章
8438瀏覽量
133084 -
擴散模型
+關注
關注
0文章
5瀏覽量
5568
原文標題:大白話告訴你擴散模型是什么,有什么用?
文章出處:【微信號:3D視覺工坊,微信公眾號:3D視覺工坊】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論