變分貝葉斯方法是近似貝葉斯推理與機器學習中較難積分的一系列技術，通常用於由觀測變數及未知引數、潛變數組成的複雜統計模型，之間存在的各種關係可用圖模式描述。貝葉斯推理中，引數和潛變數一般歸為 未觀察變數。變分貝葉斯方法主要用於兩個目的： 提供未觀測變數後驗機率的分析近似，以便對變數統計推斷 得出觀測資料的邊緣似然的下界（即給定模型的資料的邊緣機率，邊緣化未觀測變數）。通常用於模型選擇，一般認為給定模型的邊緣似然越高，擬合效果越好，產生資料的可能性越大（另見貝葉斯因子）。 就目的 1（近似後驗機率），變分貝葉斯是蒙特卡洛法（特別是馬爾可夫鏈蒙特卡洛，如吉布斯取樣）的替代，可採用完全貝葉斯的方法，對難以取值或抽樣的複雜分佈進行統計推斷。蒙特卡洛技術利用一組樣本對精確後驗值進行數值近似，而變分貝葉斯可求近似後驗的區域性最優的精確解析解。 變分貝葉斯可視作最大期望演算法（EM）的推廣，從估計引數的單一最似然值的最大後驗機率（MAP 估計），推廣到計算引數及潛變數的整個近似後驗分佈的完全貝葉斯估計。貝葉斯估計同 EM 一樣，也能找到一組最優引數值，且與 EM 有相同的交替結構 基於不能求解析解的相依方程組。 很多應用中，變分貝葉斯能更快得到與吉布斯取樣精度相當的解，但推導迭代方程組需要更多工作。即便是很多概念上非常簡單的模型也如此，下面以只有 2 個引數、沒有潛變數的基本不分層模型為例說明。 數學推導 問題 變分推斷中，資料 mathbf X 的一組未觀測變數 mathbf Z Z_1 dots Z_n 的後驗分佈近似於所謂變分分佈 Q mathbf Z P mathbf Zmid mathbf X approx Q mathbf Z 分佈 Q mathbf Z 屬於在形式上比 P mathbf Zmid mathbf X 簡單的分佈族（如高斯分佈族），這是為使 Q mathbf Z 與真實後驗 P mathbf Zmid mathbf X 更相似。 相似性用不相似函式 d Q P 衡量，推斷（inference）透過求分佈 Q mathbf Z 使 d Q P 最小化進行。 KL 散度 最常見的變分貝葉斯法以 Q 與 P 的 KL 散度作為不相似函式，很適合最小化。KL 散度的定義是 D_mathrm KLQ parallel P triangleq sum_mathbf Z Q mathbf Z log frac Q mathbf ZP mathbf Zmid mathbf X 注意 Q 和 P 是相反的。反向 KL 散度在概念上類似於期望最大化演算法（KL 散度則產生期望傳播演算法）。 難解性 變分技術通常用於近似以下引數： P mathbf Z mid mathbf X frac P mathbf X mid mathbf Z P mathbf ZP mathbf X frac P mathbf X mid mathbf Z P mathbf Zint_mathbf Z P mathbf Xmathbf Z dmathbf Z 對 mathbf Z 邊緣化（以計算分母中的 P mathbf X）通常是難解的，因為 mathbf Z 的搜尋空間在組合上可能很大。因此，我們用 Q mathbf Z approx P mathbf Z mid mathbf X 求近似。 證據下界 考慮到 P mathbf Z mid mathbf X frac P mathbf X mathbf ZP mathbf X，KL 散度也可寫作 D_mathrm KLQ parallel P sum_mathbf Z Q mathbf Z left log frac Q mathbf ZP mathbf Zmathbf X log P mathbf X right sum_mathbf Z Q mathbf Z left log Q mathbf Z log P mathbf Zmathbf X right sum_mathbf Z Q mathbf Z left log P mathbf X right 因為 Q mathbf Z 是分佈，所以 sum_mathbf Z Q mathbf Z 1；又由於 P mathbf X 對於 mathbf Z 是常數，所以 D_mathrm KLQ parallel P sum_mathbf Z Q mathbf Z left log Q mathbf Z log P mathbf Zmathbf X right log P mathbf X 根據（離散隨機變數）期望的定義，上式可以寫作 D_mathrm KLQ parallel P mathbb E_mathbf Q left log Q mathbf Z log P mathbf Zmathbf X right log P mathbf X 重排為 log P mathbf X D_mathrm KLQ parallel P mathbb E_mathbf Q left log Q mathbf Z log P mathbf Zmathbf X right D_mathrm KLQparallel P mathcal LQ 由於對數證據 log P mathbf X 對於 Q 是定值，最大化末項 mathcal LQ 會使 Q 對 P 的 KL 散度最小化。適當選擇 Q 可以讓 mathcal LQ 更容易計算，更容易最大化，因此既有後驗 P mathbf Zmid mathbf X 的解析近似 Q，也有對數證據 log P mathbf X 的下界 mathcal LQ（KL 散度非負）。 下界 mathcal LQ 與熱力學自由能類似，也稱作（負）變分自由能，因為它也可以表為負能量 operatorname E_Qlog P mathbf Zmathbf X 加 Q 的熵。mathcal LQ 項也稱作證據下界（ELBO），是資料的對數證據的下界。 證明 根據佈雷格曼散度（KL 散度是其特例）的廣義勾股定理，可以證明 D_mathrm KLQparallel P geq D_mathrm KLQparallel Q D_mathrm KLQparallel P forall Q inmathcal C 其中 mathcal C 是凸集，且 Q Q triangleq argmin_Qinmathcal C D_mathrm KLQparallel P 時等號成立。這時，全域性最小值 Qmathbf Z qmathbf Z_1midmathbf Z_2 qmathbf Z_2 qmathbf Z_2midmathbf Z_1 qmathbf Z_1，其中 mathbf Zmathbf Z_1mathbf Z_2 可以如下求得： qmathbf Z_2 frac P mathbf Xzeta mathbf Xfrac P mathbf Z_2midmathbf Xexp D_mathrm KLqmathbf Z_1midmathbf Z_2parallel P mathbf Z_1midmathbf Z_2mathbf X frac 1zeta mathbf Xexpmathbb E_qmathbf Z_1midmathbf Z_2left logfrac P mathbf Zmathbf Xqmathbf Z_1midmathbf Z_2right 其中歸一化常數為 zeta mathbf X P mathbf Xint_mathbf Z_2frac P mathbf Z_2midmathbf Xexp D_mathrm KLqmathbf Z_1midmathbf Z_2parallel P mathbf Z_1midmathbf Z_2mathbf X int_mathbf Z_2expmathbb E_qmathbf Z_1midmathbf Z_2left logfrac P mathbf Zmathbf Xqmathbf Z_1midmathbf Z_2right zeta mathbf X 項在實踐中常稱作證據下界（ELBO），因為 P mathbf Xgeqzeta mathbf Xexp mathcal LQ，如上所示。 交換 mathbf Z_1 mathbf Z_2 的角色，可以迭代計算真實模型邊際 P mathbf Z_1midmathbf X P mathbf Z_2midmathbf X 的近似 qmathbf Z_1 qmathbf Z_2。這種迭代保證單調收斂，但收斂到的 Q 只是 D_mathrm KLQparallel P 的區域性極小值。 若約束空間 mathcal C 被限制在獨立空間內，即 qmathbf Z_1midmathbf Z_2 qmathbf Z_1，則上述迭代將成為所謂平均場近似（mean field approximation）Qmathbf Z qmathbf Z_1 qmathbf Z_2。 平均場近似 變分分佈 Q mathbf Z 常被假定為潛變數的某劃分的因式分解，即對潛變數 mathbf Z 的劃分 mathbf Z_1 dots mathbf Z_M， Q mathbf Z prod_i1M q_i mathbf Z_imid mathbf X 由變分法可以證明，對每個因子 q_j 的最佳分佈 q_j（就 KL 散度最小的分佈而言，如上所述）滿足 q_jmathbf Z_jmid mathbf X frac eoperatorname E_q_j ln p mathbf Z mathbf Xint eoperatorname E_q_j ln p mathbf Z mathbf X dmathbf Z_j 其中 operatorname E_q_j ln p mathbf Z mathbf X 是資料與潛變數的對數聯合機率的期望值，是相對於不屬於劃分的所有變數的 q 而取。關於 q_jmathbf Z_jmid mathbf X 的推導見的引理 41。 實踐中，通常用對數表示： ln q_jmathbf Z_jmid mathbf X operatorname E_q_j ln p mathbf Z mathbf X text constant 上式中的常數與歸一化常數（q_j 上述表示式中的分母）有關，通常透過檢查來恢復，因為表示式的其餘部分通常是已知的分佈（如正態分佈、伽馬分佈等）。 利用期望的性質，式 operatorname E_q_j ln p mathbf Z mathbf X 通常可簡為潛變數先驗分佈的固定超引數及不屬於當前劃分的潛變數（即不屬於 mathbf Z_j 的潛變數）的期望值的函式（有時還包括方差等高階矩）。這就在某一劃分的變數分佈引數同其他劃分的變數的期望值之間產生了迴圈依賴，自然就需要類似期望最大化演算法的迭代法，以某種方式（也許隨機）初始化潛變數期望（可能還有高階矩），再利用當前期望依次計算每個分佈的引數、適當設定新算出的分佈的期望。這種演算法保證收斂。 換一種說法，對每個變數劃分，簡化其中變數分佈的表示式、研究分佈與相關變數的函式依賴關係，通常就能確定分佈的族（反過來確定了常數）。分佈的引數公式可用先驗分佈的超引數（已知常數）表示，也可用其他劃分中變數函式的期望表示。通常這些期望可簡為變數本身的期望值函式（即平均值）；有時也會出現變數平方（與變數方差有關）或更高次冪高階矩）的期望。其他變數的分佈一般來自已知族，相關期望的公式可查到；但公式取決於分佈的引數，引數又取決於其他變數的期望，所以每個變數的分佈引數公式都可表為一群變數間非線性相互依賴的方程。通常不能直接求解，不過可以用簡單的迭代演算法，大多數時候都能保證收斂。 變分推理對偶公式 下面的定理稱作變分推理對偶公式，解釋了變分貝葉斯方法中變分分佈的一些重要性質。 考慮兩機率空間 Thetamathcal FP Thetamathcal FQ，其中 Q ll P。假設存在共同的主導機率測度 lambda 使 P ll lambda Q ll lambda。令 h 是 Thetamathcal FP 上的任意實值隨機變數，滿足 h in L_1 P，則下列等式成立 log E_P exp h text sup_Q ll P E_Q h D_text KLQ parallel P 此外，當且僅當（supremum） frac q thetap theta frac exp h thetaE_P exp h 關於機率測度 Q 幾乎是確定的，其中 p theta dPdlambda q theta dQdlambda 分別表示機率測度 P、Q 對 lambda 的 RadonNikodym 導數，右式才取上界。 基本例子 考慮簡單的不分層貝葉斯模型，由來自正態分佈（均值、方差未知）的獨立同分布觀測量組成。下面我們將詳細介紹這模型，以說明變分貝葉斯方法的工作原理。 為了數學上的方便，下例中我們用精度（即方差倒數；多元正態分佈時是協方差矩陣的逆。理論上精度和方差等價，因為兩者間是雙射）。 數學模型 將共軛先驗分佈置於未知均值 mu、精度 tau，即均值也遵循高斯分佈，而精度遵循伽馬分佈。 begin align tau sim operatorname Gammaa_0 b_0 mutau sim mathcal Nmu_0 lambda_0 tau1 x_1 dots x_N sim mathcal Nmu tau1 N text number of data points end align 先驗分佈超引數 mu_0 lambda_0 a_0、b_0 是已知定值，可設為小正數，以得到較寬的先驗分佈，表明我們對 mu、tau 的先驗分佈一無所知。 已知 N 個數據點 mathbf X x_1 ldots x_N，而我們的目標是推斷引數 mu tau 的後驗分佈 q mu taup mutaumid x_1 ldots x_N。 聯合機率 所有變數的聯合機率可重寫為 p mathbf Xmutau p mathbf Xmid mutau p mumid tau p tau 個體因子是 begin align p mathbf Xmid mutau prod_n1N mathcal Nx_nmid mutau1 p mumid tau mathcal N left mumid mu_0 lambda_0 tau1 right p tau operatorname Gammataumid a_0 b_0 end align 其中 begin align mathcal Nxmid musigma2 frac 1sqrt 2pisigma2 efrac xmu22sigma2 operatorname Gammataumid ab frac 1Gamma a ba taua1 eb tau end align 因式分解近似 假設 q mutau q mu q tau，即後驗分佈因式分解為 mu tau 的獨立因子。這種假設是變分貝葉斯方法的基礎。事實上，真正的後驗分佈並非如此（這種簡單情形我們知道它是正態 伽馬分佈），因此所得結果將是近似值。 匯出 則 begin align ln q_mumu operatorname E_tauleft ln p mathbf Xmid mutau ln p mumid tau ln p tauright C operatorname E_tauleft ln p mathbf Xmid mutauright operatorname E_tauleft ln p mumid tauright operatorname E_tauleft ln p tauright C operatorname E_tauleft ln prod_n1N mathcal N left x_nmid mutau1 right right operatorname E_tauleft ln mathcal N left mumid mu_0 lambda_0 tau1 right right C_2 operatorname E_tauleft ln prod_n1N sqrt frac tau2pi efrac x_nmu2tau2right operatorname E_tauleft ln sqrt frac lambda_0 tau2pi efrac mumu_02lambda_0 tau2right C_2 operatorname E_tauleft sum_n1N left frac 12lntau ln 2pi frac x_nmu2tau2rightright operatorname E_tauleft frac 12ln lambda_0 ln tau ln 2pi frac mumu_02lambda_0 tau2right C_2 operatorname E_tauleft sum_n1N frac x_nmu2tau2right operatorname E_tauleft frac mumu_02lambda_0 tau2right operatorname E_tauleft sum_n1N frac 12lntau ln 2piright operatorname E_tauleft frac 12ln lambda_0 ln tau ln 2piright C_2 operatorname E_tauleft sum_n1N frac x_nmu2tau2right operatorname E_tauleft frac mumu_02lambda_0 tau2right C_3 frac operatorname E_tautau2 leftsum_n1N x_nmu2 lambda_0 mumu_02 right C_3 end align 上面的推導中，C C_2 C_3 指對 mu 為常數的值。注意 operatorname E_tauln p tau 項不是 mu 的函式，無論 mu 的值是多少，它都不變。因此，第三行中可以把它吸收到末尾的常數項，第七行也如此。 最後一行是 mu 的二次多項式。由於這是 q_mumu 的對數，我們可以看到 q_mumu 本身是正態分佈。 透過一些繁瑣的計算（展開括號裡的平方、分離出涉及 mu、mu2 的項、對 mu 應用配方法），可得到正態分佈的引數： begin align ln q_mumu frac operatorname E_tautau2 leftsum_n1N x_nmu2 lambda_0 mumu_02 right C_3 frac operatorname E_tautau2 leftsum_n1N x_n22x_nmu mu2 lambda_0 mu22mu_0mu mu_02 right C_3 frac operatorname E_tautau2 leftleft sum_n1N x_n2right2left sum_n1N x_nrightmu left sum_n1N mu2 right lambda_0mu22lambda_0mu_0mu lambda_0mu_02 right C_3 frac operatorname E_tautau2 leftlambda_0Nmu2 2left lambda_0mu_0 sum_n1N x_nrightmu left sum_n1N x_n2right lambda_0mu_02 right C_3 frac operatorname E_tautau2 leftlambda_0Nmu2 2left lambda_0mu_0 sum_n1N x_nrightmu right C_4 frac operatorname E_tautau2 leftlambda_0Nmu2 2left frac lambda_0mu_0 sum_n1N x_nlambda_0N rightlambda_0N mu right C_4 frac operatorname E_tautau2 leftlambda_0Nleft mu2 2left frac lambda_0mu_0 sum_n1N x_nlambda_0Nright muright right C_4 frac operatorname E_tautau2 leftlambda_0Nleft mu2 2left frac lambda_0mu_0 sum_n1N x_nlambda_0Nright mu left frac lambda_0mu_0 sum_n1N x_nlambda_0Nright2 left frac lambda_0mu_0 sum_n1N x_nlambda_0Nright2right right C_4 frac operatorname E_tautau2 leftlambda_0Nleft mu2 2left frac lambda_0mu_0 sum_n1N x_nlambda_0Nright mu left frac lambda_0mu_0 sum_n1N x_nlambda_0Nright2 right right C_5 frac operatorname E_tautau2 leftlambda_0Nleft mufrac lambda_0mu_0 sum_n1N x_nlambda_0Nright2 right C_5 frac 12 lambda_0Noperatorname E_tautau left mufrac lambda_0mu_0 sum_n1N x_nlambda_0Nright2 C_5 end align 注意上面所有步驟用二次和公式都能化簡。 即 begin align q_mumu sim mathcal Nmumid mu_Nlambda_N1 mu_N frac lambda_0 mu_0 N bar xlambda_0 N lambda_N lambda_0 N operatorname E_tautau bar x frac 1Nsum_n1N x_n end align 推導 q_tautau 的推導大致相同，簡潔起見略去細節。 begin align ln q_tautau operatorname E_muln p mathbf Xmid mutau ln p mumid tau ln p tau text constant a_0 1 ln tau b_0 tau frac 12 ln tau frac N2 ln tau frac tau2 operatorname E_mu left sum_n1N x_nmu2 lambda_0 mu mu_02 right text constant end align 兩側取指數，可見 q_tautau 服從伽馬分佈。 begin align q_tautau sim operatorname Gammataumid a_N b_N a_N a_0 frac N12 b_N b_0 frac 12 operatorname E_mu left sum_n1N x_nmu2 lambda_0 mu mu_02right end align 計算引數 回憶前幾節的結論： begin align q_mumu sim mathcal Nmumidmu_Nlambda_N1 mu_N frac lambda_0 mu_0 N bar xlambda_0 N lambda_N lambda_0 N operatorname E_tautau bar x frac 1Nsum_n1N x_n end align begin align q_tautau sim operatorname Gammataumid a_N b_N a_N a_0 frac N12 b_N b_0 frac 12 operatorname E_mu left sum_n1N x_nmu2 lambda_0 mu mu_02right end align 每種情形下，某變數的分佈引數取決於對另一變數的期望。可用正態分佈和伽馬分佈矩期望的標準公式推廣期望： begin align operatorname Etaumid a_N b_N frac a_Nb_N operatorname E left mumidmu_Nlambda_N1 right mu_N operatorname Eleft X2 right operatorname VarX operatorname EX2 operatorname E left mu2midmu_Nlambda_N1 right lambda_N1 mu_N2 end align 大多數時候將這些公式應用到上述方程不困難，但 b_N 需要更多工作： begin align b_N b_0 frac 12 operatorname E_mu left sum_n1N x_nmu2 lambda_0 mu mu_02right b_0 frac 12 operatorname E_mu left lambda_0Nmu2 2 left lambda_0mu_0 sum_n1N x_n right mu left sum_n1N x_n2 right lambda_0mu_02 right b_0 frac 12 left lambda_0Noperatorname E_mu mu2 2 left lambda_0mu_0 sum_n1N x_n rightoperatorname E_mu mu left sum_n1N x_n2 right lambda_0mu_02 right b_0 frac 12 left lambda_0N left lambda_N1 mu_N2 right 2 left lambda_0mu_0 sum_n1N x_n rightmu_N left sum_n1N x_n2 right lambda_0mu_02 right end align 這樣就可以寫出引數方程如下，不需要期望： begin align mu_N frac lambda_0 mu_0 N bar xlambda_0 N lambda_N lambda_0 N frac a_Nb_N bar x frac 1Nsum_n1N x_n a_N a_0 frac N12 b_N b_0 frac 12 left lambda_0N left lambda_N1 mu_N2 right 2 left lambda_0mu_0 sum_n1N x_n right mu_N left sum_n1N x_n2 right lambda_0mu_02 right end align 注意 lambda_N 和 b_N 存在相互依賴關係，自然產生了類似最大期望演算法的演算法： 計算 sum_n1N x_n sum_n1N x_n2 用所得值計算 mu_N a_N 初始化 lambda_N 為任意值。 用 lambda_N 的現值和其它引數的已知值計算 b_N。 用 b_N 的現值和其它引數的已知值計算 lambda_N。 重複最後兩部，直到收斂（即直到兩值的更新量不超過閾值）。 然後就有了後驗引數近似分佈的超引數值，可用於計算後驗的任何屬性，如均值、方差、95 最高密度區域（包含總機率 95 的最小區間）等等。 可以證明這種演算法保證收斂到區域性極大值。 還要注意，後驗分佈與相應的先驗分佈有同樣的形式。只需假設分佈可以分解，分佈形式便隨之而來。事實證明，後驗、先驗形式相同並非巧合，而是先驗分佈為指數族成員時的一般結果，大多數標準分佈都如此。 進一步討論 分步法 上面例子展示了給定貝葉斯網路中推導後驗機率密度的變分貝葉斯近似的方法： 用圖模式描述網路，確定觀察變數（資料）mathbf X 和未觀察變數（引數 boldsymbolTheta、潛變數 mathbf Z）及其條件機率分佈。之後，變分貝葉斯構建後驗機率 p mathbf ZboldsymbolThetamidmathbf X，這近似具有可分解分佈的基本特性，即是多個獨立分佈在不相交的未觀測變數子集上的積。 將未觀測變數劃分為多個子集，在其上推匯出獨立因子。這種方法沒有通用的程式，子集太多會使近似結果不佳，子集過少會使整個變分貝葉斯方法變得難以實現。第一種分割方法是將引數和潛變數分開，一般足以產生可操作的結果。劃分記作 mathbf Z_1ldotsmathbf Z_M。 對給定的劃分 mathbf Z_j，用基本方程 ln q_jmathbf Z_jmid mathbf X operatorname E_i neq j ln p mathbf Z mathbf X text constant 寫出最佳近似分佈 q_jmathbf Z_jmid mathbf X。 用圖模式填寫聯合機率分佈公式。任何不涉及 mathbf Z_j 中變數的分量條件分佈都可忽略，它們將被摺疊到常數項中。 按上面例子，簡化公式並應用期望運算元。理想情況下這應該簡化為不屬於 mathbf Z_j 的變數的基本函式的期望（如第一或第二原始矩、對數期望等等）。為讓變分貝葉斯方法順利執行，這些期望值通常應可以解析地表為變數分佈的引數和 或超引數的函式。這些期望項對當前劃分的變數都是常數。 式對當前劃分中變數的函式形式表明了分佈的型別。特別地，取公式指數，便得到分佈的機率密度函式（PDF）（或至少是與之成正比的函式，帶未知歸一化常數）。要使方法可操作，應能識別出函式形式所屬的已知分佈；要將公式轉為匹配已知分佈的 PDF 的形式，可能需要大量計算。若能做到，就可根據定義恢復歸一化常數，並提取公式中的適當部分得到已知分佈的引數方程。 期望都可用非當前劃分變數的函式進行解析替換、並將 PDF 轉為可與已知分佈相對應的形式，此時結果應是一組方程，將最優引數值表為其他劃分變數引數的函式。 若這程式適用於所有劃分，就會產生相互依賴的方程組，指明所有引數的最優值。 最大期望演算法型程式可為每個引數選取初值，再迭代。每一步中，我們都會在方程中迴圈，依次更新每個引數。可以確證收斂。 另見 變分訊息傳遞：半分貝葉斯推理的模式化演算法 變分自編碼器：屬於機率圖模式和變分貝葉斯法的 ANN 最大期望演算法：與變分貝葉斯推理特例相對應的一種相關方法 廣義濾波：非線性狀態空間模型的變分濾波框架 變分法：數學分析中處理最值化函式的領域 參考文獻 外部連結 The online textbook Information Theory Inference and Learning Algorithms by David JC MacKay provides an introduction to variational methods p 422 A Tutorial on Variational Bayes Fox C and Roberts S 2012 Artificial Intelligence Review VariationalBayes Repository A repository of research papers software and links related to the use of variational methods for approximate Bayesian learning up to 2003 Variational Algorithms for Approximate Bayesian Inference by M J Beal includes comparisons of EM to Variational Bayesian EM and derivations of several models including Variational Bayesian HMMs HighLevel Explanation of Variational Inference by Jason Eisner may be worth reading before a more mathematically detailed treatment Copula Variational Bayes inference via information geometry pdf by Tran VH 2018 This paper is primarily written for students Via Bregman divergence the paper shows that Variational Bayes is simply a generalized Pythagorean projection of true model onto an arbitrarily correlated copula distributional space of which the independent space is merely a special case An in depth introduction to Variational Bayes note Nguyen D 2023 Category 貝葉斯統計