生成式視覺:擴散與文生圖

前向擴散過程

前向擴散過程是擴散模型中容易的那一半——一種有控制的破壞行為,刻意把影像毀掉。從一張乾淨影像出發,你反覆地灑入一丁點高斯雜訊;灑得夠多次之後,畫面就與隨機靜電無法區分。關鍵在於這個過程沒有任何可學參數:它是一份事先選定的固定配方。它唯一的工作是製造訓練配對——對於任何我們想要的雜訊水準,我們都能產出一張加雜訊影像,並確切知道加入了什麼雜訊,從而給反向網路一個可以預測的目標。

數學上,前向過程是一條馬可夫鏈(每一步只依賴前一步):q(x_t | x_{t-1}) = N(x_t; sqrt(1 - beta_t) x_{t-1}, beta_t I)。用白話說,每一步你把目前的影像稍微往零收縮(乘以 sqrt(1 - beta_t)),並加入變異數為 beta_t 的高斯雜訊,其中 beta_t 是由雜訊排程設定的小數值。使用高斯分布的一個美妙後果是,你可以把所有步驟壓縮成一步:x_t = sqrt(alpha_bar_t) x_0 + sqrt(1 - alpha_bar_t) epsilon,其中 alpha_bar_t 是到第 t 步為止 (1 - beta_s) 的累積乘積,epsilon 是單一個標準高斯樣本。這個封閉形式的「跳躍」意味著訓練永遠不必逐步模擬整條鏈。

由於排程被設計成讓 x_T 基本上是純粹的 N(0, I) 雜訊、不攜帶任何關於原始影像的資訊,取樣便可以從隨機雜訊開始,而不需要知道任何真實影像。因此前向過程定義了資料分布與一個簡單、易於抽樣的雜訊分布之間的橋樑;整個學習問題就是把這座橋反向走回去。決定這座橋把影像降解得多快——也就是雜訊排程——是擴散模型中少數但影響深遠的設計決策之一。

重參數化技巧的實際運用:要得到在 1000 步中第 500 步「半加雜訊」的貓,你不需要執行 500 次加法。你只要計算一次 alpha_bar_500,抽出一個雜訊樣本 epsilon,再設 x_500 = sqrt(alpha_bar_500) (貓) + sqrt(1 - alpha_bar_500) epsilon。一行式子,任何時間步,瞬間完成。

又称
forward processnoising processdiffusion process q