KL 散度
KL 散度衡量一個機率分布與另一個有多不同——大略說,就是當你相信分布 Q、但現實其實遵循 P 時,你所承受的額外「驚訝度」。在變分自編碼器中它以正則化項的形式出現:一個懲罰,把編碼器對每張影像的潛在分布推得貼近那個簡單的先驗(標準高斯)。若沒有它,編碼器大可把每張影像的編碼撒進各自遙遠、緊密的小角落,使角落之間的空間空無一物,導致隨機樣本解碼出無意義的結果。KL 項把所有編碼趕進一個共享、平滑、可取樣的區域。
精確地說,KL(Q || P) 等於對從 Q 抽出的 z 取期望值的 log Q(z) 減去 log P(z);它恆為非負,唯有 Q = P 時才為零,且不對稱(KL(Q||P) 一般不等於 KL(P||Q))。在變分自編碼器中,Q 是 q_φ(z|x) = N(μ(x), σ²(x)),P 是 p(z) = N(0, I),而對兩個高斯分布,KL 有封閉形式:對每個潛在維度,它等於 (μ² + σ² − 1 − log σ²) 的二分之一,再對所有維度求和。這正是 ELBO 的第二項;當 μ = 0 且 σ = 1(編碼分布等於先驗)時它的代價為零,而當編碼飄離或過度自信(σ 非常小)時則增大。
KL 項掌控著一個資訊瓶頸:每一奈特的 KL,就是編碼被允許攜帶之關於 x 的一奈特資訊。如果解碼器強大到不必用 z 就能重建 x(例如自迴歸解碼器),最佳化過程可能把 KL 壓到零——編碼器對每張影像都輸出先驗,潛在變數遂變得毫無用處。這種失敗稱為後驗崩潰(posterior collapse)。緩解之道包括:KL 退火或暖身(緩慢調升 KL 權重)、自由位元下限(free-bits,對低於每維小額預算的 KL 不予懲罰)、削弱解碼器,或使用 β-VAE 旋鈕(β < 1 以抑制崩潰,β > 1 以鼓勵解耦但有崩潰之險)。
由於 KL 不對稱,變分自編碼器所選用的 KL(q||p)(即「逆向」KL)是尋眾數(mode-seeking)/強制歸零的:近似後驗寧可涵蓋不足,也不願在先驗沒有質量的地方放置質量。這正是變分自編碼器樣本相較真實資料可能顯得過度平滑的結構性原因之一。