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

擴散模型

想像你拿一張清晰的照片,一格一格地慢慢攪入靜電雜訊(隨機雜訊),直到畫面只剩下純粹的電視雪花。擴散模型(diffusion model)學會的是把這部影片倒著播放:從雪花開始,反覆地抹去一點雜訊,直到一張連貫的影像浮現。關鍵的訣竅在於:加入雜訊是輕而易舉、沒有任何可學參數的;而移除雜訊很困難——所以我們只訓練神經網路去做困難的那個方向,而且讓它走很多個微小、容易的步驟,而不是一步登天。

精確地說,擴散模型在一連串時間步 t = 0, 1, ..., T 上定義了兩個過程。前向過程(forward process)q 依照一個固定的排程,逐步加入少量高斯(鐘形曲線)雜訊,把乾淨影像 x_0 漸漸破壞成雜訊 x_T。反向過程(reverse process)p_theta 由一個帶有參數 theta 的神經網路執行,學習一次只還原一步:給定較雜的影像 x_t,預測較乾淨影像 x_{t-1} 的分布。因為每個前向步驟只對影像擾動一點點,每個反向步驟便近似高斯,因此是可學習的。實務上,網路被訓練去預測「被加入的雜訊」(稱為 epsilon 預測),這在數學上與預測乾淨影像或預測分數(score,對數密度的梯度)是可互換的。

擴散模型在大約 2021 至 2022 年取代了 GAN(生成對抗網路),成為高保真影像合成的主流方法。它之所以勝出,是因為訓練只是一個簡單而穩定的迴歸損失,沒有對抗式的極小極大賽局;它能良好地覆蓋資料分布(大幅減少模式崩潰,也就是生成器只產出少數幾種輸出的問題);而且它隨資料與算力可預期地擴展。其主要缺點是生成緩慢,因為取樣需要把許多個依序的網路評估串接起來;這也催生了快速的確定性取樣器(DDIM)以及潛在空間的變體(潛在擴散、Stable Diffusion)。實質上,每一個現代的文生圖系統,核心都是一個擴散模型。

要生成一張 512x512 的圖像:先把 x_T 抽樣為純高斯雜訊,接著從 t = T 迴圈遞減到 1,每次執行網路估計 x_t 中的雜訊,並減去經過校準的一部分,得到 x_{t-1}。在大約 50 步之後抵達 x_0,也就是一張乾淨的合成影像。每一步都重複使用同一組網路權重;改變的只有時間步這個輸入。

一個常見的誤解是以為網路「一次就去完雜訊」。其實不然——單次前向傳遞只給出對雜訊(或乾淨影像)的一個估計,品質來自於把這個估計在許多步驟上反覆迭代。要求一個這樣訓練出來的模型從純雜訊一步跳到最終影像,通常只會得到一張模糊的平均影像;要恢復保真度,正是多步反向鏈(或現代的少步蒸餾技術)的用途所在。

又稱
denoising diffusion modelDPM