💡一句話定義
VAE(變分自編碼器)是一種生成模型:編碼器把輸入壓成一個機率分布(潛在空間),解碼器再從中取樣重建;訓練後就能從潛在空間隨機取樣,生成訓練集裡沒有但看起來很真實的新資料。
🎮互動:拖動 μ,看臉即時生成
中間是潛在空間 $z$:拖動紫色點 μ(或點一下)移動位置——X 軸控制嘴型(哭↔笑)、Y 軸控制眼睛與眉毛。紅色小點是實際取樣值 $z=\mu+\sigma\varepsilon$,會在 μ 附近抖動;拉大 σ 抖得更遠、生成更多變化。
🧬 變分自編碼器 (VAE) 互動演示
Encoder (編碼器)
🖼️
Input Data (X)
➡
Latent Space (潛在空間 $z$)
拖動紫色圓點 ($\mu$) 或點擊區域
➡
⚖️Autoencoder vs VAE
| 面向 | 一般自編碼器 (AE) | 變分自編碼器 (VAE) |
| 編碼成 | 一個固定向量(點) | 一個分布(均值 μ、變異 σ²) |
| 潛在空間 | 可能有空洞、不連續 | 平滑連續(被 KL 規整) |
| 能否生成 | 難,隨機取點常是雜訊 | 能,任取一點都能解出合理結果 |
| 目標 | 只求重建 | 重建 + 讓分布規整 |
🧮損失=重建 + KL(ELBO)
$$ Loss = \underbrace{\| X - \hat{X} \|^2}_{\text{重建誤差}} + \underbrace{KL\big(N(\mu,\sigma^2)\,\|\,N(0,1)\big)}_{\text{KL 散度}} $$
重建誤差讓輸出像原圖;KL 散度把潛在分布拉近標準常態 N(0,1),讓空間連續、可取樣、可插值。兩者權衡即 ELBO。
KL 太強會「後驗崩潰」(潛在變數被忽略、生成沒變化);太弱則空間不規整、難生成——要平衡。
🎲重參數化技巧
「隨機取樣」不可微分,梯度過不去。VAE 把隨機性搬到一個獨立雜訊 ε 上:
$$ z = \mu + \sigma \cdot \varepsilon, \qquad \varepsilon \sim N(0,1) $$
這樣梯度能通過 μ 與 σ 反向傳播,模型才訓練得起來。demo 裡紫色大點是 μ、紅色小點就是抖動的 z。
🌫️為什麼 VAE 生成常比較模糊?
VAE 最佳化的是像素層級的重建(常用 MSE)加 KL 約束,傾向產生「平均化」的結果,於是細節偏糊。相較之下,GAN 用對抗目標逼真度更高、細節更銳利——這也是 VAE 與 GAN 最常被拿來對比的差異。
🎯應用場景
① 生成新樣本:潛在空間隨機選點交給 Decoder,生成不在訓練集裡的人臉、角色、分子結構。
② 去噪與修復(Inpainting):學到資料分布,能過濾雜訊、補全缺失部分。
③ 異常偵測:某張圖重建誤差很大 → 不符「正常分布」,可能是瑕疵品或惡意流量。
✅自我檢測
Q1. VAE 是什麼?
一種生成模型:編碼器把輸入壓成機率分布(潛在空間),解碼器從中取樣重建;訓練後可從潛在空間取樣生成新資料。
Q2. VAE 和一般自編碼器(AE)差在哪?
AE 把輸入壓成固定向量、只求重建;VAE 編成分布(均值與變異)並要求潛在空間平滑連續,因此能生成而非只壓縮。
Q3. 損失函數由哪兩部分組成?
重建誤差(讓輸出接近原輸入)+ KL 散度(讓潛在分布接近標準常態、空間規整可取樣),兩者權衡即 ELBO。
Q4. 什麼是重參數化技巧?
取樣不可微分,改寫成 z = μ + σ·ε(ε 來自標準常態),把隨機性移到 ε,讓梯度能通過 μ 與 σ,模型才能訓練。
🎯重點整理
- 本質:把資料編成分布、可取樣生成。
- vs AE:分布 vs 固定點;能生成 vs 只重建。
- 損失:重建誤差 + KL 散度(ELBO)。
- 訓練:重參數化 z=μ+σε 讓梯度可傳。
- 特性:生成較模糊;用於生成、去噪、異常偵測。