一枚硬币引发的百年之争

假设你拿到一枚硬币,抛了 10 次,7 次正面朝上。请问这枚硬币是公平的吗?

这个问题看似简单,却在统计学史上引发了持续百年的争论。两派给出了截然不同的回答:

  • 频率派:在数据量足够大之前,我不做判断。10 次太少,我需要更多数据才能给出置信区间。概率是客观存在的——如果你无限次重复抛掷,正面朝上的频率会趋近于一个固定值 θ,这个 θ 就是”概率”。
  • 贝叶斯派:在我看到数据之前,我假设硬币可能是公平的(先验信念)。看到 7/10 正面后,我更新了我的信念——现在我认为硬币偏向正面的可能性更大了。概率是我对不确定性的主观度量,它可以随证据不断更新。

同一个”抛硬币”问题,频率派说”概率是客观存在的频率极限”,贝叶斯派说”概率是我对这件事的信念程度”。

这不是一个简单的”谁对谁错”的问题。两种思路各自发展出了完整的理论体系、计算方法和工程工具,在机器学习的不同场景中各展所长。两种哲学,两条道路,却共同撑起了现代机器学习的半壁江山。

频率派:概率即频率

核心哲学

频率派(Frequentist)的核心信条可以概括为一句话:概率 = 长期重复试验中某事件发生的相对频率极限

这意味着:

  • 概率是客观属性,存在于事物本身,不依赖于观察者的信念
  • 未知参数 θ 是一个固定但未知的常数,不是随机变量
  • 统计推断的目标:利用样本数据对 θ 进行估计或检验
  • 只有可重复的随机现象才有概率可言

核心方法

最大似然估计(MLE)

频率派参数估计的基石。思路极其直接:在所有可能的参数值中,选择那个让观测数据”最有可能”出现的参数值。

数学表达:

$$\hat{\theta}_{MLE} = \arg\max_{\theta} L(\theta; x) = \arg\max_{\theta} P(x \mid \theta)$$

其中$L(\theta; x)$是似然函数,表示在参数$\theta $下观测到数据 x 的概率。

以抛硬币为例,假设进行了 $n$ 次独立重复试验,观测到 $k$ 次正面朝上。设正面朝上的概率为 $\theta$,则似然函数为:

$$L(\theta; k, n) = \binom{n}{k} \theta^k (1-\theta)^{n-k}$$

为了计算方便,我们对其取对数,得到对数似然函数(常数项 $\log \binom{n}{k}$ 在求导时不产生影响):

$$\ell(\theta) = \log L(\theta; k, n) = k \log \theta + (n-k) \log (1-\theta)$$

将对数似然函数对 $\theta$ 求导,并令导数为零:

$$\frac{d\ell(\theta)}{d\theta} = \frac{k}{\theta} – \frac{n-k}{1-\theta} = 0$$

解该方程,可得参数 $\theta$ 的极大似然估计:

$$\hat{\theta}_{\text{MLE}} = \frac{k}{n}$$

由此可见,观测到的正面比例 $k/n$ 即为该二项分布模型下参数 $\theta$ 的极大似然估计值。

置信区间

频率派的”不确定性量化”工具。95% 置信区间的含义不是”参数有 95% 的概率落在这个区间内”(因为参数是固定的,要么在要么不在),而是:

如果重复抽样 100 次,每次构造一个区间,大约 95 个区间会包含真实参数。

这是一个关于方法的频率性质陈述,而非关于参数的概率陈述。

p 值与假设检验

频率派的决策框架:

  • 设定零假设 H₀(如”硬币公平”)
  • 计算在 H₀ 为真的前提下,观测到当前数据或更极端数据的概率——这就是 p 值
  • 如果 p < α(如05),拒绝 H₀

p 值回答的是:如果零假设为真,我看到的这些数据有多”奇怪”?

代表人物

人物 贡献
R.A. Fisher 最大似然估计、假设检验、p 值
Jerzy Neyman 置信区间理论、Neyman-Pearson 引理
Egon Pearson 与 Neyman 合作建立假设检验框架
Karl Pearson 卡方检验、 Pearson 相关系数

优势与局限

优势:

  • 无需主观先验,”让数据说话”
  • 理论性质优良(一致性、渐近正态性等大样本性质)
  • 计算简单,大多数情况下有解析解或快速数值解
  • 在大样本下表现优异

局限:

  • 小样本场景下估计不稳定
  • 无法回答”参数在某区间的概率”这类自然问题
  • 依赖重复抽样假设,对一次性事件无能为力
  • p 值容易被误用和误读

贝叶斯派:概率即信念

核心哲学

贝叶斯派(Bayesian)的核心信条:概率 = 对不确定性程度的度量(可以随证据更新)

这意味着:

  • 概率是主观的,反映观察者的知识和信念
  • 未知参数 θ 是一个随机变量,有自己的概率分布
  • 统计推断的核心:贝叶斯定理——用数据更新对参数的信念
  • 即使是不可重复的事件,也可以赋予概率

贝叶斯定理

整个贝叶斯学派的数学基石:

$$P(\theta \mid x) = \frac{P(x \mid \theta) \cdot P(\theta)}{P(x)}$$

即:

后验 = 似然 × 先验 / 证据

  • 先验$P(\theta)$:看到数据之前对参数的信念
  • 似然$P(x \mid \theta)$:参数为θ时观测到数据的概率
  • 后验$P(\theta \mid x)$:看到数据后更新的信念
  • 证据$P(x)$:归一化常数,保证后验是合法概率分布

贝叶斯推断的本质就是:先验 → 观测数据 → 后验,一个不断用证据更新信念的过程。

核心方法

共轭先验

如果先验和后验属于同一分布族,则称该先验为似然的共轭先验。这能让贝叶斯更新有解析解。

似然函数 共轭先验 后验分布
Bernoulli / Binomial Beta Beta
Poisson Gamma Gamma
Normal (已知方差) Normal Normal
Normal (已知均值) Inverse-Gamma Inverse-Gamma
Multinomial Dirichlet Dirichlet

以抛硬币为例,使用 Beta(α, β) 作为先验,观测到 k 次正面、n-k 次反面后:

后验 ~ Beta(α + k, β + n – k)

一行公式就完成了信念更新,优雅至极。

MCMC(马尔可夫链蒙特卡洛)

当后验没有解析解时(大多数实际问题的常态),MCMC 是贝叶斯推断的主力计算引擎。

核心思想:构造一条马尔可夫链,使其平稳分布就是目标后验分布。运行足够长时间后,链上的样本就近似服从后验分布。

主要算法:

  • Metropolis-Hastings:最通用的 MCMC 算法,通过接受-拒绝机制采样
  • Gibbs Sampling:适用于高维问题,每次只更新一个维度
  • Hamiltonian Monte Carlo (HMC):利用梯度信息加速收敛
  • No-U-Turn Sampler (NUTS):HMC 的自适应版本,无需手动调步长

变分推断(Variational Inference)

MCMC 的”速度优先”替代方案。思路:用一个简单的参数化分布族去近似复杂的后验分布,通过最小化 KL 散度找到最优近似。

q*(θ) = argmin_q KL(q(θ) || P(θ | x))

  • MCMC:渐进无偏,但慢
  • 变分推断:有偏但快,适合大规模数据

代表人物

人物 贡献
Thomas Bayes 贝叶斯定理原始构想
Pierre-Simon Laplace 系统发展贝叶斯方法,独立推导定理
Harold Jeffreys 现代贝叶斯复兴先驱,Jeffreys 先验
Andrew Gelman 层次模型、Stan 语言创始人
John Kruschke 贝叶斯数据分析教科书作者

优势与局限

优势:

  • 自然融入先验知识
  • 给出参数的完整后验分布,不确定性量化更充分
  • 适合小样本场景
  • 可处理一次性事件
  • 层次模型天然支持多层级建模

局限:

  • 先验选择的主观性引发争议
  • 计算开销大(尤其 MCMC)
  • 收敛诊断困难
  • 模型构建更复杂

两派核心对比

哲学差异

频率派和贝叶斯派的分歧,本质上是对”什么是概率”这个根本问题的不同回答。这不仅是数学差异,更是认识论差异。

维度 频率派 贝叶斯派
概率定义 长期频率极限 不确定性/信念程度
参数性质 固定未知常数 随机变量
先验的作用 不使用 核心组件
推断结果 点估计 + 置信区间 完整后验分布
适用场景 可重复的大样本实验 小样本、一次性事件
计算复杂度 低(多为解析解) 高(MCMC/VI)
不确定性表达 置信区间(关于方法的频率性质) 可信区间(关于参数的概率陈述)

对”未知参数”的不同看法

这是两派最根本的分歧:

  • 频率派:硬币的正面概率 θ 是一个客观存在的固定值,比如52。我们的任务是用数据去估计它。θ 本身没有概率分布——它不是一个随机量。
  • 贝叶斯派:在观测数据之前,θ 的值是不确定的,这种不确定性可以用一个概率分布(先验)来表达。观测数据后,我们更新这个分布(后验)。θ 有概率分布——它是一个随机量。

小样本行为

场景 频率派 贝叶斯派
10 次抛硬币,7 正面 MLE = 0.7,但置信区间极宽 先验将估计拉向 0.5,后验分布反映不确定性
0 次试验 无法估计 后验 = 先验,仍可给出合理预测
1000 次试验 MLE 稳定,置信区间窄 先验影响可忽略,后验集中在 MLE 附近

大样本下两派趋同——这被称为贝叶斯一致性:当数据量趋于无穷时,后验分布会集中在 MLE 附近,先验的影响被数据淹没。

概率编程框架概览

概率编程语言(PPL)是将概率模型与编程语言结合的工具,让用户能用代码描述概率模型,自动完成推断。

贝叶斯框架

框架 语言 特点 典型用途
PyMC Python API 友好,NUTS 采样器,活跃社区 通用贝叶斯建模
Stan C++ / Python / R HMC 采样器,自动微分,高效 层次模型、回归
Pyro Python 基于 PyTorch,支持深度学习 贝叶斯深度学习
NumPyro Python JAX 后端,GPU 加速 大规模贝叶斯
TFP Python TensorFlow 生态,概率层 工业级概率建模

频率派工具

工具 语言 特点 典型用途
SciPy.stats Python 假设检验、分布函数 快速统计检验
statsmodels Python 回归分析、时间序列 计量经济学
scikit-learn Python ML 算法库,MLE 训练 分类、回归、聚类

 

频率派在机器学习中的应用

频率派思想渗透在机器学习的方方面面。几乎所有经典算法的底层都建立在频率派框架之上。

线性回归:OLS 与 MLE 的统一

普通最小二乘(OLS)回归是频率派的代表作。在误差服从正态分布的假设下,OLS 等价于 MLE:

$$\underbrace{\underset{\beta}{\min} \sum_{i=1}^{n} (y_i – \beta^T x_i)^2}_{\text{最小二乘估计}} \;\Longleftrightarrow\;\underbrace{\underset{\beta}{\max} \prod_{i=1}^{n} \mathcal{N}(y_i \mid \beta^T x_i, \sigma^2)}_{\text{高斯噪声下的最大似然估计}}$$

频率派回归的核心假设:参数$\beta $是固定值,噪声是随机变量。输出的是$\beta $的点估计和置信区间。

逻辑回归:最大似然的经典

逻辑回归通过最大似然估计训练:

$$\max_{\beta} \sum_{i} \left[ y_i \log \sigma(\beta^T x_i) + (1 – y_i) \log(1 – \sigma(\beta^T x_i)) \right]$$

其中$\sigma$是 sigmoid 函数。梯度下降优化这个对数似然,就是频率派的标准操作。

正则化:频率派的”先验”

L1 正则(Lasso)和 L2 正则(Ridge)从频率派角度看是”在损失函数中添加惩罚项”。有趣的是,它们有贝叶斯解读:

正则化 频率派视角 贝叶斯视角
L2 (Ridge) 参数 L2 范数惩罚 参数服从高斯先验
L1 (Lasso) 参数 L1 范数惩罚 参数服从拉普拉斯先验

这说明两派在实践中并非水火不容——很多频率派方法都有隐含的贝叶斯解读。

假设检验与特征选择

频率派的假设检验在 ML 特征选择中广泛应用:

  • t 检验 / F 检验:评估单个特征的显著性
  • 卡方检验:分类特征与目标变量的独立性检验
  • 逐步回归:基于 p 值的前向/后向特征选择

A/B 测试

互联网产品实验的金标准。频率派 A/B 测试流程:

  • 随机分组:用户随机分入对照组和实验组
  • 收集数据:观察两组的转化率等指标
  • 假设检验:计算 p 值,判断差异是否显著
  • 决策:p < 0.05 则上线新方案

贝叶斯派在机器学习中的应用

贝叶斯方法在机器学习中的价值主要体现在不确定性量化小样本学习两个方面。

贝叶斯线性回归

与频率派回归不同,贝叶斯回归对参数 β 维护一个后验分布,而非点估计:

$$\underbrace{P(\beta \mid D)}_{\text{后验分布}}  \propto  \overbrace{P(D \mid \beta)}^{\text{似然}} \cdot \overbrace{P(\beta)}^{\text{先验分布}}$$

预测时不是给出一个确定的$\hat{y}$,而是给出预测分布 P(y | x, D),包含均值(预测值)和方差(不确定性)。

核心优势:在数据稀疏区域自动给出更大的不确定性区间,避免过度自信的预测。

贝叶斯神经网络(BNN)

传统神经网络的权重是确定值,容易过拟合且无法量化预测不确定性。贝叶斯神经网络对每个权重维护一个后验分布:

$$\underbrace{P(W \mid D)}_{\text{后验分布}}  \propto  \overbrace{P(D \mid W)}^{\text{似然}} \cdot  \overbrace{P(W)}^{\text{先验分布}}$$

由于精确后验不可计算,实践中常用近似方法:

  • 变分推断:用高斯分布近似权重后验(如 Bayes by Backprop)
  • MC Dropout:训练时使用 Dropout,推理时也保持开启,多次采样取平均——一种近似贝叶斯推断
  • Laplace 近似:在 MAP 估计附近用高斯近似后验

BNN 的核心价值:

  • 认知不确定性(Epistemic):数据不足导致的不确定性,可通过收集更多数据减少
  • 偶然不确定性(Aleatoric):数据本身的噪声,无法通过数据减少

高斯过程(Gaussian Process)

贝叶斯非参数方法的代表。GP 直接在函数空间上定义先验,是”无限维”的贝叶斯推断:

$$f \sim \mathcal{GP}(m(x), k(x, x’))$$

GP 回归的特点:

  • 天然提供预测均值和方差(不确定性)
  • 在观测点附近不确定性小,远离观测点不确定性大
  • 核函数控制函数的平滑性和结构

典型应用:贝叶斯优化(超参数搜索)、地理空间建模、时间序列预测。

变分自编码器(VAE)

深度生成模型的贝叶斯杰作。VAE 用变分推断近似隐变量的后验分布:

  • 编码器:q(z|x) 近似后验 P(z|x)
  • 解码器:p(x|z) 似然函数
  • 目标:最大化 ELBO(证据下界)

$$\text{ELBO} = \underbrace{\mathbb{E}_{q(z \mid x)}[\log p(x \mid z)]}_{\text{重构项(期望似然)}} – \underbrace{\text{KL}(q(z \mid x) \parallel p(z))}_{\text{正则化项(先验约束)}}$$

第一项是重建质量,第二项是正则化(让近似后验接近先验)。这个 KL 项正是贝叶斯框架的体现。

贝叶斯优化

超参数调优的利器。流程:

  • 用 GP 对目标函数建模(初始几个点)
  • 用采集函数(如 EI、UCB)选择下一个评估点
  • 评估目标函数,更新 GP 后验
  • 重复直到预算耗尽

核心优势:每步评估都利用全部历史信息,评估次数极少(适合昂贵的黑盒函数优化)。

不确定性量化

贝叶斯方法在安全关键场景中不可替代:

场景 不确定性需求 贝叶斯方法
自动驾驶 感知预测置信度 BNN / Deep Ensemble
医疗诊断 诊断结果可信区间 贝叶斯逻辑回归
金融风控 预测区间与 VaR 贝叶斯时间序列
异常检测 异常概率而非硬判定 贝叶斯异常检测

代码实战:同一问题两种解法

抛硬币问题

问题:抛 10 次硬币,7 次正面,估计正面概率 θ。

import numpy as np
from scipy import stats
import matplotlib.pyplot as plt

# ========== 频率派:MLE + 置信区间 ==========
k, n = 7, 10
theta_mle = k / n  # MLE 估计
# Wilson 置信区间
z = 1.96
denom = 1 + z**2 / n
center = (theta_mle + z**2 / (2 * n)) / denom
margin = z * np.sqrt(theta_mle * (1 - theta_mle) / n + z**2 / (4 * n**2)) / denom
ci_low, ci_high = center - margin, center + margin

print(f"频率派 MLE: θ = {theta_mle:.3f}")
print(f"95% 置信区间: [{ci_low:.3f}, {ci_high:.3f}]")

# ========== 贝叶斯派:Beta 共轭先验 ==========
# 先验: Beta(1, 1) = 均匀分布(无信息先验)
alpha_prior, beta_prior = 1, 1
# 后验: Beta(alpha + k, beta + n - k)
alpha_post = alpha_prior + k
beta_post = beta_prior + (n - k)
posterior = stats.beta(alpha_post, beta_post)

print(f"\n贝叶斯后验: Beta({alpha_post}, {beta_post})")
print(f"后验均值: {posterior.mean():.3f}")
print(f"95% 可信区间: [{posterior.ppf(0.025):.3f}, {posterior.ppf(0.975):.3f}]")

# 如果先验认为硬币可能公平: Beta(5, 5)
alpha_prior2, beta_prior2 = 5, 5
alpha_post2 = alpha_prior2 + k
beta_post2 = beta_prior2 + (n - k)
posterior2 = stats.beta(alpha_post2, beta_post2)
print(f"\n强先验后验: Beta({alpha_post2}, {beta_post2})")
print(f"后验均值: {posterior2.mean():.3f}")
print(f"95% 可信区间: [{posterior2.ppf(0.025):.3f}, {posterior2.ppf(0.975):.3f}]")

运行结果:

频率派 MLE: θ = 0.700
95% 置信区间: [0.392, 0.893]

贝叶斯后验: Beta(8, 4)
后验均值: 0.667
95% 可信区间: [0.390, 0.881]

强先验后验: Beta(12, 8)
后验均值: 0.600
95% 可信区间: [0.408, 0.774]

关键对比:

  • MLE 直接给出7,但置信区间很宽(0.39~0.89)
  • 无信息先验的贝叶斯估计(667)比 MLE 略低——先验起到了”收缩”作用
  • 强先验(Beta(5,5))将估计进一步拉向5,后验均值 0.6,区间更窄——先验知识帮助稳定估计

线性回归:频率派 vs 贝叶斯派

import numpy as np
from scipy import stats

np.random.seed(42)
n = 20
x = np.linspace(0, 10, n)
true_slope, true_intercept = 2.0, 1.0
y = true_intercept + true_slope * x + np.random.normal(0, 2, n)

# ========== 频率派:OLS ==========
X = np.column_stack([np.ones(n), x])
beta_hat = np.linalg.inv(X.T @ X) @ X.T @ y
residuals = y - X @ beta_hat
sigma2 = np.sum(residuals**2) / (n - 2)
cov_beta = sigma2 * np.linalg.inv(X.T @ X)
se_beta = np.sqrt(np.diag(cov_beta))

print("=== 频率派 OLS ===")
print(f"截距: {beta_hat[0]:.3f} (SE={se_beta[0]:.3f})")
print(f"斜率: {beta_hat[1]:.3f} (SE={se_beta[1]:.3f})")
print(f"残差方差: {sigma2:.3f}")

# ========== 贝叶斯派:共轭先验 ==========
# 先验: β ~ N(0, 10²I), σ² ~ Inverse-Gamma(0.001, 0.001)
# 这里用简化版:已知方差的高斯先验
prior_var = 100  # 弱先验
sigma2_known = sigma2  # 用频率派估计的方差
prior_mean = np.zeros(2)

# 后验: N(μ_post, Σ_post)
cov_post = np.linalg.inv(X.T @ X / sigma2_known + np.eye(2) / prior_var)
mean_post = cov_post @ (X.T @ y / sigma2_known + prior_mean / prior_var)

print("\n=== 贝叶斯线性回归 ===")
print(f"截距: {mean_post[0]:.3f} (SD={np.sqrt(cov_post[0,0]):.3f})")
print(f"斜率: {mean_post[1]:.3f} (SD={np.sqrt(cov_post[1,1]):.3f})")

# 预测新点 x_new = 12(外推区域)
x_new = np.array([1, 12])
y_pred_freq = x_new @ beta_hat
y_pred_bayes_mean = x_new @ mean_post
y_pred_bayes_var = x_new @ cov_post @ x_new + sigma2_known

print(f"\n=== x=12 处预测 ===")
print(f"频率派预测: {y_pred_freq:.3f}")
print(f"贝叶斯预测: {y_pred_bayes_mean:.3f} ± {np.sqrt(y_pred_bayes_var):.3f}")

运行结果:

=== 频率派 OLS ===
截距: 0.816 (SE=0.952)
斜率: 2.083 (SE=0.164)
残差方差: 3.590

=== 贝叶斯线性回归 ===
截距: 0.822 (SD=0.927)
斜率: 2.082 (SD=0.160)

=== x=12 处预测 ===
频率派预测: 25.812
贝叶斯预测: 25.817 ± 2.231

对比要点:

  • 在数据范围内,两派的参数估计几乎一致(大样本趋同效应)
  • 贝叶斯方法额外给出预测分布——不仅有预测值,还有预测不确定性
  • 在外推区域(x=12 超出训练数据范围 [0, 10]),贝叶斯方法的不确定性会自动增大

使用 PyMC 进行贝叶斯推断

import pymc as pm
import numpy as np

# 数据
np.random.seed(42)
x = np.linspace(0, 10, 50)
y = 1.0 + 2.0 * x + np.random.normal(0, 2, 50)

# 贝叶斯线性回归模型
with pm.Model() as model:
    # 先验
    intercept = pm.Normal("intercept", mu=0, sigma=10)
    slope = pm.Normal("slope", mu=0, sigma=10)
    sigma = pm.HalfNormal("sigma", sigma=5)

    # 似然
    likelihood = pm.Normal("y", mu=intercept + slope * x, sigma=sigma, observed=y)

    # NUTS 采样
    trace = pm.sample(2000, tune=1000, chains=4, return_inferencedata=True)

# 查看后验
print(pm.summary(trace))
# 输出包含每个参数的均值、SD、94% HDI 等

何时选择哪一派

场景特征 推荐学派 理由
大样本(n > 1000) 均可,频率派更高效 大样本下两派趋同,频率派计算更快
小样本(n < 30) 贝叶斯派 先验可稳定估计,频率派不稳定
需要不确定性量化 贝叶斯派 后验分布天然提供完整不确定性
A/B 测试(标准场景) 频率派 流程成熟,易于沟通
A/B 测试(多臂老虎机) 贝叶斯派 自适应分配,减少遗憾
一次性事件 / 不可重复 贝叶斯派 频率派无法处理
实时推理需求 频率派 计算快,无采样开销
安全关键系统 贝叶斯派 不确定性感知决策
超参数优化 贝叶斯派 贝叶斯优化效率极高
深度学习 混合 MC Dropout 等融合方法

实践建议

  • 默认频率派:如果场景简单、数据充足、计算资源有限,频率派是高效的选择
  • 转向贝叶斯:当需要不确定性量化、小样本建模、先验知识融合时,贝叶斯方法更合适
  • 两者结合:现代实践中,两派经常融合——正则化可以看作隐含的贝叶斯先验,MC Dropout 是频率派训练+贝叶斯推理的混合
  • 关注计算成本:贝叶斯推断(尤其 MCMC)可能比频率派方法慢 10~100 倍,在工业级场景需评估可行性

总结

频率派和贝叶斯派并非对立,而是互补。它们从不同角度理解”概率”和”不确定性”,各自发展出了强大的工具链:

  • 频率派以 MLE 和假设检验为核心,计算高效、理论严谨,是大规模机器学习的主流选择
  • 贝叶斯派以后验分布和不确定性量化为核心,在小样本、安全关键、自适应决策场景中不可替代

现代机器学习的趋势是两派融合:

  • 深度学习中的 MC Dropout 将频率派训练与贝叶斯推理结合
  • 变分自编码器用神经网络做变分推断
  • 经验贝叶斯方法用数据估计先验,兼顾两派优势
  • 正则化本质上是频率派框架下的贝叶斯先验

理解两派的思想和工具,不是为了站队,而是为了在面对实际问题时,能从更丰富的工具箱中选出最合适的那一把。概率编程的未来,属于那些能够自由穿梭于两派之间的人。

0