Variational Inference 是一種近似複雜分佈的數學方法,我們假設一類計算簡單的候選分佈$q(z)$,並有另一個複雜難以計算的後驗分佈$p(z|x)$,我們希望從候選分佈中找一個最接近$p(z|x)$的$q^*(z)$,這個等同於最小化$KL(q(z) | p(z|x))$
不過為什麼我們要近似後驗分佈$p(z|x)$呢?或是$q(z)$可以怎麼定義?與深度學習怎麼結合?本篇或接下來的幾篇文章就來跟大家漫談一下VI,整理了自己看過有關的資料,從幾個角度切入推導,並來看看跟其他生成模型有什麼關係
Latent variable model
要談VI之前要先講一下隱變量模型(Latent variable model),因為VI就是拿來求解隱變量模型方法之一,我們假設可觀測的隨機變數$x$與無法觀測的隱變量$z$聯合機率分佈為:
$$
p_{\theta}(x,z) = p_{\theta}(x|z)p(z)
$$
其中$p_{\theta}(x|z)$為一個參數化的模型來表示條件機率,再透過把$z$積分,我們可以得到$p(x)$:
$$
p_{\theta}(x) = \int p_{\theta}(x,z)dz
$$
看來很完美,我們得到$p(x)$式子接著就能直接去用MLE去學習 $\theta$ 囉!
這裡再多討論一下為何要使用隱變量模型,從上面式子來看,引入隱變量可以幫助我們定義出一個能計算的$p(x)$,解決了不知道怎麼假設$p(x)$的問題;另外,隱變量能捕捉資料所隱含的特性,例如「星座」是人們所加上的隱變量,有時候透過「星座」可以更快掌握你是個怎樣的人或是個性,或是說從你的行為來猜測你是什麼星座之類的,都是生活中常見的隱變量應用
不過更多時候,隱變量於表徵學習任務上扮演重要的角色,像是這個手繪塗鴉的例子,所學習到的隱變量於低維度可以形成流型(Manifolds),隱變量能捕捉資料的變異性,形成一個漸變的空間且具有泛化能力,代表隱變量能更好的表示資料特性,是很好的表徵學習方法
計算後驗機率困難
我們先來看看為什麼要近似$p(z|x)$,從隱變量模型,我們有一個可以計算的$p(x,z)$,現在把$p(x)$重新寫成:
$$
p(x) = \frac{p(x,z)}{p(z|x)}
$$
又是另一片天地,我們想要能計算$p(x)$,那只要$p(x,z)$與$p(z|x)$都可以被計算,那一切就太好了;只可惜,$p(z|x)$是無法被計算的,原因是:
$$
p(z|x) = \frac{p(x,z)}{p(x)}
$$
又導回來了,我們就是苦於沒有$p(x)$呀,那只好直接用另一個$q(z)$來偽裝成$p(z|x)$了,如果他們兩個夠相似,$p(x)$應該是可以被近似求出來的,這裡就用上VI想法了!
Evidence Lower Bound
我們希望用上$q_{\phi}(z)$來取代$p_{\theta}(z|x)$解決後驗計算困難問題,所以引入$q_{\phi}(z)$至$p(x)$得到:
$
\begin{split}
\log p_{\theta}(x) &= \mathbb{E}_{q_{\phi}(z)} \left[ \log p_{\theta}(x) \right] \\
&= \mathbb{E}_{q_{\phi}(z)} \left[ \log \frac{p_{\theta}(x,z)}{p_{\theta}(z|x)} \right] \\
&= \mathbb{E}_{q_{\phi}(z)}
\left[
\log \frac{p_{\theta}(x,z)}{q_{\phi}(z)} \frac{q_{\phi}(z)}{p_{\theta}(z|x)}
\right] \\
&= \mathbb{E}_{q_{\phi}(z)}
\left[
\log \frac{p_{\theta}(x,z)}{q_{\phi}(z)}\right] + \mathbb{E}_{q_{\phi}(z)} \left[ \log \frac{q_{\phi}(z)}{p_{\theta}(z|x)}
\right] \\
&= \mathbb{E}_{q_{\phi}(z)}
\left[
\log \frac{p_{\theta}(x,z)} {q_{\phi}(z)}\right] + KL(q_{\phi}(z)|| p_{\theta}(z|x))
\end{split}$
我們將原本$\log_{\theta} p(x)$拆成兩項,先來看第二項,為我們VI方法裡面的候選分佈$q_{\phi}(z)$與後驗分佈$p_{\theta}(z|x)$的KL距離,一定大於等於0,但我們依然無法直接去最小化之間差距
所以轉看第一項,又因$\log p(x)$為一個定值,第一項就成為了一個下界(Lower Bound)並稱為Evidence Lower Bound(ELBO),如果我們最大化第一項,不就等同於最小化第二項了嗎!而且第一項完全是可以算的!我們能透過訓練參數$\theta , \phi$來最大化ELBO,同時也減少$q_{\phi}(z)$與$p_{\theta}(z|x)$KL距離
最後整理成一般常看到ELBO形式
$$
\mathbb{E}_{q_{\phi}(z)}
\left[
\log \frac{p_{\theta}(x,z)} {q_{\phi}(z)}\right] = \mathbb{E}\left[ \log p_{\theta}(x|z) \right] - KL(q_{\phi}(z) || p(z))
$$
Importance Sampling to ELBO
剛剛我們由計算後驗分佈困難而推導出了ELBO,這次我們從 Importance Sampling 出發來推出ELBO,計算$p_{\theta}(x)$是求解一個複雜的積分:
$$
p_{\theta}(x) = \int p_{\theta}(x|z)p(z)dz
$$
我們可以用 Importance Sampling 來近似這個積分,用一個簡單的$q_{\phi}(z)$來抽樣出$z$,並且根據$\frac{q_{\phi}(z)}{p(z)}$來決定抽樣出的樣本權重:
$
\begin{split}
p_{\theta}(x) &= \int p_{\theta}(x|z) \frac{p(z)}{q_{\phi}(z)} q_{\phi}(z)dz \\
&= \int p_{\theta}(x|z)w^{(s)}q_{\phi}(z)dz \quad w^{(s)} = \frac{p(z)}{q_{\phi}(z)} \\
&\approx \frac{1}{S} \sum w^{(s)}p(x|z^{(s)})
\end{split}$
這裡用上Jensen’s inequality:
$$
\log \int p(x)g(x) dx \ge \int p(x) \log g(x) dx
$$
代入得到:
$
\begin{split}
\log p_{\theta}(x) &= log \int p_{\theta}(x|z) \frac{p(z)}{q_{\phi}(z)} q(z) dz \\
&\ge \int q_{\phi}(z) \log \left[ p_{\theta}(x|z)\frac{p(z)}{q_{\phi}(z)} \right] dz = \int q_{\phi}(z) \log_{\theta}(x|z) - \int q_{\phi}(z) \log \frac{q_{\phi}(z)}{p(z)} \\
\end{split}$
最後將式子整理成:
$$
\int q_{\phi}(z) \log_{\theta}(x|z) - \int q_{\phi}(z) \log \frac{q_{\phi}(z)}{p(z)} = \mathbb{E}\left[ \log p_{\theta}(x|z) \right] - KL(q_{\phi}(z) || p(z))
$$
Variational EM
最後我們來給一個具體常用來求解隱變量模型的演算法,最大期望演算法(Expectation-Maximization Algorithm,EM),這裡不打算從頭講起EM,但是這個演算法相當重要,值得深入了解,我推薦最近剛結束的DeepBayes課程,裡面非常詳細介紹了EM方法,本小節也有參考課程資料
用EM求解高斯混和模型(Gaussian Mixed Model)時候,因為高斯分佈良好的性質,所以能很方便地得到公式解:
- E-step:$q(z) = p(z|x,\theta)$
- M-step:$\max\limits_{\theta} \mathbb{E}\left[ \log p_{\theta}(x,z) - \log q(z) \right]$
可以看到在E-step時候,$q(z)$總是有公式解,故我們是有一個最優的$q(z)$恰好等於$p(z|x)$,也就等於最小化$KL(q(z)|p(z|x))$為0,M-step訓練參數$\theta$來最大化$\log p_{\theta}(x)$,此時ELBO直接等於$\log p_{\theta}(x)$
但很多時候我們無法寫出E-step的公式解,所以我們就用上VI方法,並且假設候選分佈為一個簡單且每個分量皆為獨立的分佈$q(z)=\prod q(z_i)$,稱為Mean-Field Approximation,我們帶入回ELBO中可以得到
$
\begin{split}
ELBO(q, \theta) & = \int \prod_i q_i(z_i) \Big[ \log p_{\theta}(x,z) - \sum_i \log q_i(z_i) \Big ]dz \\
& = \int q_j(z_j) \Big [ \int \log p_{\theta}(x,z) \prod_{i \neq j} q_i(z_i)dz_i \Big ] dz_j - \int \sum_{i \neq j} \log q_i(z_i) \prod_{i \neq j} q_i(z_i)dz_i - \int q_i(z_i) \log q_i(z_i)dz_i \\
& = \int q_j(z_j) \log \tilde p(x,z_j)dz_j - \int q_j(z_j) \log q_j(z_j) dz_j + const \\
& = -KL(q_j(z_j) || \tilde p(x,z_j))
\end{split}
$
最後 Variational EM 我們可以寫成
- E-step:$q_j(z_j) \propto \tilde p(x,z_j)$
- M-step:$\max\limits_{\theta} \mathbb{E}\left[ \log p_{\theta}(x,z) - \log q(z) \right]$
計算$q_j(z_j) = \mathbb{E}_{i \neq j}\left[ \log p(x,z) \right]$,固定$z_j$然後將j以外的維度進行積分,白話一點就是固定一個維度,把其他維度的所有組合都試過一次來計算這個維度的機率分佈,涉及非常大量的計算,雖然Mean-Field Approximation一定能寫成這樣的解,但是很多時候依然無法計算
結語
本篇是漫談VI方法的第一篇,介紹了隱變量模型與其求解困難,並用上VI方法來求解模型,得出可以透過最大化ELBO來求解訓練參數,最後介紹了Variational EM方法與限制
第一篇算是基礎介紹,也是我論文裡文獻回顧又再回顧一次,介紹了兩種角度推導出ELBO,下一篇我打算來介紹與深度學習如何結合,突破Mean-Field Approximation限制,成為生成模型中一個重要的方法,敬請期待
Reference
- NIPS 2016 Tutorial,很完整介紹VI的發展歷史 Variational Inference: Foundations and Modern Methods
- Shakir Mohamed 大神的教學投影片Variational Inference for Machine Learning
- VAE 提出者的博士論文,值得一看!VARIATIONAL INFERENCE & DEEP LEARNING: A NEW SYNTHESIS
- Expectation Maximization and Variational Inference