深入淺出 Normalizing Flow: Generative Model不只有 GAN跟 VAE

Jia-Yau Shiau
AI Blog TW
Published in
18 min readSep 14, 2021

--

在這幾年的類神經網路發展中, 生成模型 (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變得更容易想像與實現。

Cover made with Canva. (圖片來源)

文章難度:★★★☆☆
閱讀建議: 這篇文章是 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生成目標資料,最後要讓這些生成資料的分布與真實資料的分布越接近越好。

--

--