跳转至

贝叶斯学习

概述

贝叶斯学习将概率推理作为机器学习的基础框架。与点估计方法不同,贝叶斯方法维护参数的完整后验分布,自然地量化不确定性。本文涵盖贝叶斯推断、共轭先验、MCMC、变分推断、贝叶斯神经网络和高斯过程。

派系视角:本文聚焦数学推导与算法细节;如需从 Domingos 五学派的角度看贝叶斯派整体(图模型 / 概率编程 / 贝叶斯深度学习等子分支),见 The Master Algorithm 笔记本 — 贝叶斯派


1. 贝���斯推断基���

1.1 贝叶斯公式

\[ p(\theta | D) = \frac{p(D | \theta) \, p(\theta)}{p(D)} \]
名称 含义
\(p(\theta \| D)\) 后验 (Posterior) 观察数据后对参数的信念
\(p(D \| \theta)\) 似然 (Likelihood) 给定参数,数据出现的概率
\(p(\theta)\) 先验 (Prior) 观察数据前对参数的信念
\(p(D)\) 证据 (Evidence) 边际似然,归一化常数

其中证据(边际似然):

\[ p(D) = \int p(D|\theta) p(\theta) \, d\theta \]

1.2 贝叶斯预测

预测时不使用单一参数估计,而是对所有可能的参数取加权平均:

\[ p(y^* | x^*, D) = \int p(y^* | x^*, \theta) \, p(\theta | D) \, d\theta \]

这自然地将参数不确定性传播到预测中��


2. MAP vs MLE

2.1 最大似然估计(MLE)

\[ \hat{\theta}_{MLE} = \arg\max_\theta p(D|\theta) = \arg\max_\theta \sum_{i=1}^{n} \log p(x_i | \theta) \]
  • 忽略先验信息
  • 可能过拟合(特别是数据少时)

2.2 最大后验估计(MAP)

\[ \hat{\theta}_{MAP} = \arg\max_\theta p(\theta|D) = \arg\max_\theta \left[\log p(D|\theta) + \log p(\theta)\right] \]
  • 先验起正则化作用
  • 高斯先验 \(\theta \sim \mathcal{N}(0, \sigma^2 I)\) 等价于 L2 正则化
  • 拉普拉斯先验 \(\theta \sim \text{Laplace}(0, b)\) 等价于 L1 正则化

2.3 完全贝叶斯 vs 点估计

方法 使用 不确定性
MLE 单一 \(\hat{\theta}\)
MAP 单一 \(\hat{\theta}\) 无(通过先验正则化)
完全贝叶斯 整个 \(p(\theta\|D)\) 完整不确定性量化

3. 共轭先验

当先验和后验属于同一分布族时,称先验为似然的共轭先验

似然 共轭先验 后验 应用
伯努利 \(\text{Ber}(p)\) Beta \(\text{Beta}(\alpha, \beta)\) \(\text{Beta}(\alpha+k, \beta+n-k)\) 硬币偏向
多项式 Dirichlet Dirichlet 类别概率
高斯(已知方差) 高斯 高斯 均值估计
高斯(已知均值) 逆 Gamma 逆 Gamma 方差估计
泊松 Gamma Gamma 频率估计

示例:Beta-Bernoulli

投硬币 \(n\) 次,正面 \(k\) 次:

\[ \text{先验}: p \sim \text{Beta}(\alpha, \beta) \]
\[ \text{后验}: p | \text{data} \sim \text{Beta}(\alpha + k, \beta + n - k) \]
\[ \text{后验均值}: \hat{p} = \frac{\alpha + k}{\alpha + \beta + n} \]

\(\alpha = \beta = 1\)(均匀先验),观察 10 次 7 正面:

\[ \hat{p}_{MAP} = 7/10, \quad \hat{p}_{Bayes} = 8/12 = 0.667 \]

贝叶斯估计向先验(0.5)收缩——自动正则化。


4. MCMC 方法

当后验分布没有解析形式时,使用马尔可夫链蒙特卡洛采样。

4.1 Metropolis-Hastings

def metropolis_hastings(log_posterior, initial, n_samples, proposal_std=1.0):
    samples = [initial]
    current = initial

    for _ in range(n_samples):
        # 提议新状态
        proposal = current + np.random.normal(0, proposal_std, size=current.shape)

        # 接受概率
        log_alpha = log_posterior(proposal) - log_posterior(current)

        # 接受或拒绝
        if np.log(np.random.uniform()) < log_alpha:
            current = proposal

        samples.append(current)

    return np.array(samples)

4.2 Gibbs 采样

逐个采样每个维度,条件于其他维度:

\[ \theta_j^{(t+1)} \sim p(\theta_j | \theta_1^{(t+1)}, \ldots, \theta_{j-1}^{(t+1)}, \theta_{j+1}^{(t)}, \ldots, \theta_d^{(t)}, D) \]

适用条件:每个条件分布容易采样。

4.3 Hamiltonian Monte Carlo(HMC)

利用哈密顿力学模拟,提高高维空间的采样效率:

  • 将参数空间视为物理系统
  • 引入"动量"变量辅助探索
  • NUTS(No-U-Turn Sampler)自动调参
# PyMC 示例
import pymc as pm

with pm.Model() as model:
    # 先验
    mu = pm.Normal("mu", mu=0, sigma=10)
    sigma = pm.HalfNormal("sigma", sigma=5)

    # 似然
    y_obs = pm.Normal("y", mu=mu, sigma=sigma, observed=data)

    # NUTS 采样
    trace = pm.sample(2000, tune=1000)

# 后验分析
pm.plot_trace(trace)
pm.summary(trace)

4.4 MCMC 诊断

诊断 方法 良好标准
收敛性 \(\hat{R}\)(Gelman-Rubin 统计量) \(\hat{R} < 1.01\)
有效样本量 ESS (Effective Sample Size) ESS > 400
自相关 Autocorrelation plot 快速衰减
轨迹图 Trace plot 平稳、混合良好

5. 变分推断(Variational Inference)

5.1 核心思想

用一个简单分布 \(q(\theta)\) 逼近真实后验 \(p(\theta|D)\),通过最小化 KL 散度:

\[ q^*(\theta) = \arg\min_{q \in \mathcal{Q}} \text{KL}(q(\theta) \| p(\theta|D)) \]

等价于最大化 ELBO(Evidence Lower Bound):

\[ \text{ELBO}(q) = \mathbb{E}_{q}[\log p(D, \theta)] - \mathbb{E}_{q}[\log q(\theta)] = \mathbb{E}_{q}[\log p(D|\theta)] - \text{KL}(q(\theta) \| p(\theta)) \]
\[ \log p(D) = \text{ELBO}(q) + \text{KL}(q \| p) \geq \text{ELBO}(q) \]

5.2 平均场近似(Mean-Field)

假设后验可分解为独立因子:

\[ q(\theta) = \prod_{j=1}^{d} q_j(\theta_j) \]

每个因子的最优解:

\[ \log q_j^*(\theta_j) = \mathbb{E}_{q_{-j}}[\log p(\theta, D)] + \text{const} \]

5.3 MCMC vs 变分推断

维度 MCMC 变分推断
准确性 渐近精确 近似(受 \(\mathcal{Q}\) 限制)
速度
可扩展性 差(高维困难)
诊断 有标准方法 难以诊断近似质量
适用 小规模、需要精确后验 大规模、快速推断

6. 贝叶斯神经网络(BNN)

6.1 动机

标准神经网络给出点预测,无法量化不确定性。BNN 将权重视为随机变量:

\[ p(w|D) \propto p(D|w) p(w) \]

6.2 近似方法

方法 原理 实用性
VI (Bayes by Backprop) 变分推断,重参数化技巧 中等
MC Dropout Dropout 作为近似 VI 高(简单实现)
Deep Ensemble 多个独立训练的模型
SWAG 基于 SGD 轨迹的高斯近似 中等

MC Dropout

# 训练时使用 Dropout
# 预测时保持 Dropout 开启,多次前向传播
predictions = []
for _ in range(100):
    pred = model(x, training=True)  # 保持 Dropout
    predictions.append(pred)

mean = np.mean(predictions, axis=0)     # 预测均值
std = np.std(predictions, axis=0)       # 不确定性

7. ��斯过程(Gaussian Process)

7.1 定义

高斯过程是函数上的分布。任意有限个点上的函数值服从多元高斯分布:

\[ f(x) \sim \mathcal{GP}(m(x), k(x, x')) \]

其中 \(m(x)\) 是均值函数,\(k(x, x')\) 是核函数。

7.2 GP 回归

给定观测 \((X, y)\),对新输入 \(x^*\) 的预测:

\[ f^* | X, y, x^* \sim \mathcal{N}(\mu^*, \sigma^{*2}) \]
\[ \mu^* = k(x^*, X)[k(X, X) + \sigma_n^2 I]^{-1} y \]
\[ \sigma^{*2} = k(x^*, x^*) - k(x^*, X)[k(X, X) + \sigma_n^2 I]^{-1} k(X, x^*) \]

7.3 常用核函数

核函数 表达式 特点
RBF(径向基) \(k(x, x') = \sigma^2 \exp\left(-\frac{\|x-x'\|^2}{2l^2}\right)\) 平滑,最常用
Matern \(k(x,x') = \frac{2^{1-\nu}}{\Gamma(\nu)}\left(\frac{\sqrt{2\nu}r}{l}\right)^\nu K_\nu\left(\frac{\sqrt{2\nu}r}{l}\right)\) 可控平滑度
线性 \(k(x, x') = \sigma^2 x^T x'\) 贝叶斯线性回归
周期 \(k(x, x') = \sigma^2 \exp\left(-\frac{2\sin^2(\pi\|x-x'\|/p)}{l^2}\right)\) 周期性数据

7.4 GP 的优缺点

优势 劣势
自然的不确定性量化 计算复杂度 \(O(n^3)\)
无需指定模型结构 不适合大规模数据
核函数灵活 高维输入困难
小数据表现好 核函数选择需要经验

参考资料

  • "Pattern Recognition and Machine Learning" - Christopher Bishop
  • "Machine Learning: A Probabilistic Perspective" - Kevin Murphy
  • "Gaussian Processes for Machine Learning" - Rasmussen & Williams
  • "Bayesian Reasoning and Machine Learning" - David Barber

评论 #