AI 工程基础体系 · 第 48/100 篇。内容覆盖机器学习、深度学习与生成式 AI;模型、数据、评测、权限和成本会作为同一生产系统处理。

贝叶斯机器学习:先验、似然、后验、共轭与近似推断

贝叶斯机器学习的核心不是“给模型加一个概率”,而是把未知量、数据生成过程和不确定性放进同一个概率模型中。模型参数不再只有一个待优化的点估计,而可以有一个分布;预测也不再只输出一个数,而是对参数不确定性和数据噪声共同积分后的分布。

这套方法适用于传统机器学习、深度学习和生成式 AI,但计算难度会随模型复杂度迅速增加。理解贝叶斯方法,必须先区分以下对象:

  • 先验(prior):观察当前数据前,对未知量的概率描述。
  • 似然(likelihood):假设未知量取某个值时,当前数据出现的可能性。
  • 后验(posterior):观察数据后,对未知量更新得到的概率分布。
  • 证据或边际似然(evidence / marginal likelihood):在先验下,数据总体出现的概率。
  • 共轭(conjugacy):先验和后验属于同一分布族,从而可以解析更新。
  • 近似推断(approximate inference):无法精确计算后验或积分时,用采样、优化或其他近似方法求解。

1. 从概率模型开始:未知量、数据与生成过程

设:

  • DD 表示观测数据;
  • θ\theta 表示未知参数;
  • p(θ)p(\theta) 表示参数的先验分布;
  • p(Dθ)p(D\mid\theta) 表示数据在参数给定时的条件分布;
  • p(θD)p(\theta\mid D) 表示观察数据后的后验分布。

贝叶斯定理为:

p(θD)=p(Dθ)p(θ)p(D)p(\theta\mid D) = \frac{p(D\mid\theta)p(\theta)}{p(D)}

其中分母

p(D)=p(Dθ)p(θ)dθp(D)=\int p(D\mid\theta)p(\theta)\,d\theta

称为证据。离散参数时,积分替换为求和:

p(D)=θp(Dθ)p(θ)p(D)=\sum_\theta p(D\mid\theta)p(\theta)

因此,贝叶斯更新可以理解为:

后验=似然×先验证据\text{后验} = \frac{\text{似然}\times\text{先验}}{\text{证据}}

分子负责根据数据重新加权参数,分母负责归一化,使后验仍然是概率分布。

更完整的生成过程是:

  1. 按先验抽取参数:θp(θ)\theta\sim p(\theta)
  2. 在参数给定时生成数据:Dp(Dθ)D\sim p(D\mid\theta)
  3. 观测到 DD 后,反向推断 θ\theta

这与很多机器学习训练过程的区别在于:最大似然或经验风险最小化通常直接寻找一个参数点,而贝叶斯方法试图保留关于参数的分布信息。


2. 先验:数据出现前的概率约束

2.1 先验不是“主观猜测”这么简单

先验 p(θ)p(\theta) 可以来自:

  • 领域知识;
  • 历史数据;
  • 物理或业务约束;
  • 对模型复杂度的偏好;
  • 对参数尺度的正则化假设;
  • 层级模型中其他群体共享的信息。

例如,二分类点击率 pp 必须位于 [0,1][0,1],可以使用 Beta 分布:

pBeta(α,β)p\sim\operatorname{Beta}(\alpha,\beta)

其密度为:

p(p)=1B(α,β)pα1(1p)β1p(p) = \frac{1}{B(\alpha,\beta)} p^{\alpha-1}(1-p)^{\beta-1}

其中 α,β>0\alpha,\beta>0B(α,β)B(\alpha,\beta) 是 Beta 函数。

其期望和方差分别为:

E[p]=αα+β\mathbb E[p]=\frac{\alpha}{\alpha+\beta}

Var(p)=αβ(α+β)2(α+β+1)\operatorname{Var}(p) = \frac{\alpha\beta} {(\alpha+\beta)^2(\alpha+\beta+1)}

因此,Beta(2,2)\operatorname{Beta}(2,2) 的均值是 0.50.5,并且相较于均匀先验 Beta(1,1)\operatorname{Beta}(1,1),它更集中于中间区域,但仍然保持关于 0.50.5 的对称性。

先验的参数不仅表达“中心倾向”,还表达观察前的确定程度。对于同样均值的 Beta(2,2)\operatorname{Beta}(2,2)Beta(20,20)\operatorname{Beta}(20,20),后者代表更强的先验信念。

2.2 先验与正则化的关系

考虑线性回归:

y=Xw+ϵ,ϵN(0,σ2I)y=Xw+\epsilon,\qquad \epsilon\sim\mathcal N(0,\sigma^2I)

如果对参数使用高斯先验:

wN(0,τ2I)w\sim\mathcal N(0,\tau^2I)

则最大后验估计为:

w^MAP=argmaxwp(wD)\hat w_{\text{MAP}} = \arg\max_w p(w\mid D)

等价于最小化负对数后验:

w^MAP=argminw[12σ2yXw22+12τ2w22]\hat w_{\text{MAP}} = \arg\min_w \left[ \frac{1}{2\sigma^2}\|y-Xw\|_2^2 + \frac{1}{2\tau^2}\|w\|_2^2 \right]

第二项就是 L2 正则化。正则化系数与先验方差的关系为:

λ=σ2τ2\lambda=\frac{\sigma^2}{\tau^2}

这说明 L2 正则化可以解释为高斯先验下的 MAP 估计。但二者不能完全等同:

  • L2 正则化通常只返回一个点;
  • 贝叶斯推断保留完整的参数后验;
  • 贝叶斯预测还要对参数后验进行积分。

类似地,L1 正则化对应拉普拉斯先验的 MAP 解释,但仍不等于完整的贝叶斯拉普拉斯后验推断。

2.3 先验的风险

先验并非天然正确。常见风险包括:

  1. 先验过强:真实数据量不足以推翻错误先验;
  2. 先验不合理:把不应为零的参数区域概率设为零;
  3. 不恰当的无信息先验:某些“看起来均匀”的参数化在换一种参数化后并不均匀;
  4. 数据泄漏:用验证集、测试集或未来数据构造先验;
  5. 群体不一致:把一个群体的先验强行用于分布明显不同的群体。

在生产系统中,先验还可能携带权限和合规含义。例如历史审核结果若存在系统性偏差,将其作为强先验会把旧偏差传播到新模型中。先验的来源、版本和适用范围应当像训练数据一样记录。


3. 似然:固定参数后,数据有多符合模型

3.1 似然不是参数的概率

假设观测到数据 D=dD=d,似然写作:

L(θ;d)=p(dθ)L(\theta;d)=p(d\mid\theta)

它把数据固定,把 θ\theta 当作变量。此时它用于比较不同参数对数据的解释能力。

但必须注意:

p(dθ)p(θd)p(d\mid\theta) \neq p(\theta\mid d)

并且对固定的 θ\thetap(dθ)p(d\mid\theta) 是关于数据 dd 归一化的;把数据固定后,似然作为 θ\theta 的函数通常不需要积分为 1。

例如,抛硬币得到 8 次正面、2 次反面。若每次独立,正面概率为 θ\theta,则有两种常见写法。

如果只关心一个具体顺序,例如:

H,H,T,H,H,H,T,H,H,HH,H,T,H,H,H,T,H,H,H

则似然为:

p(Dθ)=θ8(1θ)2p(D\mid\theta)=\theta^8(1-\theta)^2

如果只记录“10 次中有 8 次正面”,不记录顺序,则数据服从二项分布:

p(k=8θ)=(108)θ8(1θ)2p(k=8\mid\theta) = \binom{10}{8}\theta^8(1-\theta)^2

组合数不依赖 θ\theta,所以在估计 θ\theta 时常常可以省略;但在比较不同数据事件的概率、计算证据或进行模型比较时,不能随意省略。

3.2 独立同分布是假设,不是事实

很多推导使用:

p(Dθ)=i=1np(xiθ)p(D\mid\theta) = \prod_{i=1}^{n}p(x_i\mid\theta)

这要求在给定 θ\theta 后,样本条件独立。若还假设每个样本来自同一个分布,则称为条件独立同分布。

真实数据经常违反这个条件:

  • 用户行为存在时间相关性;
  • 同一用户的样本不是独立样本;
  • 图数据中的节点相互依赖;
  • 视频帧具有强时序相关;
  • 训练集与线上流量发生分布漂移。

如果仍然使用独立似然,模型可能错误地把相关样本当作更多独立证据,从而让后验过度集中。此时应考虑时间序列模型、层级模型、相关噪声模型或稳健似然,而不是只增加正则化。


4. 后验:把先验和数据结合起来

后验的未归一化形式是:

p(θD)p(Dθ)p(θ)p(\theta\mid D) \propto p(D\mid\theta)p(\theta)

这里的“正比”表示只省略了与 θ\theta 无关的归一化常数。

后验通常有两个来源:

  • 先验对参数的初始约束;
  • 似然对参数的证据更新。

数据量增加时,若模型正确、样本条件独立并满足一定正则条件,似然通常会逐步占主导。但这不是无条件保证:模型错设、数据相关、参数不可识别或先验排除了真实区域时,更多数据也可能让错误结论更确定。

4.1 后验预测

机器学习最终通常关心新样本 x~\tilde x 的预测,而不是参数本身。后验预测分布为:

p(y~x~,D)=p(y~x~,θ)p(θD)dθp(\tilde y\mid \tilde x,D) = \int p(\tilde y\mid\tilde x,\theta) p(\theta\mid D) \,d\theta

这一步非常关键。它不是把参数替换成后验均值:

p(y~x~,E[θD])p(\tilde y\mid\tilde x,\mathbb E[\theta\mid D])

一般有:

p(y~x~,θ)p(θD)dθp(y~x~,E[θD])\int p(\tilde y\mid\tilde x,\theta)p(\theta\mid D)d\theta \neq p(\tilde y\mid\tilde x,\mathbb E[\theta\mid D])

原因是非线性预测函数不能随意把积分移入函数内部。

预测不确定性通常可拆成:

  1. 认知不确定性(epistemic uncertainty):参数或模型知识不足,增加数据可能降低;
  2. 偶然不确定性(aleatoric uncertainty):数据本身噪声,增加同类数据未必消除。

在回归中,如果:

yx,θN(fθ(x),σ2)y\mid x,\theta\sim\mathcal N(f_\theta(x),\sigma^2)

则后验预测方差可以写成:

Var(yx,D)=EθD[σ2]+VarθD[fθ(x)]\operatorname{Var}(y\mid x,D) = \mathbb E_{\theta\mid D}[\sigma^2] + \operatorname{Var}_{\theta\mid D}[f_\theta(x)]

第一项是观测噪声,第二项是参数不确定性。


5. 完整算例一:Beta-Binomial 共轭模型

设某功能的真实点击率为 θ\theta,先验为:

θBeta(2,2)\theta\sim\operatorname{Beta}(2,2)

观察到 n=10n=10 次曝光,其中 k=8k=8 次点击。条件似然为:

p(kθ)=(108)θ8(1θ)2p(k\mid\theta) = \binom{10}{8} \theta^8(1-\theta)^2

后验为:

p(θk)(108)θ8(1θ)2θ21(1θ)21θ8+21(1θ)2+21\begin{aligned} p(\theta\mid k) &\propto \binom{10}{8} \theta^8(1-\theta)^2 \cdot \theta^{2-1}(1-\theta)^{2-1}\\ &\propto \theta^{8+2-1}(1-\theta)^{2+2-1} \end{aligned}

因此:

θkBeta(2+8,2+2)=Beta(10,4)\theta\mid k \sim\operatorname{Beta}(2+8,2+2) = \operatorname{Beta}(10,4)

后验均值为:

E[θk]=1010+4=570.714\mathbb E[\theta\mid k] = \frac{10}{10+4} = \frac57 \approx0.714

相比样本比例 8/10=0.88/10=0.8,后验均值被先验中心 0.50.5 向下拉回。这是小样本下的收缩,而不是“修正答案”。

后验预测下一次点击的概率为:

p(x~=1D)=01θp(θD)dθ=E[θD]=57\begin{aligned} p(\tilde x=1\mid D) &= \int_0^1 \theta p(\theta\mid D)d\theta\\ &= \mathbb E[\theta\mid D]\\ &= \frac57 \end{aligned}

如果希望计算下一次点击率为 rr 的概率区间,就可以从 Beta(10,4)\operatorname{Beta}(10,4) 中取分位数,而不是把 0.7140.714 当成确定值。

5.1 证据在这个算例中的作用

证据为:

p(k=8)=(108)B(10,4)B(2,2)p(k=8) = \binom{10}{8} \frac{B(10,4)}{B(2,2)}

数值约为:

p(k=8)0.0944p(k=8)\approx0.0944

它表示:在先验 Beta(2,2)\operatorname{Beta}(2,2) 下,观察到“10 次中 8 次点击”这一事件的总体概率。

证据在参数后验中用于归一化;在模型比较中则有独立意义。例如比较两个先验、两个点击率模型或两个特征模型时,不能只比较各自的最大似然,因为证据会对整个参数空间进行平均,并自动惩罚把概率质量分散到大量不必要区域的模型。

5.2 可执行的数值验证

下面的代码使用 NumPy 从后验中采样,估计后验均值和下一次点击概率。它不依赖专用贝叶斯框架。

import numpy as np

rng = np.random.default_rng(42)

# 先验 Beta(2, 2),数据为 10 次曝光、8 次点击
alpha_prior, beta_prior = 2.0, 2.0
clicks, trials = 8, 10

alpha_post = alpha_prior + clicks
beta_post = beta_prior + trials - clicks

# 从 Beta(10, 4) 后验采样
samples = rng.beta(alpha_post, beta_post, size=200_000)

print("posterior mean:", samples.mean())
print("posterior 90% interval:",
      np.quantile(samples, [0.05, 0.95]))
print("predictive click probability:", samples.mean())

# 后验中“真实点击率大于 0.5”的概率
print("P(theta > 0.5 | data):", np.mean(samples > 0.5))

在固定随机种子下,输出会接近:

posterior mean: 0.714
posterior 90% interval: [约 0.50, 约 0.88]
predictive click probability: 0.714
P(theta > 0.5 | data): 约 0.94

区间的具体末位会随采样数量和实现细节略有变化。这里的 90% 区间是可信区间(credible interval):在给定模型、先验和数据后,参数落入该区间的后验概率为 90%。它不是频率学派置信区间的同一概念。


6. 共轭:后验仍属于同一个分布族

如果先验属于某个分布族,结合指定似然后,后验仍属于该分布族,则称先验与似然共轭。

共轭的价值是:

  • 后验形式可解析写出;
  • 更新规则清晰;
  • 不需要数值积分;
  • 可以快速计算预测分布和不确定性。

共轭不是一个“更正确”的概率假设,而是数学上的闭包性质。非共轭模型并不错误,只是通常需要数值推断。

6.1 高斯均值的共轭推导

设观测值满足:

xiμN(μ,σ2)x_i\mid\mu \sim \mathcal N(\mu,\sigma^2)

其中 σ2\sigma^2 已知,且先验为:

μN(μ0,τ02)\mu\sim\mathcal N(\mu_0,\tau_0^2)

给定 nn 个观测,样本均值为 xˉ\bar x。似然和先验相乘:

p(μD)exp(12σ2i=1n(xiμ)212τ02(μμ0)2)p(\mu\mid D) \propto \exp\left( -\frac{1}{2\sigma^2}\sum_{i=1}^n(x_i-\mu)^2 -\frac{1}{2\tau_0^2}(\mu-\mu_0)^2 \right)

展开关于 μ\mu 的项:

logp(μD)=12(nσ2+1τ02)μ2+(nxˉσ2+μ0τ02)μ+常数\begin{aligned} \log p(\mu\mid D) &= -\frac12 \left( \frac{n}{\sigma^2} + \frac{1}{\tau_0^2} \right)\mu^2\\ &\quad+ \left( \frac{n\bar x}{\sigma^2} + \frac{\mu_0}{\tau_0^2} \right)\mu +\text{常数} \end{aligned}

令后验精度为:

λn=1τn2=1τ02+nσ2\lambda_n = \frac{1}{\tau_n^2} = \frac{1}{\tau_0^2} + \frac{n}{\sigma^2}

则后验均值为:

μn=τn2(μ0τ02+nxˉσ2)\mu_n = \tau_n^2 \left( \frac{\mu_0}{\tau_0^2} + \frac{n\bar x}{\sigma^2} \right)

所以:

μDN(μn,τn2)\mu\mid D \sim \mathcal N(\mu_n,\tau_n^2)

这个公式体现了“精度加权”:

后验精度=先验精度+数据精度\text{后验精度} = \text{先验精度} + \text{数据精度}

6.2 数值算例

取:

  • μ0=0\mu_0=0
  • τ02=4\tau_0^2=4
  • σ2=1\sigma^2=1
  • 数据为 3,5,43,5,4,因此 n=3,xˉ=4n=3,\bar x=4

后验精度:

1τn2=14+3=134\frac1{\tau_n^2} = \frac14+3 = \frac{13}{4}

所以:

τn2=4130.308\tau_n^2=\frac4{13}\approx0.308

后验均值:

μn=0/4+34/11/4+3=48133.692\mu_n = \frac{ 0/4+3\cdot4/1 }{ 1/4+3 } = \frac{48}{13} \approx3.692

后验为:

μDN(4813,413)\mu\mid D \sim \mathcal N\left(\frac{48}{13},\frac4{13}\right)

下一次观测的后验预测分布为:

x~DN(μn,σ2+τn2)=N(4813,1713)\tilde x\mid D \sim \mathcal N\left( \mu_n,\, \sigma^2+\tau_n^2 \right) = \mathcal N\left( \frac{48}{13},\frac{17}{13} \right)

预测方差包含两部分:

  • 已知的观测噪声 11
  • μ\mu 的后验不确定性 4/134/13

6.3 常见共轭组合

数据模型 共轭先验 后验更新
Bernoulli / Binomial Beta 成功次数加到 α\alpha,失败次数加到 β\beta
Categorical / Multinomial Dirichlet 各类别计数加到对应浓度参数
Poisson Gamma 计数和暴露量分别更新
正态均值、方差已知 正态 精度相加
多元正态均值、协方差已知 多元正态 精度矩阵相加
线性回归、已知噪声方差 高斯 可解析得到高斯后验

共轭通常依赖特定参数化和条件,例如高斯线性回归的简单闭式后验要求噪声模型、先验和设计矩阵满足相应条件。改变似然、加入非线性激活、使用未知且有复杂约束的协方差,闭式解就可能消失。


7. 从完整后验到点估计:MLE、MAP 与贝叶斯预测

7.1 最大似然估计

最大似然估计寻找:

θ^MLE=argmaxθp(Dθ)\hat\theta_{\text{MLE}} = \arg\max_\theta p(D\mid\theta)

它只使用似然,不显式加入先验。

在抛硬币例子中:

θ^MLE=kn=810=0.8\hat\theta_{\text{MLE}}=\frac{k}{n}=\frac8{10}=0.8

7.2 最大后验估计

最大后验估计寻找:

θ^MAP=argmaxθp(θD)\hat\theta_{\text{MAP}} = \arg\max_\theta p(\theta\mid D)

等价于:

θ^MAP=argmaxθ[logp(Dθ)+logp(θ)]\hat\theta_{\text{MAP}} = \arg\max_\theta \left[ \log p(D\mid\theta)+\log p(\theta) \right]

MAP 是后验分布的众数,只保留一个参数点。它不是完整后验,也不一定等于后验均值。

对于 Beta 先验 Beta(α,β)\operatorname{Beta}(\alpha,\beta)kk 次成功、nkn-k 次失败,在 α+k>1,β+nk>1\alpha+k>1,\beta+n-k>1 时:

θ^MAP=α+k1α+β+n2\hat\theta_{\text{MAP}} = \frac{\alpha+k-1}{\alpha+\beta+n-2}

在前面的例子中:

θ^MAP=2+812+2+102=912=0.75\hat\theta_{\text{MAP}} = \frac{2+8-1}{2+2+10-2} = \frac9{12} = 0.75

三个值不同:

  • MLE:0.80.8
  • MAP:0.750.75
  • 后验均值:5/70.7145/7\approx0.714

它们回答的问题不同,不能互相替代。

7.3 决策不只取均值

如果行动 aa 的损失是 L(a,θ)L(a,\theta),贝叶斯决策规则选择:

a=argminaEθD[L(a,θ)]a^* = \arg\min_a \mathbb E_{\theta\mid D}[L(a,\theta)]

例如:

  • 对称平方损失下,后验均值最优;
  • 绝对损失下,后验中位数最优;
  • 非对称业务损失下,应使用相应分位数或直接计算期望损失。

因此,“使用后验均值”不是一般定理,而是特定损失函数下的决策结果。


8. 为什么真实机器学习模型通常不能直接算后验

在一般模型中:

p(θD)=p(Dθ)p(θ)p(Dθ)p(θ)dθp(\theta\mid D) = \frac{p(D\mid\theta)p(\theta)} {\int p(D\mid\theta)p(\theta)d\theta}

困难通常来自三处:

  1. 参数维度很高,积分维度等于参数数量;
  2. 神经网络后验可能多峰、强相关、非高斯;
  3. 似然包含非线性变换,无法与常见先验形成共轭结构。

例如逻辑回归:

yiBernoulli(σ(xiw))y_i\sim\operatorname{Bernoulli}(\sigma(x_i^\top w))

其中:

σ(z)=11+ez\sigma(z)=\frac1{1+e^{-z}}

若使用高斯先验 wN(0,τ2I)w\sim\mathcal N(0,\tau^2I),后验包含:

iσ(xiw)yi[1σ(xiw)]1yiexp(w22τ2)\prod_i \sigma(x_i^\top w)^{y_i} [1-\sigma(x_i^\top w)]^{1-y_i} \cdot \exp\left(-\frac{\|w\|^2}{2\tau^2}\right)

这个形式通常不是标准分布,因此没有像 Beta-Binomial 那样的闭式后验。


9. 近似推断方法

近似推断的目标不是简单“训练一个模型”,而是近似以下对象之一:

  • 后验分布 p(θD)p(\theta\mid D)
  • 后验预测 p(y~x~,D)p(\tilde y\mid\tilde x,D)
  • 证据 p(D)p(D)
  • 后验期望 E[f(θ)D]\mathbb E[f(\theta)\mid D]

不同方法保留的信息和误差类型不同。

9.1 蒙特卡洛方法

如果能够从后验中得到样本:

θ(1),,θ(S)p(θD)\theta^{(1)},\dots,\theta^{(S)} \sim p(\theta\mid D)

则后验期望可以用样本平均近似:

E[f(θ)D]1Ss=1Sf(θ(s))\mathbb E[f(\theta)\mid D] \approx \frac1S\sum_{s=1}^{S}f(\theta^{(s)})

后验预测也可以写成:

p(y~x~,D)1Ss=1Sp(y~x~,θ(s))p(\tilde y\mid\tilde x,D) \approx \frac1S\sum_{s=1}^{S} p(\tilde y\mid\tilde x,\theta^{(s)})

MCMC

马尔可夫链蒙特卡洛构造一个以目标后验为平稳分布的链。常见方法包括:

  • Metropolis-Hastings;
  • Gibbs sampling;
  • Hamiltonian Monte Carlo;
  • No-U-Turn Sampler。

MCMC 在理论上可以渐近逼近目标后验,但样本通常相关,实际有效样本数低于名义样本数。需要检查:

  • 多条链是否混合到相同区域;
  • R^\hat R 是否接近 1;
  • 有效样本数是否足够;
  • 是否存在发散、接受率异常或链滞留;
  • 后验预测和关键统计量是否稳定。

MCMC 的主要问题是计算成本。大型深度模型每次似然评估都要进行神经网络前向计算,梯度方法还需要反向传播,直接对数十亿参数做完整 MCMC 通常不现实。

9.2 拉普拉斯近似

设后验在 MAP 点 θ^\hat\theta 附近足够接近单峰光滑分布。对对数后验做二阶泰勒展开:

logp(θD)logp(θ^D)12(θθ^)H(θθ^)\log p(\theta\mid D) \approx \log p(\hat\theta\mid D) - \frac12 (\theta-\hat\theta)^\top H (\theta-\hat\theta)

其中:

H=θ2logp(θD)θ=θ^H = -\nabla^2_\theta \log p(\theta\mid D) \bigg|_{\theta=\hat\theta}

是负对数后验在 MAP 点的 Hessian 矩阵。于是:

q(θ)=N(θ^,H1)q(\theta) = \mathcal N(\hat\theta,H^{-1})

这把后验近似为一个高斯分布。

拉普拉斯近似适合:

  • 参数维度中等;
  • 后验近似单峰;
  • MAP 附近曲率能代表主要概率质量;
  • 需要比点估计更多的不确定性信息。

它可能失败于:

  • 多峰后验;
  • 强偏斜;
  • 边界参数;
  • 神经网络中的对称等价解;
  • Hessian 病态或计算成本过高。

如果真实后验有多个等价峰,而拉普拉斯近似只围绕一个峰展开,预测不确定性可能被严重低估。

9.3 变分推断

变分推断选择一个可计算的分布族 qϕ(θ)q_\phi(\theta),用它近似真实后验:

qϕ(θ)p(θD)q_\phi(\theta)\approx p(\theta\mid D)

通常最小化:

KL(qϕ(θ)p(θD))\operatorname{KL}(q_\phi(\theta)\|p(\theta\mid D))

由于后验含有未知证据,实际优化证据下界 ELBO:

L(ϕ)=Eqϕ(θ)[logp(D,θ)logqϕ(θ)]=Eq[logp(Dθ)]KL(qϕ(θ)p(θ))\begin{aligned} \mathcal L(\phi) &= \mathbb E_{q_\phi(\theta)} [\log p(D,\theta)-\log q_\phi(\theta)]\\ &= \mathbb E_q[\log p(D\mid\theta)] - \operatorname{KL}(q_\phi(\theta)\|p(\theta)) \end{aligned}

并满足:

logp(D)L(ϕ)\log p(D)\ge \mathcal L(\phi)

第一项鼓励模型解释数据,第二项约束近似后验不要无界偏离先验。

重参数化技巧

如果:

qϕ(θ)=N(μ,diag(σ2))q_\phi(\theta)=\mathcal N(\mu,\operatorname{diag}(\sigma^2))

可以写成:

θ=μ+σϵ,ϵN(0,I)\theta=\mu+\sigma\odot\epsilon, \qquad \epsilon\sim\mathcal N(0,I)

这样随机性转移到与参数无关的 ϵ\epsilon,可用梯度优化 μ,σ\mu,\sigma。这也是深度学习中常见的随机梯度变分推断基础。

变分推断的典型偏差

若选择均值场近似:

q(θ)=jqj(θj)q(\theta)=\prod_j q_j(\theta_j)

它无法表达参数之间的后验相关性。由于常用的是前向 KL:

KL(qp)\operatorname{KL}(q\|p)

在多峰分布上,近似分布可能只覆盖一个峰;在尾部概率上也可能过度自信。变分推断通常速度较快、适合小批量数据,但速度优势来自近似,不代表结果没有系统偏差。

9.4 其他近似方法

  • 期望传播(EP):逐项近似似然因子,常用于需要更好边缘近似的模型,但实现和收敛控制更复杂。
  • Laplace + 低秩或对角近似:降低 Hessian 存储和求逆成本,但可能丢失重要相关性。
  • 序贯蒙特卡洛:适合逐步引入数据或处理复杂后验,但计算量较大。
  • 随机梯度 MCMC:使用小批量梯度扩展 MCMC,但离散化误差、噪声校正和收敛诊断都更复杂。
  • 重要性采样:实现直观,但在高维空间容易出现权重退化。

没有一种近似方法在所有后验形状、数据规模和成本约束下都占优。


10. 深度学习中的贝叶斯推断

神经网络参数记为 ww,数据集为 DD

p(wD)p(Dw)p(w)p(w\mid D) \propto p(D\mid w)p(w)

如果对分类网络使用交叉熵,单个样本的负对数似然为:

logp(yixi,w)-\log p(y_i\mid x_i,w)

整个数据集的负对数似然就是交叉熵损失的总和。对 ww 施加高斯先验后,MAP 目标通常表现为:

交叉熵损失+L2 惩罚\text{交叉熵损失} + \text{L2 惩罚}

因此,普通深度学习训练可以在一定条件下解释为 MAP,但这不等于得到了神经网络权重的贝叶斯后验。

10.1 贝叶斯神经网络

贝叶斯神经网络希望推断:

p(wD)p(w\mid D)

并通过:

p(yx,D)=p(yx,w)p(wD)dwp(y\mid x,D) = \int p(y\mid x,w)p(w\mid D)dw

获得预测分布。

实践中常见近似包括:

  • 对权重分布做变分推断;
  • 对 MAP 附近做拉普拉斯近似;
  • 使用近似 MCMC;
  • 对模型或权重进行多次采样;
  • 用模型集成近似部分参数不确定性。

“深度集成”“随机失活预测”可能产生有用的不确定性估计,但不能未经说明就称为精确的贝叶斯后验采样。尤其是 MC Dropout 只有在特定模型、先验和变分解释下才具有贝叶斯近似含义;工程上更稳妥的说法是“基于随机失活的近似不确定性估计”。

10.2 神经网络不确定性的诊断

只输出 softmax 最大概率,不代表模型知道自己是否不确定。神经网络可能在分布外样本上给出高置信度错误预测。

应分别检查:

  • 分类概率校准;
  • 预测熵;
  • 置信区间覆盖率;
  • 分布内与分布外样本的区分;
  • 不同随机种子、后验样本或模型成员之间的分歧;
  • 数据漂移前后的不确定性变化。

校准不能只看平均准确率。一个分类模型可能准确率较高,但 90% 置信度预测只在 70% 的样本上正确,这说明概率输出不适合作为风险阈值依据。


11. 生成式 AI 中的贝叶斯视角

生成式模型通常定义:

pθ(x)p_\theta(x)

或条件生成分布:

pθ(yx)p_\theta(y\mid x)

以自回归语言模型为例:

pθ(y1:Tx)=t=1Tpθ(yty<t,x)p_\theta(y_{1:T}\mid x) = \prod_{t=1}^{T} p_\theta(y_t\mid y_{<t},x)

训练时最大化条件似然的对数:

tlogpθ(yty<t,x)\sum_t\log p_\theta(y_t\mid y_{<t},x)

若给参数 θ\theta 设置先验,就可以形式化为:

p(θD)p(Dθ)p(θ)p(\theta\mid D) \propto p(D\mid\theta)p(\theta)

对新输入的预测应为:

p(yx,D)=pθ(yx)p(θD)dθp(y\mid x,D) = \int p_\theta(y\mid x)p(\theta\mid D)d\theta

但大规模生成模型的参数量、后验多峰性和推理成本使完整贝叶斯权重推断非常昂贵。因此生产系统常采用更局部的近似:

  • 对小规模适配参数进行贝叶斯推断;
  • 对基础模型使用点估计权重,再对多个候选输出进行采样;
  • 用模型集成或多次生成估计部分预测分歧;
  • 使用验证集校准置信度;
  • 将检索证据、工具调用结果和模型生成分开记录。

需要区分三种不同现象:

  1. token 概率不确定性:模型对下一个 token 的概率分布;
  2. 解码随机性:temperature、top-k、top-p 等改变采样过程;
  3. 模型不确定性:参数后验或模型结构本身的不确定性。

调高 temperature 只能改变输出采样分布,不能自动得到参数后验,也不能保证生成内容更接近真实概率。

对生成式 AI 做风险控制时,单独观察平均似然也不够。还应评估:

  • 事实正确率和校准;
  • 长尾输入上的失败率;
  • 不同用户权限下可见数据是否影响生成;
  • 检索数据是否泄漏敏感信息;
  • 多次采样是否产生稳定答案;
  • 额外采样、集成和后验近似带来的延迟与推理成本。

12. 一个统一的数据流与生产边界

贝叶斯系统可以抽象为以下数据流:

flowchart LR
    A[先验 p(theta)] --> B[联合模型 p(D,theta)]
    C[训练数据 D] --> B
    B --> E[后验推断 p(theta|D)]
    E --> F[后验预测 p(y|x,D)]
    F --> G[决策与动作]
    G --> H[线上评测与反馈]
    H --> C
    I[权限与数据治理] --> C
    I --> G
    J[计算预算与延迟约束] --> E

关键路径是:

  1. 数据必须经过权限和治理检查,才能进入似然;
  2. 先验与数据共同决定后验;
  3. 后验通过积分或采样影响预测;
  4. 预测进入业务决策,而不是直接等同于行动;
  5. 线上反馈可以更新下一轮数据或先验,但不能未经审计地把测试结果回灌训练;
  6. 近似推断的采样数、链数、变分分布和缓存策略都会影响成本与延迟。

如果线上只允许几十毫秒延迟,完整 MCMC 可能不适合作为实时路径。可以把昂贵推断放在离线阶段,把后验样本、近似参数或校准器缓存下来;如果业务动作涉及高风险领域,则不能因为延迟约束而默默退化为未经验证的点估计。


13. 评测:不仅评估预测,还评估概率质量

13.1 对数评分与 Brier 分数

概率预测应使用与概率相匹配的指标。

二分类预测中,Brier 分数为:

1ni=1n(piyi)2\frac1n\sum_{i=1}^n(p_i-y_i)^2

其中 pip_i 是预测为正类的概率,yi{0,1}y_i\in\{0,1\}

对数损失为:

1ni=1n[yilogpi+(1yi)log(1pi)]-\frac1n\sum_{i=1}^n \left[ y_i\log p_i+(1-y_i)\log(1-p_i) \right]

对数损失会强烈惩罚把实际发生事件赋予极低概率的模型,因此能够反映概率分布质量,而不只是分类准确率。

13.2 可信区间的覆盖率

如果模型给出 90% 的后验预测区间,长期频率上的覆盖率不必自动等于 90%;覆盖率取决于模型是否正确、数据是否来自假设分布以及区间构造方式。

可以在独立评测集上检查:

  • 预测区间覆盖率;
  • 区间平均宽度;
  • 不同数据子群体的覆盖率;
  • 分布漂移前后的覆盖率。

区间很宽可能覆盖率高但决策价值低;区间很窄可能看起来精确却频繁漏掉真实结果。两者要结合评估。

13.3 后验预测检查

后验预测检查从后验中抽取参数,再生成模拟数据:

θ(s)p(θD)\theta^{(s)}\sim p(\theta\mid D)

Drep(s)p(Dθ(s))D_{\text{rep}}^{(s)} \sim p(D\mid\theta^{(s)})

然后比较真实数据 DD 与复制数据 DrepD_{\text{rep}} 的统计特征,例如:

  • 类别比例;
  • 长度分布;
  • 极端值;
  • 时间相关性;
  • 分组差异;
  • 错误样本的结构。

如果模型能准确拟合平均值,却无法生成类似的尾部行为,说明模型的似然或层级结构仍不充分。


14. 常见误解与反例

14.1 “先验会主导一切”

反例是大量、高质量且与先验冲突的数据。在合适模型下,似然会显著集中后验。真正需要担心的是:

  • 数据量小;
  • 先验方差过小;
  • 先验把真实区域概率设为零;
  • 似然模型错误;
  • 样本并非独立。

因此不能只问“是否使用先验”,还要做先验敏感性分析。使用多个合理先验,比较关键预测、决策和风险指标是否稳定。

14.2 “后验均值一定是最优参数”

只有在特定损失函数下才成立。平方损失下后验均值最优;绝对损失下后验中位数最优;非对称损失下最优决策可能是某个分位数或其他函数。

14.3 “共轭意味着模型更好”

共轭只说明可以解析更新。一个错误但共轭的似然,仍然会产生错误后验;一个合理但非共轭的模型,可能更符合数据。共轭的优势是计算方便,不是建模正确性的证明。

14.4 “置信区间和可信区间相同”

频率学派置信区间是一个随机区间构造的长期覆盖性质;贝叶斯可信区间是给定数据后参数的后验概率区间。它们在某些大样本或特殊模型中数值接近,但解释不同。

14.5 “后验很窄说明模型很可靠”

后验窄只说明在当前先验、似然和数据下,参数不确定性小。若数据重复计算、样本相关、标签泄漏或模型错设,后验可能“错误地自信”。

一个典型反例是把同一用户的 1,000 条高度相关日志当成 1,000 个独立样本。独立似然会把有效样本量高估,后验方差过小。修正方法可能包括按用户聚合、加入用户层级随机效应或建模相关结构。

14.6 “预测随机性就是贝叶斯不确定性”

生成模型改变随机种子或采样温度,得到多个答案,只能说明解码过程存在随机性。它不自动表示:

θp(θD)\theta\sim p(\theta\mid D)

若所有答案都来自同一个固定参数模型,那么模型参数不确定性仍未被显式积分。


15. 近似推断的诊断与失败表现

15.1 MCMC 失败表现

常见信号包括:

  • 不同链停留在不同峰;
  • R^\hat R 明显大于 1;
  • 有效样本数很低;
  • 参数轨迹长时间不动;
  • 采样出现大量发散;
  • 后验均值随采样长度明显变化。

恢复方式不是简单“多跑几步”。应检查参数化、尺度、先验、初始化和模型可识别性,必要时标准化特征、使用非中心参数化、改进采样器或简化模型。

15.2 变分推断失败表现

常见信号包括:

  • ELBO 看似收敛,但验证集概率质量很差;
  • 预测区间明显过窄;
  • 不同初始化得到不同局部最优;
  • 变分方差接近零;
  • 后验预测无法复现真实数据中的尾部或相关性。

恢复方式包括扩大近似族、加入协方差结构、使用多峰近似、改变 KL 方向或用 MCMC 对关键结果做抽样校验。ELBO 高不代表所有后验统计量都准确。

15.3 拉普拉斯近似失败表现

若 MAP 附近 Hessian 有负特征值、接近奇异或条件数极大,说明局部二次近似不稳定。深度网络还可能存在大量参数对称和近似平坦方向,使单个高斯近似无法覆盖真实后验结构。


16. 与 scikit-learn 和机器学习基础评估的衔接

scikit-learn User Guide 涵盖了监督学习、线性模型、朴素贝叶斯、概率校准、模型评估和模型选择等内容。工程上可以用这些组件验证贝叶斯思想的几个部分:

  • 用概率输出而不是只用类别标签;
  • 使用 log loss、Brier 分数等概率指标;
  • 检查交叉验证是否存在用户或时间泄漏;
  • 对概率进行校准;
  • 比较点估计模型与带不确定性估计模型的预测质量。

但 scikit-learn 中名为“Naive Bayes”的分类器,通常是对条件概率作特定独立性假设并进行高效参数估计;它不等于对任意机器学习模型执行完整的贝叶斯后验推断。类名中的 Bayes 与“是否保存完整参数后验”是两个不同问题。

Google Machine Learning Crash Course 对似然、损失、概率预测、泛化和评估的介绍,有助于理解最大似然训练及其指标;完整贝叶斯推断还需要额外处理先验、证据、后验积分和近似误差。


17. 如何选择推断方式

可以按问题结构选择:

  1. 存在可靠的共轭结构,维度较低
    优先使用解析后验,避免不必要的数值近似。

  2. 模型中等复杂,需要较准确的后验形状
    考虑 HMC、NUTS 或其他 MCMC,并进行收敛诊断。

  3. 需要大规模、小批量训练
    变分推断通常更容易扩展,但必须评估其方差低估和多峰丢失问题。

  4. 后验在单个 MAP 附近近似高斯
    可以考虑拉普拉斯近似,尤其是需要快速获得局部不确定性时。

  5. 只需一个可部署模型
    MLE 或 MAP 可能足够,但应明确放弃了完整参数不确定性。

  6. 高风险决策
    应优先评估后验预测、校准、覆盖率、分布外行为和决策损失,而不能只看训练损失或准确率。

选择还要纳入生产约束:

  • 数据访问权限决定哪些观测可以进入似然;
  • 训练和推断成本决定能否使用多链采样或多次后验预测;
  • 服务延迟决定是否需要离线缓存;
  • 模型、先验、推断器和评测集都需要版本化;
  • 线上反馈不能绕过数据治理直接改变先验或训练集。

18. 核心关系总结

贝叶斯机器学习可以用以下链条统一起来:

先验  +  似然    后验    后验预测    决策\boxed{ \text{先验} \;+\; \text{似然} \;\longrightarrow\; \text{后验} \;\longrightarrow\; \text{后验预测} \;\longrightarrow\; \text{决策} }

其中:

  • 先验描述观察数据前对未知量的约束;
  • 似然描述参数固定时数据的生成概率;
  • 后验是两者结合并归一化后的参数分布;
  • 共轭使后验可以在同一分布族中解析更新;
  • 近似推断用于处理无法解析计算的复杂后验;
  • 预测应对后验进行积分,而不是简单替换成一个参数点;
  • 评测必须检查概率质量、校准、不确定性和决策损失;
  • 生产系统还必须同时处理数据权限、模型版本、评测隔离与计算成本。

真正使用贝叶斯方法时,最重要的不是机械套用某个先验或算法,而是确认:概率模型是否符合数据生成过程,后验近似是否经过诊断,预测不确定性是否能够支持实际决策。


系列导航与关联阅读

官方资料

本文依据研究论文、标准组织与主流框架官方文档重新梳理;正文、示例与工程清单由 WR BLOG 编写。