变分贝叶斯方法

变分贝叶斯方法是近似贝叶斯推理与机器学习中较难积分的一系列技术，通常用于由观测变量及未知参数、潜变量组成的复杂统计模型，之间存在的各种关系可用图模式描述。贝叶斯推理中，参数和潜变量一般归为“未观察变量”。变分贝叶斯方法主要用于两个目的：

- 提供未观测变量后验概率的分析近似，以便对变量统计推断
- 得出观测数据的边缘似然的下界（即给定模型的数据的边缘概率，边缘化未观测变量）。通常用于模型选择，一般认为给定模型的边缘似然越高，拟合效果越好，产生数据的可能性越大（另见贝叶斯因子）。

就目的1（近似后验概率），变分贝叶斯是蒙特卡洛法（特别是马尔可夫链蒙特卡洛，如吉布斯采样）的替代，可采用完全贝叶斯的方法，对难以取值或抽样的复杂分布进行统计推断。蒙特卡洛技术利用一组样本对精确后验值进行数值近似，而变分贝叶斯可求近似后验的局部最优的精确解析解。

变分贝叶斯可视作最大期望算法（EM）的推广，从估计参数的单一最似然值的最大后验概率（MAP估计），推广到计算参数及潜变量的整个近似后验分布的完全贝叶斯估计。贝叶斯估计同EM一样，也能找到一组最优参数值，且与EM有相同的交替结构——基于不能求解析解的相依方程组。

很多应用中，变分贝叶斯能更快得到与吉布斯采样精度相当的解，但推导迭代方程组需要更多工作。即便是很多概念上非常简单的模型也如此，下面以只有2个参数、没有潜变量的基本不分层模型为例说明。

## 数学推导

### 问题

变分推断中，数据$\mathbf{X}$的一组未观测变量$\mathbf{Z} = \{Z_1 \dots Z_n\}$的后验分布近似于所谓变分分布$Q(\mathbf{Z})$

$$P(\mathbf{Z}\mid \mathbf{X}) \approx Q(\mathbf{Z}).$$

分布$Q(\mathbf{Z})$属于在形式上比$P(\mathbf{Z}\mid \mathbf{X})$简单的分布族（如高斯分布族），这是为使$Q(\mathbf{Z})$与真实后验$P(\mathbf{Z}\mid \mathbf{X})$更相似。

相似性用不相似函数$d(Q; P)$衡量，推断（inference）通过求分布$Q(\mathbf{Z})$使$d(Q; P)$最小化进行。

### KL散度

最常见的变分贝叶斯法以Q与P的KL散度作为不相似函数，很适合最小化。KL散度的定义是

$$D_{\mathrm{KL}}(Q \parallel P) \triangleq \sum_\mathbf{Z} Q(\mathbf{Z}) \log \frac{Q(\mathbf{Z})}{P(\mathbf{Z}\mid \mathbf{X})}.$$

注意Q和P是相反的。反向KL散度在概念上类似于期望最大化算法（KL散度则产生期望传播算法）。

### 难解性

变分技术通常用于近似以下参数：

$$P(\mathbf Z \mid \mathbf X) = \frac{P(\mathbf X \mid \mathbf Z)P(\mathbf Z)}{P(\mathbf X)} = \frac{P(\mathbf X \mid \mathbf Z)P(\mathbf Z)}{\int_{\mathbf Z} P(\mathbf X,\mathbf Z') \,d\mathbf 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 Z)}{P(\mathbf X)}$，KL散度也可写作

$$D_{\mathrm{KL}}(Q \parallel P) = \sum_\mathbf{Z} Q(\mathbf{Z}) \left[ \log \frac{Q(\mathbf{Z})}{P(\mathbf{Z},\mathbf{X})} + \log P(\mathbf{X}) \right] = \sum_\mathbf{Z} Q(\mathbf{Z}) \left[ \log Q(\mathbf{Z}) - \log P(\mathbf{Z},\mathbf{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{KL}}(Q \parallel P) = \sum_\mathbf{Z} Q(\mathbf{Z}) \left[ \log Q(\mathbf{Z}) - \log P(\mathbf{Z},\mathbf{X}) \right] + \log P(\mathbf{X})$$

根据（离散随机变量）期望的定义，上式可以写作

$$D_{\mathrm{KL}}(Q \parallel P) = \mathbb{E}_{\mathbf Q } \left[ \log Q(\mathbf{Z}) - \log P(\mathbf{Z},\mathbf{X}) \right] + \log P(\mathbf{X})$$

重排为

$$\log P(\mathbf{X}) = D_{\mathrm{KL}}(Q \parallel P) - \mathbb{E}_{\mathbf Q } \left[ \log Q(\mathbf{Z}) - \log P(\mathbf{Z},\mathbf{X}) \right] = D_{\mathrm{KL}}(Q\parallel P) + \mathcal{L}(Q)$$

由于对数证据$\log P(\mathbf{X})$对于Q是定值，最大化末项$\mathcal{L}(Q)$会使Q对P的KL散度最小化。适当选择Q可以让$\mathcal{L}(Q)$更容易计算，更容易最大化，因此既有后验$P(\mathbf{Z}\mid \mathbf{X})$的解析近似Q，也有对数证据$\log P(\mathbf{X})$的下界$\mathcal{L}(Q)$（KL散度非负）。

下界$\mathcal{L}(Q)$与热力学自由能类似，也称作（负）变分自由能，因为它也可以表为负能量$\operatorname{E}_{Q}[\log P(\mathbf{Z},\mathbf{X})]$加Q的熵。$\mathcal{L}(Q)$项也称作证据下界（ELBO），是数据的对数证据的下界。

### 证明

根据布雷格曼散度（KL散度是其特例）的广义勾股定理，可以证明

<image>

$$D_{\mathrm{KL}}(Q\parallel P) \geq D_{\mathrm{KL}}(Q\parallel Q^{*}) + D_{\mathrm{KL}}(Q^{*}\parallel P), \forall Q^{*} \in\mathcal{C}$$

其中$\mathcal{C}$是凸集，且

$$Q = Q^{*} \triangleq \arg\min_{Q\in\mathcal{C}}D_{\mathrm{KL}}(Q\parallel P).$$

时等号成立。这时，全局最小值$Q^{*}(\mathbf{Z}) = q^{*}(\mathbf{Z}_1\mid\mathbf{Z}_2)q^{*}(\mathbf{Z}_2) = q^{*}(\mathbf{Z}_2\mid\mathbf{Z}_1)q^{*}(\mathbf{Z}_1)$，其中$\mathbf{Z}=\{\mathbf{Z_1},\mathbf{Z_2}\}$可以如下求得：

$$q^{*}(\mathbf{Z}_2) = \frac{P(\mathbf{X})}{\zeta(\mathbf{X})}\frac{P(\mathbf{Z}_2\mid\mathbf{X})}{\exp(D_{\mathrm{KL}}(q^{*}(\mathbf{Z}_1\mid\mathbf{Z}_2)\parallel P(\mathbf{Z}_1\mid\mathbf{Z}_2,\mathbf{X})))} = \frac{1}{\zeta(\mathbf{X})}\exp\mathbb{E}_{q^{*}(\mathbf{Z}_1\mid\mathbf{Z}_2)}\left(\log\frac{P(\mathbf{Z},\mathbf{X})}{q^{*}(\mathbf{Z}_1\mid\mathbf{Z}_2)}\right),$$

其中归一化常数为

$$\zeta(\mathbf{X}) =P(\mathbf{X})\int_{\mathbf{Z}_2}\frac{P(\mathbf{Z}_2\mid\mathbf{X})}{\exp(D_{\mathrm{KL}}(q^{*}(\mathbf{Z}_1\mid\mathbf{Z}_2)\parallel P(\mathbf{Z}_1\mid\mathbf{Z}_2,\mathbf{X})))} = \int_{\mathbf{Z}_{2}}\exp\mathbb{E}_{q^{*}(\mathbf{Z}_1\mid\mathbf{Z}_2)}\left(\log\frac{P(\mathbf{Z},\mathbf{X})}{q^{*}(\mathbf{Z}_1\mid\mathbf{Z}_2)}\right).$$

$\zeta(\mathbf{X})$项在实践中常称作证据下界（ELBO），因为$P(\mathbf{X})\geq\zeta(\mathbf{X})=\exp(\mathcal{L}(Q^{*}))$，如上所示。

交换$\mathbf{Z}_1,\ \mathbf{Z}_2$的角色，可以迭代计算真实模型边际$P(\mathbf{Z}_1\mid\mathbf{X}),\ P(\mathbf{Z}_2\mid\mathbf{X})$的近似$q^{*}(\mathbf{Z}_1),\ q^{*}(\mathbf{Z}_2)$。这种迭代保证单调收敛，但收敛到的$Q^{*}$只是$D_{\mathrm{KL}}(Q\parallel P)$的局部极小值。

若约束空间$\mathcal{C}$被限制在独立空间内，即$q^{*}(\mathbf{Z}_1\mid\mathbf{Z}_2) = q^{*}(\mathbf{Z_1})$，则上述迭代将成为所谓平均场近似（mean field approximation）$Q^{*}(\mathbf{Z}) = q^{*}(\mathbf{Z}_1)q^{*}(\mathbf{Z}_2),$。

## 平均场近似

变分分布$Q(\mathbf{Z})$常被假定为潜变量的某划分的因式分解，即对潜变量$\mathbf{Z}$的划分$\mathbf{Z}_1 \dots \mathbf{Z}_M$。

$$Q(\mathbf{Z}) = \prod_{i=1}^M q_i(\mathbf{Z}_i\mid \mathbf{X})$$

由变分法可以证明，对每个因子$q_j$的最佳分布$q_j^{*}$（就KL散度最小的分布而言，如上所述）满足

$$q_j^{*}(\mathbf{Z}_j\mid \mathbf{X}) = \frac{e^{\operatorname{E}_{q^*_{-j}} [\ln p(\mathbf{Z}, \mathbf{X})]}}{\int e^{\operatorname{E}_{q^*_{-j}} [\ln p(\mathbf{Z}, \mathbf{X})]}\, d\mathbf{Z}_j}$$

其中$\operatorname{E}_{q^*_{-j}} [\ln p(\mathbf{Z}, \mathbf{X})]$是数据与潜变量的对数联合概率的期望值，是相对于不属于划分的所有变量的$q^*$而取。关于$q_j^{*}(\mathbf{Z}_j\mid \mathbf{X})$的推导见的引理 4.1。

实践中，通常用对数表示：

$$\ln q_j^{*}(\mathbf{Z}_j\mid \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$的潜变量）的期望值的函数（有时还包括方差等高阶矩）。这就在某一划分的变量分布参数同其他划分的变量的期望值之间产生了循环依赖，自然就需要类似期望最大化算法的迭代法，以某种方式（也许随机）初始化潜变量期望（可能还有高阶矩），再利用当前期望依次计算每个分布的参数、适当设置新算出的分布的期望。这种算法保证收敛。

换一种说法，对每个变量划分，简化其中变量分布的表达式、研究分布与相关变量的函数依赖关系，通常就能确定分布的族（反过来确定了常数）。分布的参数公式可用先验分布的超参数（已知常数）表示，也可用其他划分中变量函数的期望表示。通常这些期望可简为变量本身的期望值函数（即平均值）；有时也会出现变量平方（与变量方差有关）或更高次幂高阶矩）的期望。其他变量的分布一般来自已知族，相关期望的公式可查到；但公式取决于分布的参数，参数又取决于其他变量的期望，所以每个变量的分布参数公式都可表为一群变量间非线性相互依赖的方程。通常不能直接求解，不过可以用简单的迭代算法，大多数时候都能保证收敛。

## 变分推理对偶公式

<image>

下面的定理称作变分推理对偶公式，解释了变分贝叶斯方法中变分分布的一些重要性质。

3 考虑两概率空间$(\Theta,\mathcal{F},P),\ (\Theta,\mathcal{F},Q)$，其中$Q \ll P$。假设存在共同的主导概率测度$\lambda$使$P \ll \lambda,\ Q \ll \lambda$。令h是$(\Theta,\mathcal{F},P)$上的任意实值随机变量，满足$h \in L_1(P)$，则下列等式成立

$$\log E_P[\exp h] = \text{sup}_{Q \ll P} \{ E_Q[h] - D_\text{KL}(Q \parallel P)\}.$$

此外，当且仅当（supremum）

$$\frac{q(\theta)}{p(\theta)} = \frac{\exp h(\theta)}{E_P[\exp h]},$$

关于概率测度Q几乎是确定的，其中$p(\theta) = dP/d\lambda,\ q(\theta) = dQ/d\lambda$分别表示概率测度P、Q对$\lambda$的Radon–Nikodym导数，右式才取上界。

## 基本例子

考虑简单的不分层贝叶斯模型，由来自正态分布（均值、方差未知）的独立同分布观测量组成。下面我们将详细介绍这模型，以说明变分贝叶斯方法的工作原理。

为了数学上的方便，下例中我们用精度（即方差倒数；多元正态分布时是协方差矩阵的逆。理论上精度和方差等价，因为两者间是双射）。

### 数学模型

将共轭先验分布置于未知均值$\mu$、精度$\tau$，即均值也遵循高斯分布，而精度遵循伽马分布。

$$\begin{align} \tau & \sim \operatorname{Gamma}(a_0, b_0) \\ \mu|\tau & \sim \mathcal{N}(\mu_0, (\lambda_0 \tau)^{-1}) \\ \{x_1, \dots, x_N\} & \sim \mathcal{N}(\mu, \tau^{-1}) \\ 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, \tau)=p(\mu,\tau\mid x_1, \ldots, x_N)$。

### 联合概率

所有变量的联合概率可重写为

$$p(\mathbf{X},\mu,\tau) = p(\mathbf{X}\mid \mu,\tau) p(\mu\mid \tau) p(\tau)$$

个体因子是

$$\begin{align} p(\mathbf{X}\mid \mu,\tau) & = \prod_{n=1}^N \mathcal{N}(x_n\mid \mu,\tau^{-1}) \\ p(\mu\mid \tau) & = \mathcal{N} \left (\mu\mid \mu_0, (\lambda_0 \tau)^{-1} \right ) \\ p(\tau) & = \operatorname{Gamma}(\tau\mid a_0, b_0) \end{align}$$

其中

$$\begin{align} \mathcal{N}(x\mid \mu,\sigma^2) & = \frac{1}{\sqrt{2\pi\sigma^2}} e^{\frac{-(x-\mu)^2}{2\sigma^2}} \\ \operatorname{Gamma}(\tau\mid a,b) & = \frac{1}{\Gamma(a)} b^a \tau^{a-1} e^{-b \tau} \end{align}$$

### 因式分解近似

假设$q(\mu,\tau) = q(\mu)q(\tau)$，即后验分布因式分解为$\mu,\ \tau$的独立因子。这种假设是变分贝叶斯方法的基础。事实上，真正的后验分布并非如此（这种简单情形我们知道它是正态-伽马分布），因此所得结果将是近似值。

### 导出q(μ)

则

$$\begin{align} \ln q_\mu^*(\mu) &= \operatorname{E}_\tau\left[\ln p(\mathbf{X}\mid \mu,\tau) + \ln p(\mu\mid \tau) + \ln p(\tau)\right] + C \\ <pre> &= \operatorname{E}_\tau\left[\ln p(\mathbf{X}\mid \mu,\tau)\right] + \operatorname{E}_\tau\left[\ln p(\mu\mid \tau)\right] + \operatorname{E}_{\tau}\left[\ln p(\tau)\right] + C \\ &= \operatorname{E}_\tau\left[\ln \prod_{n=1}^N \mathcal{N} \left (x_n\mid \mu,\tau^{-1} \right )\right] + \operatorname{E}_\tau\left[\ln \mathcal{N} \left (\mu\mid \mu_0, (\lambda_0 \tau)^{-1} \right )\right] + C_2 \\ &= \operatorname{E}_\tau\left[\ln \prod_{n=1}^N \sqrt{\frac{\tau}{2\pi}} e^{-\frac{(x_n-\mu)^2\tau}{2}}\right] + \operatorname{E}_{\tau}\left[\ln \sqrt{\frac{\lambda_0 \tau}{2\pi}} e^{-\frac{(\mu-\mu_0)^2\lambda_0 \tau}{2}}\right] + C_2 \\ &= \operatorname{E}_{\tau}\left[\sum_{n=1}^N \left(\frac{1}{2}(\ln\tau - \ln 2\pi) - \frac{(x_n-\mu)^2\tau}{2}\right)\right] + \operatorname{E}_{\tau}\left[\frac{1}{2}(\ln \lambda_0 + \ln \tau - \ln 2\pi) - \frac{(\mu-\mu_0)^2\lambda_0 \tau}{2}\right] + C_2 \\ &= \operatorname{E}_{\tau}\left[\sum_{n=1}^N -\frac{(x_n-\mu)^2\tau}{2}\right] + \operatorname{E}_{\tau}\left[-\frac{(\mu-\mu_0)^2\lambda_0 \tau}{2}\right] + \operatorname{E}_{\tau}\left[\sum_{n=1}^N \frac{1}{2}(\ln\tau - \ln 2\pi)\right] + \operatorname{E}_{\tau}\left[\frac{1}{2}(\ln \lambda_0 + \ln \tau - \ln 2\pi)\right] + C_2 \\ &= \operatorname{E}_{\tau}\left[\sum_{n=1}^N -\frac{(x_n-\mu)^2\tau}{2}\right] + \operatorname{E}_{\tau}\left[-\frac{(\mu-\mu_0)^2\lambda_0 \tau}{2}\right] + C_3 \\ &= - \frac{\operatorname{E}_{\tau}[\tau]}{2} \left\{ \sum_{n=1}^N (x_n-\mu)^2 + \lambda_0(\mu-\mu_0)^2 \right\} + C_3 </pre> \end{align}$$

上面的推导中，$C,\ C_2,\ C_3$指对$\mu$为常数的值。注意$\operatorname{E}_{\tau}[\ln p(\tau)]$项不是$\mu$的函数，无论$\mu$的值是多少，它都不变。因此，第三行中可以把它吸收到末尾的常数项，第七行也如此。

最后一行是$\mu$的二次多项式。由于这是$q_\mu^*(\mu)$的对数，我们可以看到$q_\mu^*(\mu)$本身是正态分布。

通过一些繁琐的计算（展开括号里的平方、分离出涉及$\mu$、$\mu^2$的项、对$\mu$应用配方法），可得到正态分布的参数：

$$\begin{align} \ln q_\mu^*(\mu) &= -\frac{\operatorname{E}_{\tau}[\tau]}{2} \left\{ \sum_{n=1}^N (x_n-\mu)^2 + \lambda_0(\mu-\mu_0)^2 \right\} + C_3 \\ <pre> &= -\frac{\operatorname{E}_{\tau}[\tau]}{2} \left\{ \sum_{n=1}^N (x_n^2-2x_n\mu + \mu^2) + \lambda_0(\mu^2-2\mu_0\mu + \mu_0^2) \right \} + C_3 \\ &= -\frac{\operatorname{E}_{\tau}[\tau]}{2} \left\{ \left(\sum_{n=1}^N x_n^2\right)-2\left(\sum_{n=1}^N x_n\right)\mu + \left ( \sum_{n=1}^N \mu^2 \right) + \lambda_0\mu^2-2\lambda_0\mu_0\mu + \lambda_0\mu_0^2 \right\} + C_3 \\ &= -\frac{\operatorname{E}_{\tau}[\tau]}{2} \left\{ (\lambda_0+N)\mu^2 -2\left(\lambda_0\mu_0 + \sum_{n=1}^N x_n\right)\mu + \left(\sum_{n=1}^N x_n^2\right) + \lambda_0\mu_0^2 \right\} + C_3 \\ &= -\frac{\operatorname{E}_{\tau}[\tau]}{2} \left\{ (\lambda_0+N)\mu^2 -2\left(\lambda_0\mu_0 + \sum_{n=1}^N x_n\right)\mu \right\} + C_4 \\ &= -\frac{\operatorname{E}_{\tau}[\tau]}{2} \left\{ (\lambda_0+N)\mu^2 -2\left(\frac{\lambda_0\mu_0 + \sum_{n=1}^N x_n}{\lambda_0+N} \right)(\lambda_0+N) \mu \right\} + C_4 \\ &= -\frac{\operatorname{E}_{\tau}[\tau]}{2} \left\{ (\lambda_0+N)\left(\mu^2 -2\left(\frac{\lambda_0\mu_0 + \sum_{n=1}^N x_n}{\lambda_0+N}\right) \mu\right) \right\} + C_4 \\ &= -\frac{\operatorname{E}_{\tau}[\tau]}{2} \left\{ (\lambda_0+N)\left(\mu^2 -2\left(\frac{\lambda_0\mu_0 + \sum_{n=1}^N x_n}{\lambda_0+N}\right) \mu + \left(\frac{\lambda_0\mu_0 + \sum_{n=1}^N x_n}{\lambda_0+N}\right)^2 - \left(\frac{\lambda_0\mu_0 + \sum_{n=1}^N x_n}{\lambda_0+N}\right)^2\right) \right\} + C_4 \\ &= -\frac{\operatorname{E}_{\tau}[\tau]}{2} \left\{ (\lambda_0+N)\left(\mu^2 -2\left(\frac{\lambda_0\mu_0 + \sum_{n=1}^N x_n}{\lambda_0+N}\right) \mu + \left(\frac{\lambda_0\mu_0 + \sum_{n=1}^N x_n}{\lambda_0+N}\right)^2 \right) \right\} + C_5 \\ &= -\frac{\operatorname{E}_{\tau}[\tau]}{2} \left\{ (\lambda_0+N)\left(\mu-\frac{\lambda_0\mu_0 + \sum_{n=1}^N x_n}{\lambda_0+N}\right)^2 \right\} + C_5 \\ &= -\frac{1}{2} (\lambda_0+N)\operatorname{E}_{\tau}[\tau] \left(\mu-\frac{\lambda_0\mu_0 + \sum_{n=1}^N x_n}{\lambda_0+N}\right)^2 + C_5 </pre> \end{align}$$

注意上面所有步骤用二次和公式都能化简。

即

$$\begin{align} q_\mu^*(\mu) &\sim \mathcal{N}(\mu\mid \mu_N,\lambda_N^{-1}) \\ \mu_N &= \frac{\lambda_0 \mu_0 + N \bar{x}}{\lambda_0 + N} \\ \lambda_N &= (\lambda_0 + N) \operatorname{E}_{\tau}[\tau] \\ \bar{x} &= \frac{1}{N}\sum_{n=1}^N x_n \end{align}$$

### 推导q(τ)

$q_\tau^*(\tau)$的推导大致相同，简洁起见略去细节。

$$\begin{align} \ln q_\tau^*(\tau) &= \operatorname{E}_{\mu}[\ln p(\mathbf{X}\mid \mu,\tau) + \ln p(\mu\mid \tau)] + \ln p(\tau) + \text{constant} \\ <pre> &= (a_0 - 1) \ln \tau - b_0 \tau + \frac{1}{2} \ln \tau + \frac{N}{2} \ln \tau - \frac{\tau}{2} \operatorname{E}_\mu \left [ \sum_{n=1}^N (x_n-\mu)^2 + \lambda_0(\mu - \mu_0)^2 \right ] + \text{constant} </pre> \end{align}$$

两侧取指数，可见$q_\tau^*(\tau)$服从伽马分布。

$$\begin{align} q_\tau^*(\tau) &\sim \operatorname{Gamma}(\tau\mid a_N, b_N) \\ a_N &= a_0 + \frac{N+1}{2} \\ b_N &= b_0 + \frac{1}{2} \operatorname{E}_\mu \left[\sum_{n=1}^N (x_n-\mu)^2 + \lambda_0(\mu - \mu_0)^2\right] \end{align}$$

### 计算参数

回忆前几节的结论：

$$\begin{align} q_\mu^*(\mu) &\sim \mathcal{N}(\mu\mid\mu_N,\lambda_N^{-1}) \\ \mu_N &= \frac{\lambda_0 \mu_0 + N \bar{x}}{\lambda_0 + N} \\ \lambda_N &= (\lambda_0 + N) \operatorname{E}_{\tau}[\tau] \\ \bar{x} &= \frac{1}{N}\sum_{n=1}^N x_n \end{align}$$

$$\begin{align} q_\tau^*(\tau) &\sim \operatorname{Gamma}(\tau\mid a_N, b_N) \\ a_N &= a_0 + \frac{N+1}{2} \\ b_N &= b_0 + \frac{1}{2} \operatorname{E}_\mu \left[\sum_{n=1}^N (x_n-\mu)^2 + \lambda_0(\mu - \mu_0)^2\right] \end{align}$$

每种情形下，某变量的分布参数取决于对另一变量的期望。可用正态分布和伽马分布矩期望的标准公式推广期望：

$$\begin{align} \operatorname{E}[\tau\mid a_N, b_N] &= \frac{a_N}{b_N} \\ \operatorname{E} \left [\mu\mid\mu_N,\lambda_N^{-1} \right ] &= \mu_N \\ \operatorname{E}\left[X^2 \right] &= \operatorname{Var}(X) + (\operatorname{E}[X])^2 \\ \operatorname{E} \left [\mu^2\mid\mu_N,\lambda_N^{-1} \right ] &= \lambda_N^{-1} + \mu_N^2 \end{align}$$

大多数时候将这些公式应用到上述方程不困难，但$b_N$需要更多工作：

$$\begin{align} b_N &= b_0 + \frac{1}{2} \operatorname{E}_\mu \left[\sum_{n=1}^N (x_n-\mu)^2 + \lambda_0(\mu - \mu_0)^2\right] \\ <pre> &= b_0 + \frac{1}{2} \operatorname{E}_\mu \left[ (\lambda_0+N)\mu^2 -2 \left (\lambda_0\mu_0 + \sum_{n=1}^N x_n \right )\mu + \left(\sum_{n=1}^N x_n^2 \right ) + \lambda_0\mu_0^2 \right] \\ &= b_0 + \frac{1}{2} \left[ (\lambda_0+N)\operatorname{E}_\mu[\mu^2] -2 \left (\lambda_0\mu_0 + \sum_{n=1}^N x_n \right)\operatorname{E}_\mu [\mu] + \left (\sum_{n=1}^N x_n^2 \right ) + \lambda_0\mu_0^2 \right] \\ &= b_0 + \frac{1}{2} \left[ (\lambda_0+N) \left (\lambda_N^{-1} + \mu_N^2 \right ) -2 \left (\lambda_0\mu_0 + \sum_{n=1}^N x_n \right)\mu_N + \left(\sum_{n=1}^N x_n^2 \right) + \lambda_0\mu_0^2 \right] \\ </pre> \end{align}$$

这样就可以写出参数方程如下，不需要期望：

$$\begin{align} \mu_N &= \frac{\lambda_0 \mu_0 + N \bar{x}}{\lambda_0 + N} \\ \lambda_N &= (\lambda_0 + N) \frac{a_N}{b_N} \\ \bar{x} &= \frac{1}{N}\sum_{n=1}^N x_n \\ a_N &= a_0 + \frac{N+1}{2} \\ b_N &= b_0 + \frac{1}{2} \left[ (\lambda_0+N) \left (\lambda_N^{-1} + \mu_N^2 \right ) -2 \left (\lambda_0\mu_0 + \sum_{n=1}^N x_n \right )\mu_N + \left (\sum_{n=1}^N x_n^2 \right ) + \lambda_0\mu_0^2 \right] \end{align}$$

注意$\lambda_N$和$b_N$存在相互依赖关系，自然产生了类似最大期望算法的算法：

- 计算$\sum_{n=1}^N x_n,\ \sum_{n=1}^N x_n^2.$用所得值计算$\mu_N,\ a_N.$
- 初始化$\lambda_N$为任意值。
- 用$\lambda_N$的现值和其它参数的已知值计算$b_N$。
- 用$b_N$的现值和其它参数的已知值计算$\lambda_N$。
- 重复最后两部，直到收敛（即直到两值的更新量不超过阈值）。

然后就有了后验参数近似分布的超参数值，可用于计算后验的任何属性，如均值、方差、95%最高密度区域（包含总概率95%的最小区间）等等。

可以证明这种算法保证收敛到局部极大值。

还要注意，后验分布与相应的先验分布有同样的形式。只需假设分布可以分解，分布形式便随之而来。事实证明，后验、先验形式相同并非巧合，而是先验分布为指数族成员时的一般结果，大多数标准分布都如此。

## 进一步讨论

### 分步法

上面例子展示了给定贝叶斯网络中推导后验概率密度的变分贝叶斯近似的方法：

- 用图模式描述网络，确定观察变量（数据）$\mathbf{X}$和未观察变量（参数$\boldsymbol\Theta$、潜变量$\mathbf{Z}$）及其条件概率分布。之后，变分贝叶斯构建后验概率$p(\mathbf{Z},\boldsymbol\Theta\mid\mathbf{X})$，这近似具有可分解分布的基本特性，即是多个独立分布在不相交的未观测变量子集上的积。
- 将未观测变量划分为多个子集，在其上推导出独立因子。这种方法没有通用的程序，子集太多会使近似结果不佳，子集过少会使整个变分贝叶斯方法变得难以实现。第一种分割方法是将参数和潜变量分开，一般足以产生可操作的结果。划分记作$\mathbf{Z}_1,\ldots,\mathbf{Z}_M$。
- 对给定的划分$\mathbf{Z}_j$，用基本方程$\ln q_j^{*}(\mathbf{Z}_j\mid \mathbf{X}) = \operatorname{E}_{i \neq j} [\ln p(\mathbf{Z}, \mathbf{X})] + \text{constant}$写出最佳近似分布$q_j^{*}(\mathbf{Z}_j\mid \mathbf{X})$。
- 用图模式填写联合概率分布公式。任何不涉及$\mathbf{Z}_j$中变量的分量条件分布都可忽略，它们将被折叠到常数项中。
- 按上面例子，简化公式并应用期望算子。理想情况下这应该简化为不属于$\mathbf{Z}_j$的变量的基本函数的期望（如第一或第二原始矩、对数期望等等）。为让变分贝叶斯方法顺利运行，这些期望值通常应可以解析地表为变量分布的参数和/或超参数的函数。这些期望项对当前划分的变量都是常数。
- 式对当前划分中变量的函数形式表明了分布的类型。特别地，取公式指数，便得到分布的概率密度函数（PDF）（或至少是与之成正比的函数，带未知归一化常数）。要使方法可操作，应能识别出函数形式所属的已知分布；要将公式转为匹配已知分布的PDF的形式，可能需要大量计算。若能做到，就可根据定义恢复归一化常数，并提取公式中的适当部分得到已知分布的参数方程。
- 期望都可用非当前划分变量的函数进行解析替换、并将PDF转为可与已知分布相对应的形式，此时结果应是一组方程，将最优参数值表为其他划分变量参数的函数。
- 若这程序适用于所有划分，就会产生相互依赖的方程组，指明所有参数的最优值。
- 最大期望算法型程序可为每个参数选取初值，再迭代。每一步中，我们都会在方程中循环，依次更新每个参数。可以确证收敛。

## 另见

- 变分消息传递：半分贝叶斯推理的模式化算法
- 变分自编码器：属于概率图模式和变分贝叶斯法的ANN
- 最大期望算法：与变分贝叶斯推理特例相对应的一种相关方法
- 广义滤波：非线性状态空间模型的变分滤波框架
- 变分法：数学分析中处理最值化函数的领域

## 外部链接

- The on-line textbook: Information Theory, Inference, and Learning Algorithms , by David J.C. MacKay provides an introduction to variational methods (p. 422).
- A Tutorial on Variational Bayes . Fox, C. and Roberts, S. 2012. Artificial Intelligence Review, 10.1007/s10462-011-9236-8.
- Variational-Bayes 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.
- High-Level 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, V.H. 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