變分推斷(英文:Variational inference)或者話變分貝葉斯方法(英文:Variational Bayesian methods)係指啲一系列嘅技術,攞嚟逼近啲喺貝葉斯推論同埋機械學習中出現到嘅難整積分嘅。「變分」係意指喺某個範圍內改變啲初始簡單嘅分佈,去逼近個實際分佈;「推斷」意指從啲外顯變數推斷返啲潛在變數。
變分推斷或者話變分貝葉斯方法,主要係攞嚟處理啲複雜嘅統計模型,啲既有外顯變數又有潛在變數同埋未知參數嘅,嚟幫啲變數之間啲關係做建模。
根據貝葉斯推論:
![{\displaystyle P(\mathbf {z} \mid \mathbf {x} )={\frac {P(\mathbf {x} \mid \mathbf {z} )\cdot P(\mathbf {z} )}{P(\mathbf {x} )}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/7457ce1997fc6c23ec875e48f3a6d45acf17cc43)
其中
係樣本,
係樣本反映嘅潛在變數。
表示畀有樣本
嗰陣啲
嘅分佈。
對於生成模型嚟講,可以根據潛在空間嘅
生成潛在變數
,再根據觀察空間嘅
得到相應嘅新樣本
。
反過嚟喺對啲
建模出
嗰陣,就需要用到
嘅邊緣概似亦即係
;注意到
即係對
嘅期望形式,所以條式都可以寫成
嘅形式。同時亦都要根據貝葉斯推論從
抽出
亦即係潛在變數喺有嗰啲樣本嘅條件下個分佈情況。要對
建模可以用對數最大概似估計,即最大化某個
。但因爲邊緣概似當中個積分冇解析解,所以難幫佢做數值積分或者求梯度,而變分推斷可以處理到種情況。
對數最大概似可以嘸直接對
建模,而係可以搵遞個簡單函數
係細過原本函數
嘅,作爲
下界(lower bound)之一,係噉有:
![{\displaystyle f(\theta )\geq g(\theta )}](https://wikimedia.org/api/rest_v1/media/math/render/svg/58e15bc648b9aba7ee9afa8adf52c056f8767b46)
希望係最大化個
概似理應畀到對應嘅最大化
概似,但由於
係好複雜嘅函數,所以單單靠一隻
係嘸夠組成個
啲下界,所以需要一堆壘
喺個家族集合
裏頭又㔶齊
個範圍嘅,再喺啲
裏頭整返最大化
嚟間接幫
做最大化
。
攞到啲下界函數
嘅方法可以係對個對數形式概率
進行變形。對於潛在變數
同埋某個佢個分佈
,顯在嘅對數概率
可以寫得成
亦即係
嘅形式:
![{\displaystyle \log p_{\mathbf {\theta } }(\mathbf {x} )=\int q(\mathbf {z} )\log p_{\mathbf {\theta } }(\mathbf {x} )d\mathbf {z} }](https://wikimedia.org/api/rest_v1/media/math/render/svg/da172b4cec970a9aefa547fef07344ebe21a9f1c)
由於
,所以有:
![{\displaystyle \log p_{\mathbf {\theta } }(\mathbf {x} )=\int q(\mathbf {z} )\log {\dfrac {p_{\theta }(\mathbf {x} ,\mathbf {z} )}{p_{\theta }(\mathbf {z} \mid \mathbf {x} )}}d\mathbf {z} }](https://wikimedia.org/api/rest_v1/media/math/render/svg/6b1b09b703b6e691b5eed107f0a201f6917294da)
喺當中拆出
有:
![{\displaystyle {\begin{aligned}\log p_{\mathbf {\theta } }(\mathbf {x} )&=\int q(\mathbf {z} )\log \left({\dfrac {p_{\theta }(\mathbf {x} ,\mathbf {z} )}{q(\mathbf {z} )}}\cdot {\dfrac {q(\mathbf {z} )}{p_{\theta }(\mathbf {z} \mid \mathbf {x} )}}\right)d\mathbf {z} \\&=\int q(\mathbf {z} )\log {\dfrac {p_{\theta }(\mathbf {x} ,\mathbf {z} )}{q(\mathbf {z} )}}d\mathbf {z} +\int q(\mathbf {z} )\log {\dfrac {q(\mathbf {z} )}{p_{\theta }(\mathbf {z} \mid \mathbf {x} )}}d\mathbf {z} \end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/56f1b344fa9ff1d6be7afe466ce076848b2c1650)
注意到左右兩䊆分別可以表示成期望同埋KL散度,似下式:
![{\displaystyle \log p_{\mathbf {\theta } }(\mathbf {x} )={\mathbb {E} _{\mathbf {z} \sim q(\mathbf {z} )}[\log {\dfrac {p_{\theta }(\mathbf {x} ,\mathbf {z} )}{q(\mathbf {z} )}}]}+\mathbb {KL} [q(\mathbf {z} )\|p_{\theta }(\mathbf {z} \mid \mathbf {x} )]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/9067bc1a1e5528dc1cf376a92176092cd52c4501)
個KL散度(即
)可以直觀啲噉理解爲:從
嚟睇,
戥佢走差有幾多;KL散度等於零嗰陣,兩樣嘢基本可以睇作係喺所有埞方都相等。因爲KL散度係非負(大於等於零),所以有:
![{\displaystyle \log p_{\mathbf {\theta } }(\mathbf {x} )\geq {\mathbb {E} _{\mathbf {z} \sim q(\mathbf {z} )}[\log {\dfrac {p_{\theta }(\mathbf {x} ,\mathbf {z} )}{q(\mathbf {z} )}}]}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/cb7ad53869835f30e5c66193fc676f1376eb901d)
即個
查實就係
嘅下界,亦即係證據下界(evidence lower bound,ELBO),記作
。所以最好就係
,噉樣有KL散度爲零,個
又得最大化。但因爲
好難攞到,好多時衹有好特殊嘅算法情況下先做得到令兩便相等,種情況係期望–最大化算法(expectation–maximization algorithm,EM Algorithm)。簡單嚟講EM–Algorithm係調校個
嚟最細化個KL散度令到
得最大化先(即「Expectation」),再喺個
下搵返一個
最佳嘅令
最大,即又令到
喺
方面得到最大化(即「Maximization」),再返去E動作繼續校細個
……噉樣往復做落去最終去達到最佳。