<圖學玩家 第023篇 原創文>
Introduction
Diffusion Model已經被證實在Text-to-Image的生成上有顯著的效果,諸如OpenAI的DALL.E 2等。然而Text-to-3D由於3D Model的Dataset不足,導致直接訓練Text-to-3D的Diffusion Model相當困難。
DreamFusion跳脫這種訓練框架,利用Text-to-Image與NeRF這種Inverse Graphics的技術,來達到Text-to-3D的生成。
Diffusion Model Algorithm
Training
Diffusion Model在Training Noise Predictor時,會從目標分布中Sample一張圖片,接著在這張照片上疊加Noise。這裡可以注意到,Diffusion Model會假設一漸小的數列 (ᾱ1,ᾱ2…ᾱT),隨機疊加上對應的Noise
可以看到隨著ᾱT越大,雜訊加的就越兇狠。而整個Noise Predictor Network在做的事情,就是吃一張Noisy Image跟步驟3取樣的t作為Input,去預測步驟4取樣的雜訊。
Inference
而產生圖的過程如下圖所示。步驟4簡言之就是將一雜訊xt漸漸的Denoise回清楚的圖。這裡暗藏玄機的部分在於,每個t循環都會在最後加上一雜訊z(關於這部分,李宏毅教授在教學中有給出他的猜測)
影像生成模型的本質
不論是Diffusion Model,GAN或是VAE這類影像生成模型,他們的本質都是去Minimize影像生成模型產生的P分布與蒐集到的Image Dataset產生的 Pdata(x)分布之間的某種Divergence (本質上也就是去尋找Pθ(x)與Pdata(x)之間的Maximum Likelihood)。
式子的推導如下:
雖然我們無法得知Pθ(x),但我們可用生成模型Output出Gaussian Distribution的方式去近似,我們先以VAE為例
Maximize LogPθ(x)的過程,經一番推導,可以改用Maximize ELBO (Evidence Lower BOund)去表示:
Diffusion Model
如下所示,Diffusion Model是一個馬可夫鍊,q(xt | xt-1)可以視為Encoder,p(xt | xt+1)則可以視為Decoder。
接著我們同樣去試著Maximize log p(x),可以得到ELBO如下:
ELBO的部分就可如下展開:
把推導的最後一項放大來看:
紅框內在做的事,就是去試著讓 q(xt-1 | xt, x0)和P(x-1 | xt)越接近越好,也就是下圖的粉紅色與綠色箭頭的部分:
而我們可以利用馬可夫性質與貝式定理,將q(xt-1 | xt, x0)表示為
由於我們知道整個Encoding的過程,其實就是在加Gaussian雜訊,因此可以得到下面關係式:
更改一下符號可以表示為
t-1這個時間點的圖片同上邏輯可以得到
透過遞歸的表示,我們可以得出q(xt | x0)
而這也就是我們在Diffusion Model Algorithm中看到的Noisy Image。接著我們繼續試著找出q(xt-1 | xt, x0) (中間過程省略,讀者可以自行參考論文)
這裡我們引入新符號來表示Variance的部分
如上,由於我們可以控制q(xt-1 | xt, x0)和P(x-1 | xt)的Variance (Hyper Parameter),故整個Minimize KL Divergence的過程其實就是在縮小
q(xt-1 | xt, x0)和p(x-1 | xt)之間的Mean:
詳細推導如下:
其中q(xt-1 | xt, x0)的Mean可以表示為
透過先前的定義,將上式右邊的x0取代
我們可以得到Mean為
上式有換過符號,βt為1- αt
而這個過程,實際上就是下圖Inference中紅框內的部分。其中ε即為我們的Noise Predictor Network。
詳細推導如下: