生成式視覺:GAN 與 VAE

條件式生成對抗網路

一般的 GAN 從純雜訊生成,所以你無法向它指定要什麼——它給什麼你就收什麼。條件式 GAN 加上一個操控輸入:你告訴它「做一個 7」、「一張戴眼鏡的臉」,或「把這張素描上色」,而生成器與判別器都會拿到那條附帶資訊。如今生成是可控的:同一個模型可產生任何被要求的類別,或遵循任何條件輸入,而不再盲目取樣。

條件式 GAN(Mirza 與 Osindero,2014)以輔助資訊 y 作為兩個網路的條件——y 可以是類別標籤、屬性向量、文字嵌入,甚至是另一張影像。生成器變成 G(z, y),判別器變成 D(x, y):判別器如今不只要判斷「這是真的嗎?」,還要判斷「這是一張與 y 相符的真實影像嗎?」,因此一張真貓影像若配上標籤「狗」,就應被拒絕。目標函數是把一切都以 y 為條件的 GAN 極小極大:E[log D(x, y)] 加上 E[log(1 − D(G(z, y), y))]。這迫使生成器尊重條件,因為不相符的配對會被懲罰。

實務上,y 可以串接到 z 與特徵圖上,但表現更好的方法包括:條件式批次正規化(標籤在每一層調變批次正規化的尺度與位移,如 BigGAN)、投影判別器(projection discriminator;Miyato 與 Koyama:對標籤嵌入與影像特徵取內積,而非串接),以及輔助分類器 GAN,AC-GAN(判別器同時預測類別)。條件式 GAN 支撐起類別條件合成(BigGAN)、影像對影像轉換(pix2pix 即是以輸入影像為條件的條件式 GAN),以及文字生成影像。

MNIST 上的條件式 GAN 接受 (z, 數字標籤):把標籤固定為「3」並改變 z,可得到 3 的多種不同手寫風格;把 z 固定、讓標籤從 0 掃到 9,則得到以「相同風格」寫成的各個數字——直接證明標籤控制內容、z 控制風格。

條件式 GAN 的好壞,取決於它被訓練去強制的那種對齊——若判別器的條件作用很弱(例如天真地串接),生成器可能產生忽略 y 的逼真影像。投影判別器與 AC-GAN 強化了這種標籤匹配的壓力,這也是它們能顯著提升類別保真度的原因。

又称
cGANconditional GAN