生成式視覺:GAN 與 VAE

生成對抗網路

GAN 訓練兩個互相競爭的網路,宛如偽造者對上偵探。生成器是偽造者:它把隨機雜訊轉成假影像,並設法讓它們與真品難以區辨。判別器是偵探:它端詳一張影像,判斷它是真正的訓練影像,還是生成器造出的贗品。當偵探越來越擅長揪出贗品,偽造者就被迫造出更好的贗品,反之亦然。在理想的終局,贗品好到偵探只能用猜的。

精確地說,令 G(z) 把從 p(z) 抽出的雜訊向量 z 映射成一張影像,並令 D(x)(值域 [0,1])輸出 x 為真的機率。兩者就一個價值函數玩雙人極小極大(minimax)賽局:V(D,G) = 對真實 x 取期望值的 log D(x),加上對 z 取期望值的 log(1 − D(G(z)))。判別器最大化 V(給真品高 D、給贗品低 D);生成器最小化它(讓 D(G(z)) 變高)。Goodfellow 等人(2014)證明,對固定的最佳判別器而言,生成器的目標會化簡為最小化 p_data 與生成器分布 p_g 之間的 Jensen–Shannon 散度,其唯一的全域最佳解為 p_g = p_data——此時 D 處處恆等於 ½。

實務上,兩個網路以交替的梯度步更新,這相當微妙:這是一個目標會移動、非定態的最佳化,而非對單一損失做下降,因此可能振盪、發散或崩潰。已知問題包括:當判別器太強時生成器梯度消失(以非飽和損失修正)、模式崩潰(生成器輸出缺乏變化),以及對架構與學習率的高度敏感。這個領域的諸多進展——DCGAN 的架構準則、Wasserstein GAN 更好的距離、頻譜正規化(spectral normalization)、漸進式成長(progressive growing)、StyleGAN、自注意力與 BigGAN——大抵就是一部「如何讓這場賽局穩定且能在高解析度下訓練」的歷史。

以「兩個彼此分開的點群」作為目標分布,觀察一個二維 GAN:早期生成器的樣本是一團模糊的斑塊,判別器輕易就能區分;訓練後生成器的樣本端正地落在兩個點群上,判別器的準確率掉到約 50%——這正是收斂的標誌。

GAN 給你的是一個取樣器,而非密度——你無法問它「這張影像的機率有多大?」。它預設也沒有編碼器(要把一張給定的真實影像映回它的潛在 z,需要 GAN 反演(GAN inversion)之類的額外機制)。自 2021 年前後起,擴散模型已在許多影像合成基準上追平或超越 GAN,不過 GAN 仍因單步快速取樣與銳利結果而受重視。

又称
GAN