JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

變分推論:把貝氏推論變成最佳化

ELBO、重參數化技巧、平均場及其失效模式,以及如何把變分貝氏擴展到數百萬權重、並跨輸入攤銷它。

用最佳化取代積分

變分推論挑一個可解的分布族 q(w; φ)——比方說在每個權重上各放一個獨立高斯——然後在族內搜尋那個離真實後驗最近的成員,「近」用 KL 散度來衡量。我們就這樣把一個不可能的積分,變成了對變分參數 φ 的熟悉最佳化。麻煩在於:到真實後驗的 KL 裡仍然藏著那個難解的邊際概似。解決它的東西,正是整套方法的核心物件。

把那個 KL 重新整理,就得到證據下界(ELBO):q 之下的期望對數概似,減去 q 到先驗的 KL。最大化 ELBO 會同時最小化到真實後驗的 KL,而完全不必碰那個邊際概似。把兩項讀成一場拔河:第一項把 q 拉向「擬合資料」的權重,第二項是個複雜度懲罰,把 q 拉回先驗。ELBO 就是「貝氏」與「帶正則化的最佳化」變成同一句話的地方。

\mathcal{L}(\phi)=\mathbb{E}_{q(w;\phi)}\!\left[\log p(\mathcal{D}\mid w)\right]-\mathrm{KL}\!\left(q(w;\phi)\,\|\,p(w)\right)

证据下界(ELBO):在 q 下最大化期望对数似然、同时贴近先验,恰好等价于最小化到真实后验的 KL 散度。

重參數化技巧

要用 SGD 最佳化 ELBO,你需要它對 φ 的梯度;但 φ 坐在一個對隨機權重取期望的式子裡——而你無法把梯度推過一個取樣步驟。重參數化技巧就是那把鑰匙:不要直接從 q 取樣 w,而是從一個無參數的分布取樣固定的雜訊 ε,再把 w 算成 φ 與 ε 的一個確定性、可微分函數。隨機性被塞進不帶梯度的 ε 裡,於是反向傳播能乾淨地流過其餘部分。

\nabla_{\phi}\,\mathbb{E}_{q(w;\phi)}\!\left[f(w)\right]=\mathbb{E}_{\epsilon\sim\mathcal{N}(0,I)}\!\left[\nabla_{\phi}\,f(\mu+\sigma\odot\epsilon)\right]

重参数化技巧:把随机权重写成 μ + σ⊙ε,于是梯度可以移入期望内部并回传到 φ。

# Gaussian weight w ~ N(mu, sigma^2), reparameterized
eps = randn_like(mu)          # noise, no gradient
sigma = softplus(rho)         # keep sigma > 0
w = mu + sigma * eps          # differentiable in (mu, rho)
loss = -log_likelihood(w, batch) + kl(mu, sigma)  # one MC sample of the ELBO
負 ELBO 的一個蒙地卡羅樣本;梯度經由 w 流回 mu 與 rho。

這正是驅動變分自編碼器的同一個技巧——那裡它重參數化的是潛在編碼,這裡是權重——所以 VAE 是第一次認識它最乾淨的場所。每一步取一個雜訊樣本,就給出 ELBO 一個帶雜訊但無偏的梯度;實務上通常一個樣本就夠,因為 SGD 本來就已經在小批次上做平均了。

平均場,以及它痛在哪裡

最簡單的 q 把每個權重都當成獨立——這就是平均場近似。它便宜(每個權重兩個數字:一個均值、一個變異數),也是多數函式庫的預設值。但「獨立」是個強烈的謊言。網路裡的權重彼此高度相關,硬逼 q 因式分解會讓它系統性地低估變異數:KL(q‖p) 會懲罰「q 把質量放在後驗沒有質量之處」,於是 q 把自己縮進單一個峰裡,回報出虛假的自信。

擴展與攤銷

每一步都對整個資料集算 ELBO,在規模上是不可能的。隨機變分推論改成抽一個小批次、把它的概似項放大去估計完整總和,再對結果跑普通的隨機最佳化——正是這個想法讓 SGD 能訓練深度網路,現在拿來驅動貝氏推論。這才使變分貝氏在現代規模的資料與模型上根本變得可行。

還有第二種擴展。當你必須推論一個逐輸入的潛在變數(如 VAE)時,否則你得對每個資料點重跑一次最佳化。攤銷變分推論改成訓練單一個推論網路,把任意輸入直接映射到它的變分參數,最佳化成本只付一次、永遠重用。你用一點點精度——所謂「攤銷間隙」——換來「測試時一次前向傳遞就完成近似推論」的能力。

摊销推断用一个编码器网络一次前向就输出 q 的参数,取代逐样本的优化——这正是 VAE 的范式。

变分自编码器示意图:编码器把输入映射到隐变量分布,采样后由解码器重建输入。

超越高斯:流式後驗

如果瓶頸在 q 的形狀,那就讓它更豐富。正規化流後驗從一個簡單的基底分布出發,把它推過一連串可逆、可微分的映射;變數變換公式精確地追蹤密度,所以你仍然算得出 ELBO。結果是一個能彎曲、能偏斜、能帶相關性的變分族——捕捉平均場丟掉的結構——代價是更多參數與更謹慎的工程。

w=f_K\circ\cdots\circ f_1(z_0),\qquad \log q_K(w)=\log q_0(z_0)-\sum_{k=1}^{K}\log\left|\det\frac{\partial f_k}{\partial z_{k-1}}\right|

归一化流后验把简单的基分布经过一连串可逆映射;每一步的对数密度都要减去一个对数雅可比行列式项。