變分自編碼器(VAE)(variational autoencoder)
/ vair-ee-AY-shun-ul AW-toh-en-koh-der /
變分自編碼器是一種神經網路,它學會把資料壓縮成一小組隱藏的旋鈕,再把它重建回來——而最關鍵的是,靠撥弄那些旋鈕去生成全新的樣本。不妨把它想成:為人臉、手寫數字、或分子,學出一個緊湊的「配方空間」。一個編碼器把每個輸入擠成寥寥幾個數字(配方);一個解碼器拿著配方,重建出一樣貌似原物的東西。用成千上萬張人臉訓練它,日後你便能把自己編出的配方餵給解碼器,憑空造出新的人臉。
使它「變分」、而非一個普通自編碼器的,是它不把一個輸入編碼成單獨一個點,而是編碼成一小團模糊的雲,並且溫和地堅持讓所有這些雲堆疊成一個光滑、井然有序的空間。這份堅持正是回報所在:由於配方空間沒有窟窿、沒有古怪的縫隙,你可以挑一個隨機的配方,或在兩個真實配方之間平滑地滑動,解碼器一路都會產出合情合理的結果——從一張臉到另一張臉的連續變形。在底層,這個「整潔空間」的目標,正是把變分推論用到一個潛變數模型上。
它為何重要:VAE曾是深度學習與機率之間一座早期而有原則的橋樑,而它那「光滑、可遊走的潛空間」的思想,支撐著現代生成建模的大部分。它誠實的局限在於品質:經典的VAE往往產出模糊、被抹平的輸出,因為那股讓空間變整潔的壓力,同時也壓抑了銳利的細節。論原始圖像的逼真度,擴散模型這類後來的方法已遙遙領先。VAE歷久彌新的價值,在於概念上的清晰,以及一個性狀良好的潛空間,而非頂尖的銳利度。
用手寫數字訓練一個VAE。每個數字被映射到一個小小二維配方空間裡的一個點;這空間會自行整理,讓1聚在一處、8聚在另一處,彼此之間過渡平滑。挑一個落在「3」區與「8」區正中間的點,把它解碼,你就得到一個可信的混血字形——一半是三、一半是八。這種平滑的「居間」感,正是VAE的招牌。
VAE那整潔的潛空間,讓你能在樣本之間平滑變形——代價則是重建結果常常偏模糊。
別在圖像品質上過度吹捧VAE:那項賦予它光滑、井然潛空間的正則化,同時也把它的輸出推向模糊。它的強項在於有結構、可遊走的表示,而更銳利的生成,則是擴散模型與基於GAN的方法的地盤。