Appearance
02 — 概率论与机器学习(Probability Theory for ML)
概率论(Probability Theory)是机器学习的核(kernel /ˈkɜːrnl/)心语言。几乎所有 ML 算法——从线性回归(regression /rɪˈɡreʃən/)的损失函数到贝叶斯推断,从随机(stochastic /stəˈkæstɪk/)梯度(gradient /ˈɡreɪdiənt/)下降到生成模型——都建立在概率论的基础之上。本章从概率分布出发,逐步展开贝叶斯定理、最大似然估计(MLE)、最大后验估计(MAP)以及期望与方差等核心概念,为后续理解各类 ML 模型打下坚实的数学基础。
1. 概率分布(Probability Distributions)
1.1 随机变量(Random Variable)
随机变量(Random Variable) 是将随机试验的结果映射为数值的函数,分为两类:
| 类型 | 取值 | 示例 |
|---|---|---|
| 离散型(Discrete) | 可数有限个或可数无限个 | 硬币正面次数、骰子点数 |
| 连续型(Continuous) | 某个区间内的任意实数 | 身高、温度、房价 |
1.2 概率质量函数(PMF)与概率密度函数(PDF)
- PMF(Probability Mass Function):描述离散随机变量取某个特定值的概率,满足
且 。 - PDF(Probability Density Function):描述连续随机变量在某个点处的"密度",满足
且 。某区间内的概率为 PDF 在该区间上的积分: 。
1.3 伯努利分布(Bernoulli Distribution)
伯努利分布(Bernoulli Distribution) 建模单次二值试验的结果,如抛一次硬币是否正面朝上。
参数(parameter /pəˈræmɪtər/):
PMF:
- 当
时, - 当
时,
期望与方差:
1.4 二项分布(Binomial Distribution)
二项分布(Binomial Distribution) 建模
参数:
PMF:
其中
期望与方差:
直觉:二项分布是伯努利分布的"重复版本"。当
时,二项分布退化为伯努利分布。
1.5 正态分布 / 高斯分布(Normal / Gaussian Distribution)
正态分布(Normal Distribution),也称高斯分布(Gaussian Distribution),是概率论中最核心的连续分布。中心极限定理(Central Limit Theorem)保证了大量独立随机变量之和趋近于正态分布,因此它在自然界和 ML 中无处不在。
参数:
PDF:
性质:
- PDF 关于
对称 控制分布的中心位置, 控制分布的宽度(标准差,Standard Deviation) - 68-95-99.7 法则:约 68% 的数据落在
内,95% 在 内,99.7% 在 内
联系与区别:伯努利和二项分布是离散分布,用于分类(classification /ˌklæsɪfɪˈkeɪʃən/)问题中的标签建模;正态分布是连续分布,广泛用于回归任务中的误差建模和参数初始化。
1.6 类别分布 / 多项分布(Categorical / Multinomial Distribution)
类别分布(Categorical Distribution) 是伯努利分布从 2 类到
类别分布参数:
类别分布 PMF:
其中
多项分布 PMF(
多项分布在 ML 中用于建模文本的词袋表示(Bag-of-Words)和分类问题的标签分布。
2. 条件概率与贝叶斯定理(Bayes' Theorem)
2.1 条件概率(Conditional Probability)
条件概率
乘法定理(Multiplication Rule)由上式直接可得:
2.2 全概率公式(Law of Total Probability)
若事件
2.3 贝叶斯定理(Bayes' Theorem)
贝叶斯定理将先验知识与观测数据结合,得到后验概率:
在 ML 中,我们通常写成以下形式:
其中:
| 符号 | 名称 | 含义 |
|---|---|---|
| 先验(Prior) | 观测数据之前,我们对参数 | |
| 似然(Likelihood) | 在参数 | |
| 证据(Evidence) | 数据出现的总概率(归一化(normalization /ˌnɔːrmələˈzeɪʃən/)常数) | |
| 后验(Posterior) | 观测数据之后,我们对 |
推导:由乘法定理,
,两边除以 即得上式。
2.4 经典案例:医学检测(Medical Test)
设某种疾病的患病率
若一个人检测结果为阳性(+),其真正患病的概率是多少?
直觉:即使检测灵敏度很高,由于患病率很低(1%),阳性结果的实际患病概率只有约 16.7%。这就是为什么大规模筛查中假阳性率不可忽视。
3. 最大似然估计 MLE(Maximum Likelihood Estimation)
3.1 核心思想
最大似然估计(MLE, Maximum Likelihood Estimation) 的核心问题是:给定观测数据
MLE 选择使似然函数(Likelihood Function)
3.2 似然函数 vs 概率密度函数
两者在数学形式上相同,但视角不同:
- PDF/PMF:给定
,描述数据 的分布 —— 是 的函数 - 似然:给定观测数据
,描述参数 的"解释能力" —— 是 的函数
3.3 MLE 实例:估计高斯分布的均值与方差
假设数据
Step 1:写出似然函数
Step 2:取对数(Log-Likelihood) —— 将乘积变为求和,便于求导
Step 3:对
MLE 对均值的估计就是样本均值(Sample Mean)。
Step 4:对
注意:
是有偏估计(Biased Estimator),分母为 而非 。样本方差(Sample Variance)常用无偏估计 ,分母 来自自由度修正。
3.4 MLE 的一般步骤
- 假设数据服从某个参数化分布
- 写出似然函数
- 取对数得到 Log-Likelihood
- 对参数
求偏导,令导数为零 - 解出
(可能需要数值优化)
4. 最大后验估计 MAP(Maximum A Posteriori Estimation)
4.1 从 MLE 到 MAP
MLE 只关注数据拟合,但当数据量少时,MLE 容易过拟合(overfitting /ˈoʊvərˈfɪtɪŋ/)(Overfitting)。MAP 引入先验(Prior)
由于
取对数形式:
4.2 MAP vs MLE
| 方面 | MLE | MAP |
|---|---|---|
| 优化目标 | ||
| 先验信息 | 不使用 | 使用 |
| 数据量少时 | 容易过拟合 | 更稳健(Regularized) |
| 当先验为均匀分布 | — | MAP = MLE |
| 计算复杂度 | 较低 | 略高(需要额外乘先验) |
4.3 MAP 与正则化(Regularization)的联系
取高斯先验
MAP 的优化目标变为:
等价于最小化带 L2 正则化(regularization /ˌreɡjələraɪˈzeɪʃən/)(L2 Regularization) 的负对数似然(Negative Log-Likelihood):
这正是岭回归(Ridge Regression) 的损失函数!类似地,拉普拉斯先验(Laplace Prior)对应 L1 正则化(Lasso)。
核心 insight:从贝叶斯角度看,正则化不是人为的技巧,而是对参数施加先验分布的自然结果。
5. 期望、方差与协方差(Expectation, Variance, Covariance)
5.1 期望(Expectation / Expected Value)
期望是随机变量在概率意义上的"加权平均"。
| 类型 | 定义 | 公式 |
|---|---|---|
| 离散型 | 每个可能值乘以其概率后求和 | |
| 连续型 | 对 PDF 进行加权积分 |
期望的线性性质(Linearity of Expectation) —— 非常强大且常用:
无论
对函数的期望(Law of the Unconscious Statistician, LOTUS):
5.2 方差(Variance)
方差衡量随机变量围绕其均值的离散程度:
标准差(Standard Deviation):
性质:
(常数平移不影响方差)
5.3 协方差与相关系数(Covariance & Correlation)
协方差(Covariance) 衡量两个随机变量共同变化的程度:
性质:
- 若
与 独立,则 (但反之不成立)
相关系数(Correlation Coefficient) 将协方差归一化到
:完全正相关; :完全负相关; :不相关
5.4 协方差矩阵(Covariance Matrix)
对于
协方差矩阵在 ML 中无处不在:
- 多元高斯分布(Multivariate Gaussian) 的 PDF 直接使用
- PCA 对协方差矩阵做特征值分解
- 线性判别分析(LDA) 使用类内协方差矩阵
5.5 全期望公式(Law of Total Expectation)
全期望公式(Law of Total Expectation / Law of Iterated Expectations) 是一个经常用到但容易被忽视的有用公式:
含义:整体期望 = 条件期望的期望。即先对每个
推导(离散情况):
5.6 代码精读:NumPy/SciPy 概率计算与 MLE 数值验证
把上面的公式用代码做一遍,既是验证,也是"把数学式子翻译成业务代码"的训练。
python
import numpy as np
from scipy import stats
# ── 1. 伯努利分布 ───────────────────────────────────────────
# 硬币正面概率 p=0.3,模拟 10 次
rng = np.random.default_rng(42)
flips = rng.binomial(n=1, p=0.3, size=10)
print("硬币序列:", flips) # e.g. [0 0 1 0 1 0 0 0 1 0]
# MLE 估计 p:正面次数 / 总次数
p_mle = flips.mean()
print(f"MLE 估计 p = {p_mle:.2f}") # 应接近 0.3(样本少时偏差大)
# ── 2. 正态分布 MLE ──────────────────────────────────────────
mu_true, sigma_true = 5.0, 2.0
data = rng.normal(mu_true, sigma_true, size=1000)
# MLE:μ̂ = 样本均值,σ̂² = 样本方差(分母 n)
mu_hat = data.mean()
sigma_hat = data.std(ddof=0) # ddof=0 → 分母 n(MLE),ddof=1 → n-1(无偏)
print(f"MLE 估计: μ={mu_hat:.3f}, σ={sigma_hat:.3f}")
# 会非常接近 (5.0, 2.0),因为 n=1000 足够大
# ── 3. 用 scipy 计算分布的 PDF/PMF/CDF ─────────────────────
x = np.linspace(0, 10, 200)
pdf_values = stats.norm.pdf(x, loc=mu_true, scale=sigma_true)
# stats.norm.pdf(x, loc=μ, scale=σ) = §1.5 公式里的 f(x) = (1/√(2πσ²)) * exp(...)
# 验证:对 PDF 做数值积分,结果应接近 1.0
from scipy.integrate import trapezoid
print(f"PDF 积分验证: {trapezoid(pdf_values, x):.6f}") # → 1.000000贝叶斯定理计算(§2 医学检测案例):
python
# 疾病患病率(先验)
P_disease = 0.01 # P(D=1)
P_healthy = 0.99 # P(D=0) = 1 - P(D=1)
# 检测灵敏度 / 特异性
P_pos_given_disease = 0.95 # P(+|D=1) — 患病且阳性的概率
P_pos_given_healthy = 0.05 # P(+|D=0) — 健康但阳性(假阳性)的概率
# 全概率公式:P(+) = P(+|D=1)*P(D=1) + P(+|D=0)*P(D=0)
P_positive = P_pos_given_disease * P_disease + P_pos_given_healthy * P_healthy
# 贝叶斯定理:P(D=1|+) = P(+|D=1) * P(D=1) / P(+)
P_disease_given_pos = P_pos_given_disease * P_disease / P_positive
print(f"检测阳性后的患病概率: {P_disease_given_pos:.4f}") # ≈ 0.161 (仅16%!)
# 这就是§2.4 案例的代码还原——结果令人意外,正说明先验概率 P(D)=1% 的重要性MAP vs MLE 的数值对比(先验如何产生正则化效果):
python
# 小样本下 MLE vs MAP(高斯先验,等价于 L2 正则化)
n_samples = 10 # 故意用小样本
small_data = rng.normal(mu_true, sigma_true, size=n_samples)
mu_mle = small_data.mean() # 纯 MLE:直接用样本均值
# MAP:高斯先验 μ ~ N(μ_0, τ²),后验均值解析解为加权平均
mu_0 = 0.0 # 先验均值(假设我们倾向于相信均值在 0 附近)
tau = 1.0 # 先验标准差
# 后验精度 = 似然精度 + 先验精度
precision_likelihood = n_samples / sigma_true**2
precision_prior = 1 / tau**2
mu_map = (precision_likelihood * mu_mle + precision_prior * mu_0) / \
(precision_likelihood + precision_prior)
print(f"真实 μ={mu_true}, MLE={mu_mle:.3f}, MAP={mu_map:.3f}")
# 小样本下 MAP 更接近 mu_true,MLE 波动更大
# 这正是 §4.3 说的"高斯先验 → L2 正则化"的效果6. 本章小结
| 概念 | 要点 | ML 中的典型用途 |
|---|---|---|
| 伯努利分布 | 单次二值试验,参数 | 二分类标签建模 |
| 二项分布 | 评估指标(Accuracy 的分布) | |
| 正态分布 | 误差项、参数初始化、特征归一化 | |
| 贝叶斯定理 | 贝叶斯推断、朴素贝叶斯分类器 | |
| MLE | 线性回归、逻辑回归的参数估计 | |
| MAP | 带正则化的模型训练 | |
| 期望 | 概率加权平均 | 损失函数(风险)的定义 |
| 方差/协方差 | 离散度 / 共变程度 | PCA、特征选择、正态分布参数 |
7. 进一步阅读
- Pattern Recognition and Machine Learning — Christopher Bishop, Ch. 1-2
- The Elements of Statistical Learning — Hastie et al., Ch. 2
- scipy.stats 官方文档(Probability Distributions)
- 3Blue1Brown 贝叶斯定理可视化
下一章:第3章 — 微积分与优化
配套代码:probability_demo.py — 分布可视化、贝叶斯计算、MLE 数值验证