AI基石 | 概率统计三剑客:从“神箭手”到“老侦探”,AI 如何看透不确定的世界?
本文深入探讨了AI处理不确定性的三大概率统计工具:分布模型、极大似然估计(MLE)和贝叶斯推理。首先,高斯分布作为核心分布模型,通过μ和σ描述数据的集中趋势与离散程度。MLE通过"眼见为实"原则,选择使观测数据概率最大的参数(如神经网络的损失函数)。
AI基石 | 概率统计三剑客:从“神箭手”到“老侦探”,AI 如何看透不确定的世界?
前言 在上一期,我们通过矩阵和特征值分解,学会了如何处理确定的数据结构。但在真实世界里,确定性是奢侈的,不确定性才是常态。
- 自动驾驶摄像头在雾天看到一个轮廓,它凭什么判断是人而不是树?
- ChatGPT 生成下一个字时,为什么选“快乐”而不是“开心”?
- 模型参数成千上万,如何保证它们不会死记硬背(过拟合)?
- 股票明天是涨是跌?
为了应对不确定性,AI 需要建立一套完整的概率世界观。这一阶段的数学基础,主要由三个部分组成:
- 分布模型 (Distribution Models):用来描述数据的形状。
- 极大似然估计 (MLE):用来根据数据反推模型的参数。
- 贝叶斯公式 (Bayes):用来结合经验和数据,做出更稳健的推断。
今天,我们就来彻底搞懂这概率统计的“三驾马车”。
一、 分布模型:给数据的“混乱”画像
如果我给你一堆杂乱无章的数据,AI 是无法理解的。AI 第一步要做的事,就是假设这些数据符合某种数学模型。这就叫“分布模型”。
在 AI 中,最重要、最无处不在的分布模型只有一个:高斯分布(Gaussian Distribution),也叫正态分布。
1. 为什么是高斯分布?
你有没有发现,自然界中几乎所有的事情都呈现“中间多、两头少”的规律?
- 人的身高:大部分人是中等身高,特别高和特别矮的很少。
- 考试成绩:大部分人集中在平均分附近,满分和零分很少。
- 传感器的噪音:大部分噪音在 0 附近波动。
中心极限定理 (Central Limit Theorem) 告诉我们:只要影响因素足够多且独立,最终的结果都会趋向于高斯分布。

对于 AI 来说,初始化神经网络的参数、扩散模型(Diffusion Model)的加噪过程,本质上都是在玩高斯分布。
-
公式外观:
f(x)=1σ2πe−(x−μ)22σ2 f(x) = \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{(x-\mu)^2}{2\sigma^2}} f(x)=σ2π1e−2σ2(x−μ)2
别被公式吓到,你只需要关注两个核心参数:
- μ (均值):决定了钟形曲线的中心位置(峰值在哪)。
- σ (标准差):决定了钟形曲线的胖瘦程度(数据有多离散)。
AI 的任务: 所谓的“训练模型”,很多时候就是在猜这堆数据背后的 μ 和 σ 是多少。
二、 MLE(极大似然估计):相信“眼见为实”的神箭手
既然假设数据服从某种分布(比如高斯分布),那我们怎么知道 μ 和 σ 具体是多少呢?
这就轮到 MLE (Maximum Likelihood Estimation) 出场了。它的核心思想极其简单粗暴:眼见为实。
🏹 场景:神箭手的靶子
假设墙上有几个弹孔(数据),主要集中在 10 环附近。
- 假设 A:射手瞄准的是 10 环(μ=10)。那么射出这些弹孔的概率(似然度)很高。
- 假设 B:射手瞄准的是 5 环(μ=5)。那么他偏离这么远射中 10 环的概率极低。
MLE 说:既然事情已经发生了,我就认为那个让这件事发生概率最大的参数,就是真实参数。
在深度学习中,Loss Function(损失函数) 的推导大多基于 MLE。 比如训练一个猫狗分类器,本质上就是调整参数,使得模型“看到这张图预测它是猫”的概率最大化。
三、 贝叶斯与 MAP:兼听则明的“老侦探”
MLE 有一个致命弱点:它太轻信数据了。如果数据太少,它会产生极端偏差。
比如抛硬币,只抛了一次,是正面。
- MLE(神箭手)会说:“数据告诉我,这枚硬币出现正面的概率是 100%。”
- 贝叶斯(老侦探)会说:“慢着!根据我的经验,硬币通常是均匀的。这一次正面可能是巧合。”
为了让大家深刻理解为什么我们需要贝叶斯,我们来看一个经典的医疗侦探难题。
🕵️♂️ 侦探难题:你真的生病了吗?
假设有一种罕见的病毒“X 病毒”,在人群中的感染率是 0.1%(即 1000 人里有 1 人感染)。
现在的检测技术非常先进,准确率高达 99%:
- 如果真的感染了,检测结果 99% 是阳性。
- 如果没感染,检测结果 99% 是阴性。
现在,你去做了检测,结果显示“阳性”。请问,你真正感染病毒的概率有多大?
- A. 99%
- B. 90%
- C. 不到 10%
直觉告诉我们是 A,但贝叶斯告诉我们,答案是 C(不到 9%)。
💡 贝叶斯公式的解密
P(观点∣事实)=P(事实∣观点)⋅P(观点)P(事实) P(\text{观点}|\text{事实}) = \frac{P(\text{事实}|\text{观点}) \cdot P(\text{观点})}{P(\text{事实})} P(观点∣事实)=P(事实)P(事实∣观点)⋅P(观点)
在这个案例中:
- 似然 (Likelihood):得了病测出阳性的概率是 99%。
- 先验 (Prior):但在茫茫人海中,你得病的概率本身只有 0.1%。
事实是: 假阳性的人数(999 个健康人 × 1%误诊率 ≈ 10 人)远远多于真阳性的人数(1 个病人)。所以即使你是阳性,你更有可能属于那 10 个被误诊的倒霉蛋。
🚀 进阶:MAP (最大后验估计)
MAP (Maximum A Posteriori) 就是贝叶斯思维在 AI 中的数学实现。
MAP≈MLE (似然)×Prior (先验) \text{MAP} \approx \text{MLE (似然)} \times \text{Prior (先验)} MAP≈MLE (似然)×Prior (先验)
- MLE 只在乎拟合数据。
- MAP 在拟合数据的同时,会被“先验”拉回来一点。
高能结论:
在深度学习中,我们常用的 L2 正则化(Weight Decay),本质上就是 MAP 估计!
-
我们假设参数 www 服从高斯分布(先验:参数不要太大)。
-
训练时,一边让 Loss 变小(MLE),一边限制 www 不要太大(Prior)。
这就是为了防止 AI 因为死记硬背数据(过拟合)而走火入魔。
四、 代码实战:高斯朴素贝叶斯分类器
为了一次性把**分布模型(高斯)、MLE(参数估计)、贝叶斯(分类推理)**全部讲清楚,我们手写一个 高斯朴素贝叶斯分类器 (Gaussian Naive Bayes)。
任务:根据身高和体重数据,判断一个人是“男”还是“女”。 假设:男生的身高体重服从一个高斯分布,女生的也服从另一个高斯分布。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
class GaussianNaiveBayes:
def __init__(self):
self.classes = None
self.parameters = {} # 存储每个类别的 mu 和 sigma
def fit(self, X, y):
"""
训练阶段 (MLE 过程):
通过数据,计算出每个类别下,特征的高斯分布参数 (均值和标准差)
"""
self.classes = np.unique(y)
for c in self.classes:
# 选出该类别的数据
X_c = X[y == c]
# MLE 核心:直接用数据的均值和标准差作为分布的参数
# axis=0 表示对每一列(身高、体重)分别计算
self.parameters[c] = {
'mean': X_c.mean(axis=0),
'std': X_c.std(axis=0)
}
def _calculate_likelihood(self, class_idx, x):
"""
计算似然 (Likelihood):
给定一个数据点 x,计算它在当前类别的分布模型中出现的概率密度
这里使用了高斯分布公式 (Distribution Model)
"""
mean = self.parameters[class_idx]['mean']
std = self.parameters[class_idx]['std']
# 使用高斯概率密度函数
# 假设特征之间独立,概率相乘
probability = norm.pdf(x, mean, std)
return np.prod(probability)
def predict(self, X):
"""
预测阶段 (Bayes 过程):
结合先验 (Prior) 和 似然 (Likelihood) 计算后验。
比较 P(男|数据) 和 P(女|数据),谁大选谁
"""
y_pred = []
for x in X:
posteriors = []
for c in self.classes:
# 1. 先验概率 (Prior):简单起见,假设男女概率相等 P(c)=0.5
prior = 0.5
# 2. 似然概率 (Likelihood): 代入高斯分布公式
# 问:如果他是男生,长成 x 这样的概率大吗?
likelihood = self._calculate_likelihood(c, x)
# 3. 后验概率 (Posterior) ∝ Prior * Likelihood
# 谁的后验概率大,就判给谁
posteriors.append(prior * likelihood)
# 选择后验概率最大的类别
y_pred.append(self.classes[np.argmax(posteriors)])
return np.array(y_pred)
# --- 数据生成与测试 ---
if __name__ == "__main__":
# 1. 生成模拟数据 (真实分布)
# 男生:身高均值175,体重均值70
male_data = np.random.normal([175, 70], [5, 10], size=(100, 2))
male_labels = np.zeros(100) # 0 代表男
# 女生:身高均值160,体重均值50
female_data = np.random.normal([160, 50], [5, 8], size=(100, 2))
female_labels = np.ones(100) # 1 代表女
# 合并数据
X_train = np.vstack((male_data, female_data))
y_train = np.hstack((male_labels, female_labels))
# 2. 训练模型 (MLE 估计参数)
model = GaussianNaiveBayes()
model.fit(X_train, y_train)
# 3. 打印模型“学”到的参数
print("模型学习到的高斯分布参数 (MLE结果):")
print(f"男生 (Class 0) - 均值: {model.parameters[0]['mean']}, 标准差: {model.parameters[0]['std']}")
# 男生 (Class 0) - 均值: [175.06363251 69.47691559], 标准差: [ 4.96265361 10.59187553]
print(f"女生 (Class 1) - 均值: {model.parameters[1]['mean']}, 标准差: {model.parameters[1]['std']}")
# 女生 (Class 1) - 均值: [160.35175948 49.86145698], 标准差: [4.95257209 8.0124332 ]
# 4. 预测新数据 (Bayes 推理)
new_person = np.array([[162, 53]]) # 身高162,体重53
prediction = model.predict(new_person)
label = "女生" if prediction[0] == 1 else "男生"
print(f"\n新数据 {new_person} 预测结果: {label}")
# 新数据 [[162 53]] 预测结果: 女生
代码背后的数学逻辑
- fit 函数:做了 MLE 的工作。它不关心别的,只统计训练数据中男生的平均身高、体重的标准差。它在构建分布模型。
- _calculate_likelihood 函数:使用了 高斯分布公式。它计算的是“假如你是男生,你长成这样的概率有多大”。
- predict 函数:做了 贝叶斯 的工作。它结合了先验(这里简化为 0.5)和似然,计算出属于哪个类别的可能性更大。
五、 总结与升华:AI 的不确定性哲学
通过这三个概念,我们终于构建起了 AI 的概率基石:
- 分布模型是 AI 的世界地图,它告诉 AI 数据应该长什么样(比如正态分布)。
- MLE 是绘制地图的测量工具,它通过有限的观测数据,画出了地图的具体轮廓(求出 μ,σ)。
- 贝叶斯 是 AI 的导航指南,它在地图(似然)的基础上,结合了出发前的常识(先验),防止 AI 在数据稀缺时迷路。
理解了这些,你就理解了为什么大模型在输出时会有 Temperature(温度)这个参数——本质上它是在调整输出概率分布的平滑程度,控制 AI 是该严谨地遵循 MLE(低温度),还是该更有创造性地进行随机采样(高温度)。
下一阶段预告 现在,我们的 AI 已经有了确定的骨架(线性代数)和处理不确定的智慧(概率统计)。 但是,它还是静止的。它不知道如何“变好”,不知道如何通过错误修正自己。 下一篇,我们将进入微积分的世界,探讨梯度下降与链式法则——赋予 AI 能够自我进化的“动力引擎”。这一次,我们将真正看到神经网络是如何“跑”起来的。
📚 参考资料(中文推荐)
- 《机器学习》(西瓜书) - 周志华 著
- 推荐理由: 第 7 章“贝叶斯分类器”对 MLE 和 MAP 有非常通俗且严谨的中文推导。
- 《深度学习》(花书) - Ian Goodfellow 等 著(赵申剑等 译)
- 推荐理由: 第 5 章“机器学习基础”详细阐述了 MLE 与 MAP 在深度学习中的本质区别。
- 《统计学习方法》 - 李航 著
- 推荐理由: 国内统计机器学习领域的“圣经”,公式推导极其详尽。
更多推荐


所有评论(0)