深入淺出 Normalizing Flow: Generative Model不只有 GAN跟 VAE
在這幾年的類神經網路發展中, 生成模型 (generative model) 網路是很熱門的一個題目。而這之中最常被提起的則是 VAE (Variational Auto-Encoder)與 GAN (Generative Adversarial Network)。實際上,還有一種有意思生成模型方法叫 Normalizing Flow (通常簡稱NF),但可能因為他較複雜的數學原理,導致較少人知曉。
Normalizing Flow是一種 generative model的實現方法。以統計的角度來看, generative model的目標就是 modeling目標資料的分布,通常是利用 maximize likelihood estimation (MLE),或說 minimize some divergence來達成。對比 VAE與 GAN, NF是最精準貼近 MLE的方法,而且每一個步驟基本上都可以用機率與數學解釋,讓導入 prior knowledge變得更容易想像與實現。
文章難度:★★★☆☆
閱讀建議: 這篇文章是 Normalizing Flow的入門介紹,一開始會快速過一些簡單的 generative model作為背景知識,而後著重介紹 Normalzing的概念,以及其背後的相關機率原理,最後再簡單介紹幾個常用的 NF模型。在介紹相關機率原理時,因為 NF本質就是貼著機率的數學原理在走,所以這邊會牽扯到比較多數學推導。
推薦背景知識: Machine Learning, Deep Learning, Generative Model, VAE (Variational Auto-Encoder), GAN (Generative Adversarial Network), Maximize Likelihood Estimation (MLE), Density Estimation, Change of Variables, Jacobean.
Generative Model
以統計的角度來看,
生成模型 (generative model)的目標是 modeling目標資料的分布。
比如說,我們手邊有一萬張人臉的照片,但我們希望可以獲得更多人臉的照片,或者說想要依照某些情境生成更多人臉的照片。而使用 generative model來 modeling目標資料的分布,可以確保生成出來的是人臉的照片,而不是貓狗的照片,或是四不像的照片。
不考慮條件的 generative model的概念大致如下圖,首先會從一個已知的分布中採樣,將樣本放到 generative model生成目標資料,最後要讓這些生成資料的分布與真實資料的分布越接近越好。