从概率到模型训练:最大似然在AI中的全面应用
引言
在人工智能(AI)的世界里,概率论与数理统计不仅是数学基础,更是支撑算法设计、模型推理和优化策略的核心工具。
- o 当你在优化深度神经网络的损失函数时,你实际上是在最小化负对数似然;
- o 当你在做贝叶斯推断时,背后依托的是概率密度函数的运算;
- o 当你在设计采样策略时,你就在用统计学中的随机抽样理论。
今天,我们将围绕以下几个主题展开深入剖析:
- 1. 离散与连续随机变量
- 2. 连续型随机变量的概率密度与分布
- 3. 简单随机抽样及其在机器学习中的意义
- 4. 似然函数与极大似然估计(MLE)
一、离散与连续随机变量
1.1 随机变量的定义
数学定义:
设样本空间为 ,随机变量是定义在 上的实值函数:
它将随机试验的每个可能结果映射为一个实数。
1.2 离散随机变量
定义:取值为有限个或可数无限多个的随机变量。
概率分布(PMF):
常见分布:
- o 伯努利分布:一次试验成败
- o 二项分布:多次独立伯努利试验成功次数
- o 泊松分布:单位时间(空间)内事件发生次数
例子:
二项分布 的概率质量函数为:
二项分布计算例子(Python)
import math
def binomial_pmf(k, n, p):
"""二项分布 PMF"""
return math.comb(n, k) * (p**k) * ((1-p)**(n-k))
print(binomial_pmf(3, 10, 0.3)) # 恰好3次成功的概率
注释:二项分布在分类模型正确预测的次数等问题中广泛应用。
1.3 连续随机变量
定义:取值是不可数无限多个(实数区间)。
概率密度函数(PDF):
且
常见分布:
- o 均匀分布
- o 正态分布
- o 指数分布
正态分布概率计算(Python)
import scipy.stats as stats
prob = stats.norm.cdf(1, loc=0, scale=1) - stats.norm.cdf(-1, loc=0, scale=1)
print(prob) # 区间[-1,1]的概率
二、连续型随机变量的概率密度
2.1 常见概率密度函数
- 1. 均匀分布:
- 2. 正态分布:
- 3. 指数分布:
2.2 PyTorch分布采样
import torch
# 正态分布采样
samples = torch.normal(mean=0.0, std=1.0, size=(5,))
print(samples)
# 均匀分布采样
uniform_samples = torch.rand(5)
print(uniform_samples)
应用:GAN 生成器的输入噪声通常采自标准正态分布。
三、简单随机抽样(SRS)
3.1 定义
从总体中抽取 个样本,每个样本被抽到的概率相等且独立。
3.2 Python实现
import random
population = list(range(1, 101))
sample = random.sample(population, 10) # 无放回抽样
print(sample)
3.3 AI应用案例
- o 数据集划分(训练集/验证集/测试集)
- o Mini-batch SGD:每轮迭代从数据集中随机抽取一批样本训练,降低计算量并提升泛化性能。
四、似然函数(Likelihood)
4.1 定义
假设 独立同分布于 ,似然函数为:
4.2 对数似然
取对数:
AI联系:交叉熵损失 = NLL 的一种形式。
4.3 似然函数的作用
核心作用:
似然函数的本质是衡量“在给定参数的情况下,观测到当前数据的可能性有多大”。
它不是在问“数据发生的概率是多少”(那是概率密度的功能),而是在问“给定这批数据,哪一组参数最可能生成它们”。
通俗理解:
- o 如果你是一个侦探,参数 就是不同的“嫌疑人画像”,数据就是案发现场的证据。
- o 似然函数就是一个打分器,告诉你每个嫌疑人画像和现场证据的匹配程度。
- o 你的目标是找到最匹配的那个画像(即参数估计)。
AI中的作用:
- o 在机器学习中,我们的模型 就是由参数 决定的概率分布。
- o 训练的过程,本质上是寻找一组 ,让训练数据在这个模型下的似然值最大。
- o 这直接对应了我们常用的**最大似然估计(MLE)**方法。
五、极大似然估计(MLE)
5.1 定义
MLE目标:
或
5.2 数学推导:正态分布参数估计
假设 :
对 求偏导:
得:
对 求偏导:
得:
5.3 Python实现
import numpy as np
data = np.array([2.1, 2.5, 1.8, 2.0, 2.3])
mu_hat = np.mean(data)
sigma2_hat = np.mean((data - mu_hat)**2)
print(f"MLE估计: 均值={mu_hat}, 方差={sigma2_hat}")
5.4 PyTorch中MLE的体现
import torch
import torch.nn as nn
logits = torch.tensor([[2.0, 1.0, 0.1]]) # 模型输出
target = torch.tensor([0]) # 类别标签
loss_fn = nn.CrossEntropyLoss()
loss = loss_fn(logits, target)
print(loss.item())
注释:交叉熵损失等价于最大化类别正确的似然。
5.1 极大似然估计(MLE)的用途
数学目标:
或
它用来干什么:
- o 估计模型参数:通过找到使观测数据最可能出现的参数值,得到最符合当前数据分布的模型。
- o 连接统计与深度学习:神经网络训练时,我们最小化的很多损失函数,其实就是负对数似然(NLL)。
- o 构造推理框架:在贝叶斯推断中,MLE是MAP(最大后验估计)的特例,当先验分布均匀时,两者等价。
直观例子:
假设我们要训练一个二分类逻辑回归模型,参数是权重 和偏置 。
MLE的过程就是:
- 1. 先假设样本服从伯努利分布 ;
- 2. 写出似然函数 ;
- 3. 对其取对数并求最大值(等价于最小化交叉熵损失);
- 4. 得到最优的 ,用于分类预测。
PyTorch 示例:MLE等价于最小化交叉熵
import torch
import torch.nn as nn
# 模拟模型输出(logits)和真实标签
logits = torch.tensor([[2.0, 1.0, 0.1]])
target = torch.tensor([0])
# CrossEntropyLoss 实际上是 -log(softmax概率) => 负对数似然
loss_fn = nn.CrossEntropyLoss()
loss = loss_fn(logits, target)
print(f"负对数似然损失(NLL) = {loss.item():.4f}")
六、总结
- o 离散与连续随机变量:构成概率论的两大类对象;
- o 概率密度函数:刻画连续随机变量的概率分布;
- o 简单随机抽样:是数据抽取与训练的重要方法;
- o 似然函数与极大似然估计:是参数估计和深度学习损失函数设计的数学基础。