Latent Variable Models:加入看不見的變數
Autoregressive model 算機率容易,但取不出特徵。這講加入看不見的潛在變數 \(\mathbf z\):用簡單的 \(p(\mathbf x\mid\mathbf z)\) 拼出複雜的 \(p(\mathbf x)\),順便得到可解釋的特徵。代價是 \(p(\mathbf x) = \int p(\mathbf x,\mathbf z)\,d\mathbf z\) 算不出來。解法是一條推導鏈:Monte Carlo → importance sampling → 取 log 後用 Jensen 不等式 → ELBO,而 ELBO 在 \(q\) 等於真實後驗時恰好等號成立。
讀完這頁你應該能夠
- 說明潛在變數的兩個動機:用簡單條件分佈組出複雜邊際分佈,以及從 \(p(\mathbf z\mid\mathbf x)\) 取得特徵。
- 寫出 GMM 和 VAE 的生成過程,並說明 VAE 為什麼是「無限多個高斯的混合」。
- 解釋為什麼 \(\log p_\theta(\mathbf x) = \log\sum_{\mathbf z}p_\theta(\mathbf x,\mathbf z)\) 難以計算和微分。
- 寫出 importance sampling 估計量,說明它不偏、以及 \(q\) 該怎麼選。
- 用 Jensen 不等式推導 ELBO,並證明 \(q = p(\mathbf z\mid\mathbf x)\) 時等號成立。
- 寫出 \(\log p(\mathbf x) = \text{ELBO} + D_{\mathrm{KL}}(q\Vert p(\mathbf z\mid\mathbf x))\),並說明它和 EM 演算法的關係。
前置知識檢查
- 第 2 講:Bayes net 的 \(Z\to X\)、GMM、VAE 的生成過程(Demo D)
- 第 4 講:KL divergence、entropy \(H(q)\)、Jensen 不等式、Monte Carlo 估計的不偏性
- Bayes rule:\(p(\mathbf z\mid\mathbf x) = p(\mathbf x\mid\mathbf z)p(\mathbf z)/p(\mathbf x)\)
- 邊際化:\(p(\mathbf x) = \sum_{\mathbf z}p(\mathbf x,\mathbf z)\)(連續時是積分)
- 凹函數:\(\log\) 的圖形向下彎
本頁的投影片內容都對照過投影片圖片;標「出處」的補充來自官方講義、Kingma & Welling〈An Introduction to Variational Autoencoders〉(arXiv 1906.02691v3)的 TeX 原文,以及 Locatello et al. (2019)。
01為什麼要潛在變數
回顧 autoregressive model 的優缺點:01:06
要選順序;生成是逐步的(即使 Transformer 訓練能平行);無法非監督地學到特徵。
以人臉資料集為例,影像的變化來自性別、年齡、姿勢、髮色、眼睛顏色等因素。如果有這些標註,可以分別建模(條件化之後比較簡單),但通常只有圖片,這些因素是潛在的(latent)。02:43
投影片 4–5 的圖:左邊是一格格的人臉照片(CelebA 風格)。右邊是一張 Bayes net:上排白色節點 Gender、Ethnicity、Eye color、Hair color、Pose,箭頭都指向下方灰色的 Image 節點。灰色代表觀測得到,白色代表觀測不到。
想法:明確加入一組潛在變數 \(\mathbf z\) 來表示這些變化因素。04:16
- 資料中只觀測到 \(\mathbf x\)(像素),\(\mathbf z\) 對應高層特徵。
- \(\mathbf z\) 選得好,\(p(\mathbf x\mid\mathbf z)\) 會比 \(p(\mathbf x)\) 簡單得多:條件化在某一群之後,剩下的變化很少。06:53
- 訓練好之後,可以用 \(p(\mathbf z\mid\mathbf x)\) 推回特徵,例如 \(p(\text{EyeColor}=\text{Blue}\mid\mathbf x)\)。這就是第 1 講「反向圖學」的具體版本。07:23
- 困難:要手動指定這些條件分佈非常難。
「後驗」\(p(\mathbf z\mid\mathbf x)\) 是什麼?怎麼算?
模型定義的是生成方向:先抽 \(\mathbf z\),再抽 \(\mathbf x\)。\(p(\mathbf z)\) 叫先驗(prior,看到資料之前對 \(\mathbf z\) 的信念),\(p(\mathbf z\mid\mathbf x)\) 叫後驗(posterior,看到 \(\mathbf x\) 之後對 \(\mathbf z\) 的信念)。用 Bayes rule 反推:
分子容易算(照著模型定義);分母就是這講的大麻煩 \(p(\mathbf x)\)。所以算後驗和算 likelihood 一樣難。官方講義指出,對任何 \(\mathbf z\) 都有 \(p_\theta(\mathbf x) = p_\theta(\mathbf x\mid\mathbf z)p(\mathbf z)/p_\theta(\mathbf z\mid\mathbf x)\),所以只要能算後驗,就能算 likelihood,反之亦然。出處:CS236 notes, VAE 章。
02深度潛在變數模型
不再手動設計有語意的 Bayes net,改用神經網路:08:24
- \(\mathbf z\sim\mathcal N(\mathbf 0, I)\)
- \(p(\mathbf x\mid\mathbf z) = \mathcal N\big(\boldsymbol\mu_\theta(\mathbf z), \Sigma_\theta(\mathbf z)\big)\),\(\boldsymbol\mu_\theta,\Sigma_\theta\) 是神經網路
投影片 6 的圖:左邊是 z → x 的兩節點圖;右邊是一個全連接網路,底下一排是 z、頂端連到一張人臉,表示網路把 z 映射成影像的參數。
- \(\mathbf z\) 沒有預先指定的語意。我們希望訓練後它會對應到有意義的變化因素,這是非監督式表示學習。特徵一樣用 \(p(\mathbf z\mid\mathbf x)\) 取得。
- 這個問題本質上定義不清(ill-posed):「有意義的結構」到底是什麼?沒有保證。09:59
課堂問答整理
- \(\mathbf x\) 是 autoregressive 生成的嗎?這裡不是,\(p(\mathbf x\mid\mathbf z)\) 只是一個高斯。也可以換成 autoregressive model 得到更有彈性的模型(「混搭」),但 VAE 的設計是讓它保持簡單。11:36
- 每個 \(\mathbf z\) 用不同的網路嗎?不是,同一組網路,餵不同的 \(\mathbf z\) 得到不同輸出。13:11
- 怎麼取樣?很容易:抽 \(\mathbf z\sim\mathcal N(0,I)\),送進兩個網路得到平均和共變異數,再從那個高斯抽 \(\mathbf x\)。難的是算 \(p(\mathbf x)\),這是本講的「no free lunch」。16:49
- \(\mathbf z\) 的維度?是超參數,通常遠小於 \(\mathbf x\)。但之後會看到 diffusion model 的 \(\mathbf z\) 和 \(\mathbf x\) 維度相同,這會帶來好的計算性質。37:30
- 先驗一定要是標準高斯嗎?不一定,只要容易取樣就好(均勻分佈也行)。可以用 autoregressive 先驗增加彈性,或若知道有 10 類,加入一個 categorical 變數。34:24 38:30
- \(\mathbf z\) 會對應到「髮色」「眼睛顏色」嗎?不保證。MLE 只要求把資料擬合好。Disentangled representation learning 這個領域專門研究怎麼讓潛在變數更有意義,但有定理證明一般情況下做不到,因為問題本身定義不清。60:51
- 有部分標籤怎麼辦?有標籤的資料點直接代入 \(\mathbf z\) 的真值、不用求和,就是半監督學習,也能引導潛在變數往想要的方向。61:56
「不可能做到 disentanglement」的定理是什麼?
老師提到的定理應該是 Locatello et al. (2019)〈Challenging Common Assumptions in the Unsupervised Learning of Disentangled Representations〉(ICML 2019 best paper)。大意是:在沒有任何歸納偏誤(對模型或資料的額外假設)的情況下,純非監督地學出 disentangled 表示是不可能的。因為對同一個資料分佈,存在無限多種潛在變數的「旋轉」或重組都能產生一模一樣的 \(p(\mathbf x)\),光看資料無法分辨哪一種才是「髮色是一個維度」。
直覺例子:\(\mathbf z\sim\mathcal N(0,I)\) 是各向同性的,把 \(\mathbf z\) 旋轉任意角度後分佈完全不變。decoder 只要跟著反向旋轉,\(p(\mathbf x)\) 就一模一樣,但每一維的「意義」全變了。
論文的 Theorem 1 把這個直覺寫成一般的形式:若 \(\mathbf z\) 的分佈可分解(例如標準高斯),就存在無限多個雙射 \(f\),讓 \(f(\mathbf z)\) 和 \(\mathbf z\) 的分佈完全相同,但 \(f(\mathbf z)\) 的每一維都和 \(\mathbf z\) 的每一維糾纏在一起;旋轉只是其中一個例子。論文也訓練了超過 12,000 個模型做大規模實驗。這部分在第 15 講評估潛在表示時會再出現。
出處:Locatello et al. (2019), arXiv 1811.12359, Theorem 1(已對照原文)。
03GMM:最淺的潛在變數模型
Bayes net \(\mathbf z\to\mathbf x\),沒有神經網路:17:50
生成:先抽一個成分 \(k\),再從那個高斯抽一個點。每個成分的平均和共變異數直接查表,彈性最大,但成分數一多就無法擴展。35:27
投影片 7–8 的圖:(1) 三個彩色橢圓(μ₁、μ₂、μ₃)畫在 x₁–x₂ 平面上。(2) Old Faithful 間歇泉資料的三個面板:原始資料散佈圖(橫軸噴發持續時間、縱軸兩次噴發的間隔,明顯分成兩團);用單一高斯擬合時,橢圓蓋住兩團中間沒有資料的地方;用兩個高斯擬合時,紅藍兩個橢圓各包住一團。19:54
- 分群:後驗 \(p(z\mid\mathbf x)\) 告訴你資料點屬於哪個成分。Old Faithful 的例子中,就是判斷這次噴發屬於哪一型。
- 非監督學習:希望從沒有標籤的資料學到結構,但「好的分群」沒有唯一定義,所以是 ill-posed。21:59
投影片 9–11 的圖:一團灰色的二維資料點;用三成分 GMM 擬合後,點依後驗 \(P(z=i\mid\mathbf x)\) 塗成橘、綠、紅三色。最後一張是 MNIST 在二維潛在空間中的投影,點依真實數字類別上色(模型訓練時看不到類別),同一數字大多聚在一起,有些數字(例如 2)分成兩群,可能對應不同寫法。23:29
04另一個動機:混合讓模型更有表達力
投影片 12 的圖:藍、橘、綠三條鐘形曲線,平均和寬度各不同;疊加後的紅色曲線有多個峰和肩部,形狀比任何單一高斯都複雜。27:33
VAE:無限多個高斯的混合
把 \(\mathbf z\) 從有限個類別換成連續的高斯,成分數就變成無限多個,求和變成積分:29:07
投影片 13 給了一個具體的小例子(\(\mathbf x\) 是二維):
- 代價:GMM 中每個成分的平均和共變異數可以任意查表;VAE 中它們不能任意,必須是神經網路對 \(\mathbf z\) 的輸出。30:13
- 共變異數取 exp 是為了保證正值(半正定),對角是為了簡單,都是建模選擇。40:32
- 即使 \(p(\mathbf x\mid\mathbf z)\) 很簡單,邊際 \(p(\mathbf x)\) 可以非常複雜。第 2 講的 Demo D 畫過這件事。
05代價:邊際機率算不出來
先看一個直覺的例子:缺了上半部的圖
假設訓練時有些像素遺失了(例如上半部),而我們有一個聯合分佈模型 \(p(\mathbf X,\mathbf Z;\theta)\)(例如 PixelCNN),\(\mathbf X\) 是看得到的、\(\mathbf Z\) 是看不到的。看到 \(\bar{\mathbf x}\) 的機率是41:04
投影片 15 的圖:三張黑白手寫數字,上半部被塗成綠色並標上問號。要算機率,就得考慮所有可能填滿綠色區域的方式。
聯合機率容易算(chain rule 乘起來就好),但必須把所有可能的補法加總,數量太多。VAE 也一樣,只是 \(\mathbf z\) 連續,加總變成積分。44:44
部分觀測資料的 MLE
資料集 \(\mathcal D = \{\mathbf x^{(1)},\dots,\mathbf x^{(M)}\}\),每筆只看得到 \(\mathbf X\),\(\mathbf Z\) 永遠看不到。Maximum likelihood 的目標:48:58
- 30 個二元潛在變數,\(\sum_{\mathbf z}\) 就有 \(2^{30}\approx10^9\) 項。連續變數的 \(\int\) 通常也算不出來。50:01
- 梯度 \(\nabla_\theta\) 一樣難算。
- 需要近似,而且必須很便宜:每個訓練資料點每次更新都要算一次。50:32
為什麼數值積分也不行?
一維積分用格點法很容易:取 100 個點相加。但 \(d\) 維積分在每一維都取 100 個點,總共要 \(100^d\) 個點。\(d=10\) 就是 \(10^{20}\) 個,完全不可行。這是維度災難在積分上的版本。Monte Carlo 的誤差以 \(1/\sqrt{T}\) 下降,和維度無關(第 4 講),所以高維積分幾乎只能靠抽樣。問題在於變異數可能非常大,這就是下一節的主題。
06Naive Monte Carlo 與 importance sampling
第一次嘗試:均勻亂猜
把總和寫成對均勻分佈的期望,再用樣本平均近似:51:34
理論上可行(不偏),實際上不行:大多數隨機補法根本不合理,\(p_\theta(\mathbf x,\mathbf z)\) 極小;少數合理的補法機率很大,但均勻亂抽幾乎永遠抽不到。變異數大到沒用。54:40
第二次嘗試:importance sampling
改從一個可以自選的分佈 \(q(\mathbf z)\) 抽樣,乘除同一個 \(q(\mathbf z)\):63:29
- 對任何 \(q\) 都是不偏估計(只要 \(q\) 在 \(p_\theta(\mathbf x,\mathbf z)>0\) 的地方也大於 0)。66:40
- 好的 \(q\):常常抽到在 \(p_\theta(\mathbf x,\mathbf z)\) 下合理的補法。理想上是給定 \(\mathbf x\) 的 \(\mathbf z\),也就是 \(q\) 應該依賴 \(\mathbf x\)。65:37
最好的 q 是什麼?(課堂沒明講,但這是 ELBO 會「剛好等號」的原因)
估計量的每一項是比值 \(w(\mathbf z) = p_\theta(\mathbf x,\mathbf z)/q(\mathbf z)\)。如果選 \(q(\mathbf z) = p_\theta(\mathbf z\mid\mathbf x) = p_\theta(\mathbf x,\mathbf z)/p_\theta(\mathbf x)\),則
每一項都恰好等於答案,變異數為 0,抽一個樣本就夠了。當然,能從後驗抽樣的話本來就會算 \(p_\theta(\mathbf x)\) 了,所以這只是理想。但它告訴我們:\(q\) 越接近後驗,估計越準。第 8 節會看到 ELBO 的緊度也是由同一件事決定。
反過來,如果 \(q\) 在某些 \(p_\theta(\mathbf x,\mathbf z)\) 很大的地方幾乎是 0,\(w\) 會偶爾爆出巨大值,變異數極大。這就是均勻亂猜失敗的原因。
出處:Kingma & Welling (2019) §2.6「Estimation of the Marginal Likelihood」:訓練好 VAE 之後,就是用這個 importance sampling 估計量(以 encoder 當 \(q\))估計 \(\log p_\theta(\mathbf x)\),樣本數 \(L\to\infty\) 時收斂到真值;\(L = 1\) 時正好是 ELBO 的估計量。
麻煩:我們要的是 log
訓練要的是 \(\log p_\theta(\mathbf x)\)。直接對估計量取 log:67:15
問題:期望的 log 不等於 log 的期望。
取了 log 之後估計就有偏差了。幸好偏差的方向是可以確定的。
07Jensen 不等式與 ELBO
\(\log\) 是凹函數:\(\log(px + (1-p)x') \ge p\log x + (1-p)\log x'\)。推廣成期望就是 Jensen 不等式:68:49
投影片 21 的圖:一條向下彎的 log 曲線,橫軸標了 f(z₁)、f(z₂) 兩點。兩點之間的紅色直線段(取 log 後再平均)落在曲線(先平均再取 log)的下方。
取 \(f(\mathbf z) = p_\theta(\mathbf x,\mathbf z)/q(\mathbf z)\):
- 左邊是想要的 log 邊際機率(evidence:看到的資料 \(\mathbf x\) 的機率),右邊是可以用 \(q\) 的樣本估計的量。73:30
- 最大化下界,真正的目標至少不會比下界低,通常也會跟著上升。70:51
- 所以策略是:最佳化 ELBO。\(q\) 的選擇決定下界有多緊。72:24
08什麼時候 ELBO 是緊的
把 ELBO 展開:78:12
當 \(q = p(\mathbf z\mid\mathbf x;\theta)\) 時等號成立(投影片 24 的推導;Kingma & Welling 2019 §2.2 用同樣的拆法證明缺口恰好是 \(D_{\mathrm{KL}}(q\Vert p(\mathbf z\mid\mathbf x))\),見第 9 節):78:42
- 這確認了 importance sampling 的直覺:最好的猜法是用模型本身的後驗分佈,選「可能的補法」。
- 這正是 EM 演算法的 E-step 在做的事。79:43
- 問題:對 VAE 來說,後驗要「反轉神經網路」:找出哪些 \(\mathbf z\) 餵進 decoder 會產生這個 \(\mathbf x\)。一般很難算,只能近似。下一講會同時最佳化 \(p\) 和 \(q\)。80:13
EM 演算法:用 ELBO 的角度看(課堂只提了名字)
EM 交替最大化同一個目標 \(\mathcal L(q,\theta) = \mathbb E_q[\log p_\theta(\mathbf x,\mathbf z)] + H(q)\):
- E-step:固定 \(\theta\),對 \(q\) 最大化。最佳解是 \(q = p_\theta(\mathbf z\mid\mathbf x)\),此時 \(\mathcal L = \log p_\theta(\mathbf x)\),下界變緊。GMM 中就是算每個點屬於每個成分的 responsibility。
- M-step:固定 \(q\),對 \(\theta\) 最大化。\(H(q)\) 與 \(\theta\) 無關,所以只要最大化 \(\mathbb E_q[\log p_\theta(\mathbf x,\mathbf z)]\),這通常有公式解(GMM 的加權平均、加權共變異數)。
為什麼 log-likelihood 不會下降:
第一個 ≥ 是 ELBO 對任何 \(q\) 都成立,第二個 ≥ 是 M-step 的定義,等號是 E-step 讓下界變緊。Demo A 把這三步畫成一個階梯。
EM 只適用於能精確算後驗的模型(例如 GMM)。VAE 的後驗算不出來,所以下一講改用一個參數化的 \(q_\phi\) 近似它,用梯度同時更新兩者。
Demo AEM 的 ELBO 階梯
一維、兩個成分的 GMM,資料是仿 Old Faithful「噴發持續時間」的合成資料(兩團,約 2 分鐘和 4.3 分鐘)。每按一次「下一步」做一次 E-step 或 M-step。
- E-step 之後,紅線(ELBO)跳上來碰到藍線(log-likelihood):\(q\) 換成了真正的後驗,下界變緊。
- M-step 之後,兩條線都上升,但紅線在藍線下方:\(q\) 是舊 \(\theta\) 的後驗,對新的 \(\theta\) 不再是最佳,所以下界又有了缺口。缺口的大小就是 \(D_{\mathrm{KL}}(q\Vert p_\theta(\mathbf z\mid\mathbf x))\)。
- 藍線永遠不會下降(上面的三段不等式)。
- 實測(重設後的壞初始值 \(\mu = (4.60, 1.00)\)、\(\sigma = (0.25, 2.00)\)):平均 log-likelihood 從 −1.743 開始,第一輪 M-step 後升到 −1.234,這時 ELBO 是 −1.265,缺口 0.031;再連跑 10 輪收斂到 −0.970,\(\pi = 0.667\)、\(\mu = (4.31, 1.98)\),和資料的兩團一致。
Demo B連續潛在變數:q 越像後驗,估計越準、ELBO 越緊
一個一維的「迷你 VAE」:\(z\sim\mathcal N(0,1)\),\(x\mid z\sim\mathcal N(\mu(z), 0.3^2)\),\(\mu(z) = 2\tanh(2z) + 0.4z\)。觀測到一個 \(\bar x\)。這個模型夠小,可以用格點精確算出 \(\log p(\bar x)\) 和真實後驗 \(p(z\mid\bar x)\),拿來和各種近似比較。
- 這就是投影片 26 的圖:藍色後驗被 \(\mathcal N(2,2)\) 近似得比 \(\mathcal N(-4, 0.75)\) 好。預設的 \(q\) 放在錯的位置,直方圖很寬,ELBO 遠低於真值。按「設成後驗的高斯近似」,直方圖會縮成一條細線,ELBO 幾乎貼上真值。
- 實測(\(\bar x = 1.6\),真值 \(\log p(\bar x) = -1.806\)):預設 \(q = \mathcal N(-1.5, 0.4^2)\) 的 ELBO 是 −98.07,缺口 96.3 nats;k = 5 的估計平均 −87.5、標準差 10.5,離真值很遠。設成後驗的高斯近似後,ELBO = −1.950,缺口只剩 0.144。
- 均勻和先驗都不看 \(\bar x\),是課堂說的「亂猜」。它們的 ELBO 很差(\(\bar x = 1.6\) 時缺口分別是 55.4 和 33.6;先驗在 \(\bar x = 2.6\) 時缺口增加到 57.3),x̄ 越極端越糟。在這個一維例子裡,k = 1000 時兩者的估計平均仍接近真值,但標準差(0.126、0.067)比好的 \(q\) 大;維度一高,亂猜需要的樣本數會指數成長。
- k = 1 時,log 估計值的平均就是 ELBO,落在真值左邊:這是 Jensen 造成的偏差。k 增大,直方圖往真值靠攏,偏差變小:用後驗的高斯近似時,k = 1、20、1000 的平均分別是 −1.927、−1.815、−1.809,標準差 0.833、0.102、0.020。把這個 k 個樣本的估計量直接當訓練目標,就是 IWAE(Burda et al. 2015;Kingma & Welling 2019 §2.6 有介紹)。
Demo C補上半張數字:投影片 15 和 27 的實作
先在瀏覽器裡訓練第 3 講的 FVSBN(8×8 手寫數字,raster 順序)。拿一張測試圖,把最上面兩列(16 個像素)當成看不到的 \(\mathbf z = \mathbf x^{\text{top}}\),其餘 48 個像素是觀測的 \(\mathbf x\)。16 個二元像素只有 \(2^{16} = 65{,}536\) 種補法,可以全部列舉,精確算出 \(\log p(\mathbf x^{\text{bottom}})\) 和真實後驗。
投影片 27 用的近似後驗是每個像素獨立的 Bernoulli:\(q(\mathbf x^{\text{top}};\boldsymbol\phi) = \prod_i\phi_i^{x_i^{\text{top}}}(1-\phi_i)^{1-x_i^{\text{top}}}\)。投影片問:\(\phi_i = 0.5\) 好嗎?不好。\(\phi_i = 1\) 好嗎?不好。對「9 的上半部」那些像素 \(\phi_i\approx1\) 呢?好。下面直接算出這幾種 \(q\) 的 ELBO。
第一張是原圖,第二張是觀測部分(上兩列遮起來),其餘是各種 \(q\) 的 \(\boldsymbol\phi\)(灰階,越深越接近 1),下方是從該 \(q\) 抽出的一個補法。表格中的 gap = log p − ELBO = \(D_{\mathrm{KL}}(q\Vert p(\mathbf z\mid\mathbf x))\)。「後驗邊際」是把真實後驗每個像素的邊際機率拿來當 \(\phi_i\),是這個家族裡很好的近似,但因為假設各像素獨立,仍然不完全等於後驗,所以 gap 不為 0。「資料邊際」是訓練資料上兩列每個像素的平均,完全不看這張圖的下半部。
實測五張測試圖:真值 \(\log_2 p(\mathbf x^{\text{bottom}})\) 在 −19.6 到 −25.0 bits 之間。gap 依序是:\(\phi = 0.5\) 為 33–45 bits,\(\phi = 1\) 為 66–79 bits,資料邊際為 2.6–7.4 bits,後驗邊際只有 0.13–0.57 bits。這正是投影片 27 的排序。
09投影片 25–29:時間不夠沒講到的部分
影片在 EM 的連結處結束(投影片 24)。以下是剩下五頁的內容。第 6 講的前半把這幾頁完整講過一遍,課堂細節和問答整理在第 6 講筆記的第 2–5 節。
另一條推導 ELBO 的路(投影片 25)
直接算 \(q\) 和真實後驗的 KL:
這一步的「一點代數」
第二步用了 \(p(\mathbf z\mid\mathbf x) = p(\mathbf z,\mathbf x)/p(\mathbf x)\)。
移項就得到:
官方講義補充:這個等式要求 \(q\) 的支撐集涵蓋後驗的支撐集,否則 KL 為無窮大,只剩不等式。出處:CS236 notes, VAE 章。
Variational inference(投影片 26)
後驗算不出來時,取一個可計算、由參數 \(\boldsymbol\phi\) 決定的分佈族 \(q(\mathbf z;\boldsymbol\phi)\),例如 \(q(\mathbf z;\boldsymbol\phi) = \mathcal N(\phi_1,\phi_2)\),再挑 \(\boldsymbol\phi\) 讓 \(q\) 盡量接近 \(p(\mathbf z\mid\mathbf x;\theta)\)。這叫 variational inference,\(\boldsymbol\phi\) 叫 variational parameters。
投影片 26 的圖:藍色曲線是後驗 \(p(\mathbf z\mid\mathbf x;\theta)\),形狀不是單純的鐘形;橘色 \(\mathcal N(2,2)\) 大致蓋住藍色的主要區域;綠色 \(\mathcal N(-4,0.75)\) 是一個窄峰,落在藍色幾乎為 0 的地方。結論:\(\mathcal N(2,2)\) 是比較好的近似。Demo B 可以重現這個比較。
手寫數字的例子(投影片 27)
假設 \(p(\mathbf x^{\text{top}},\mathbf x^{\text{bottom}};\theta)\) 會給「像數字的圖」高機率,把 \(\mathbf z = \mathbf x^{\text{top}}\) 當作潛在變數。用獨立 Bernoulli 的 \(q(\mathbf x^{\text{top}};\boldsymbol\phi)\) 近似後驗 \(p(\mathbf x^{\text{top}}\mid\mathbf x^{\text{bottom}};\theta)\)。投影片的圖是一張下半部像 9 的數字,上半部塗成綠色。全部 0.5 不好、全部 1 不好、對應 9 上半部的像素 \(\approx1\) 才好。Demo C 把這幾種選擇的 ELBO 實際算出來了。
最終形式與本講總結(投影片 28–29)
下一步:在整個資料集上,同時對 \(\theta\) 和 \(\boldsymbol\phi\) 最大化 ELBO。
likelihood 難算、難用 MLE 訓練。根本原因是後驗推論 \(p(\mathbf z\mid\mathbf x)\) 很難,通常需要變分近似。另一條路是乾脆放棄 KL 和 likelihood(GAN)。
與其他講的關聯
- 第 1 講:GMM 資料模擬器用的就是這講的 EM。第 2 講 Demo D 的 \(Z\to X\) 三個例子也都是這講的模型。
- 第 4 講:Jensen 不等式(證明 KL ≥ 0)、Monte Carlo、entropy 全部在這講重新出現。KL 的方向也很重要:ELBO 的缺口是 \(D_{\mathrm{KL}}(q\Vert p)\),也就是 reverse KL,所以 \(q\) 會傾向 mode-seeking。
- 第 6 講:怎麼對 \(\theta\) 和 \(\boldsymbol\phi\) 求 ELBO 的梯度(REINFORCE vs. reparameterization),以及用一個 encoder 網路一次給出所有資料點的 \(\boldsymbol\phi\)(amortized inference),合起來就是 VAE。
- 第 16 講 Diffusion:可以看成 \(\mathbf z\) 和 \(\mathbf x\) 同維度、有很多層潛在變數的 VAE,訓練目標也是一個 ELBO。
常見誤解
自我測驗
1. 潛在變數模型的兩個主要動機是什麼?
2. 寫出 VAE 的生成過程,並說明它和 GMM 的差別。
3. 為什麼 log Σ_z p(x, z) 不能直接最佳化?
4. 均勻抽樣的 Monte Carlo 估計是不偏的,為什麼實務上不行?
5. 寫出 importance sampling 估計 p(x) 的公式,並證明它不偏。
6. 若 q(z) = p(z|x),importance sampling 估計量的變異數是多少?
7. 用 Jensen 不等式推導 ELBO。
8. 把 ELBO 寫成「期望 log 聯合機率 + entropy」的形式。
9. 證明 log p(x) = ELBO + KL(q‖p(z|x))。
10. EM 的 E-step 和 M-step 各在對 ELBO 做什麼?為什麼 log-likelihood 不會下降?
11. Demo C 中,為什麼 q 用「後驗邊際」當 φ,gap 仍不為 0?
12. 為什麼 ELBO 的缺口是 reverse KL?這對 q 的行為有什麼影響?
延伸閱讀
- CS236 course notes:Variational Autoencoders(本頁有參考):ELBO、black-box VI、REINFORCE 與 reparameterization、amortized inference,涵蓋這講和下一講。
- Kingma & Welling (2019), An Introduction to Variational Autoencoders(本頁參考):VAE 作者寫的完整教學,第 1 章 §1.7–1.8 是潛在變數模型與 intractability,第 2 章 §2.2 是 ELBO 與它的缺口,§2.6 是用 importance sampling 估計 likelihood。
- Lai et al. (2026),《The Principles of Diffusion Models》§2.1:從 VAE 的 ELBO 一路接到 diffusion model(第 16 講)。
- Lilian Weng, From Autoencoder to Beta-VAE:從 autoencoder 到 VAE、β-VAE、VQ-VAE 的整理。
- Kingma & Welling (2013), Auto-Encoding Variational Bayes:VAE 原始論文。
- Bishop (2006), Pattern Recognition and Machine Learning 第 9 章:GMM、EM,以及 EM 的 ELBO 觀點(9.4 節)。
- Locatello et al. (2019), Challenging Common Assumptions in the Unsupervised Learning of Disentangled Representations(本頁參考):非監督 disentanglement 的不可能性結果。