复习概统的时候突然发现好像极大似然估计MLE与机器学习的数据驱动非常相似,都是采样样本然后估计模型参数。貌似,后知后觉的才意识到极大似然估计就是机器学习有效的数学保证
下面以拟合线性分布的最小二乘与分类问题为例推到以下如何从似然函数推导出MSE损失与交叉熵损失
一、线性回归的最小二乘法
1. 概率模型设定
假设数据由线性模型生成,且观测噪声服从 正态分布:
y = w T x + ϵ , ϵ ∼ N ( 0 , σ 2 ) y = \mathbf{w}^T \mathbf{x} + \epsilon, \quad \epsilon \sim \mathcal{N}(0, \sigma^2) y=wTx+ϵ,ϵ∼N(0,σ2)
则给定输入 x \mathbf{x} x 时, y y y 的条件概率密度为:
p ( y ∣ x ; w ) = 1 2 π σ 2 exp ( − ( y − w T x ) 2 2 σ 2 ) p(y | \mathbf{x}; \mathbf{w}) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left( -\frac{(y - \mathbf{w}^T \mathbf{x})^2}{2\sigma^2} \right) p(y∣x;w)=2πσ2 1exp(−2σ2(y−wTx)2)
均值即为 ( y − w T x ) 2 (y - \mathbf{w}^T \mathbf{x})^2 (y−wTx)2
2. 似然函数与对数似然
对于独立同分布的 N N N 个样本 { ( x i , y i ) } i = 1 N \{(\mathbf{x}i, y_i)\}{i=1}^N {(xi,yi)}i=1N,似然函数为:
L ( w ) = ∏ i = 1 N p ( y i ∣ x i ; w ) L(\mathbf{w}) = \prod_{i=1}^N p(y_i | \mathbf{x}_i; \mathbf{w}) L(w)=i=1∏Np(yi∣xi;w)
取对数得 对数似然函数:
ln L ( w ) = − N 2 ln ( 2 π σ 2 ) − 1 2 σ 2 ∑ i = 1 N ( y i − w T x i ) 2 \ln L(\mathbf{w}) = -\frac{N}{2} \ln(2\pi\sigma^2) - \frac{1}{2\sigma^2} \sum_{i=1}^N (y_i - \mathbf{w}^T \mathbf{x}_i)^2 lnL(w)=−2Nln(2πσ2)−2σ21i=1∑N(yi−wTxi)2
3. 极大似然估计等价于最小二乘法
• 最大化对数似然等价于最小化 负对数似然。
• 忽略与 w \mathbf{w} w 无关的常数项,优化目标简化为:
min w ∑ i = 1 N ( y i − w T x i ) 2 \min_{\mathbf{w}} \sum_{i=1}^N (y_i - \mathbf{w}^T \mathbf{x}_i)^2 wmini=1∑N(yi−wTxi)2
结论:最小二乘法的损失函数是高斯噪声假设下的极大似然估计结果。
二、分类问题的交叉熵损失
1. 概率模型设定(以二分类为例)
假设标签 y ∈ { 0 , 1 } y \in \{0,1\} y∈{0,1}服从 伯努利分布,其概率由逻辑函数(sigmoid)给出:
p ( y ∣ x ; w ) = y ^ y ( 1 − y ^ ) 1 − y , y ^ = σ ( w T x ) = 1 1 + e − w T x p(y | \mathbf{x}; \mathbf{w}) = \hat{y}^y (1 - \hat{y})^{1-y}, \quad \hat{y} = \sigma(\mathbf{w}^T \mathbf{x}) = \frac{1}{1 + e^{-\mathbf{w}^T \mathbf{x}}} p(y∣x;w)=y^y(1−y^)1−y,y^=σ(wTx)=1+e−wTx1
其中 y ^ \hat{y} y^ 是模型预测的 y = 1 y=1 y=1 的概率。
2. 似然函数与对数似然
对于 N N N个独立样本,似然函数为:
L ( w ) = ∏ i = 1 N y ^ i y i ( 1 − y ^ i ) 1 − y i L(\mathbf{w}) = \prod_{i=1}^N \hat{y}_i^{y_i} (1 - \hat{y}_i)^{1-y_i} L(w)=i=1∏Ny^iyi(1−y^i)1−yi
取对数得 对数似然函数:
ln L ( w ) = ∑ i = 1 N [ y i ln y ^ i + ( 1 − y i ) ln ( 1 − y ^ i ) ] \ln L(\mathbf{w}) = \sum_{i=1}^N \left[ y_i \ln \hat{y}_i + (1-y_i) \ln (1 - \hat{y}_i) \right] lnL(w)=i=1∑N[yilny^i+(1−yi)ln(1−y^i)]
3. 极大似然估计等价于最小化交叉熵
• 最大化对数似然等价于最小化 负对数似然:
min w − ∑ i = 1 N [ y i ln y ^ i + ( 1 − y i ) ln ( 1 − y ^ i ) ] \min_{\mathbf{w}} -\sum_{i=1}^N \left[ y_i \ln \hat{y}_i + (1-y_i) \ln (1 - \hat{y}_i) \right] wmin−i=1∑N[yilny^i+(1−yi)ln(1−y^i)]
• 这正是 二元交叉熵损失(Binary Cross-Entropy Loss)。
结论:交叉熵损失是伯努利分布假设下的极大似然估计结果。
三、通用框架与扩展
1. 核心思想
• 概率建模:根据问题类型选择合适的概率分布:
• 回归问题 → 高斯分布(连续输出)。
• 分类问题 → 伯努利/多项分布(离散输出)。
• 损失函数 = 负对数似然:
L ( w ) = − ln L ( w ) \mathcal{L}(\mathbf{w}) = -\ln L(\mathbf{w}) L(w)=−lnL(w)
2. 其他常见例子
问题类型 | 分布假设 | 损失函数 |
---|---|---|
多分类(K类) | 多项分布(Softmax) | 交叉熵损失 |
泊松回归 | 泊松分布 | 负对数泊松似然 |
鲁棒回归 | 拉普拉斯分布 | 绝对误差(L1损失) |
3. 代码实现示例
(1) 最小二乘法(PyTorch)
python
import torch
# 定义模型和损失
model = torch.nn.Linear(in_features=2, out_features=1)
criterion = torch.nn.MSELoss() # 等价于高斯MLE
# 前向计算
y_pred = model(X)
loss = criterion(y_pred, y)
(2) 交叉熵损失(逻辑回归)
python
import torch
# 定义模型和损失
model = torch.nn.Linear(in_features=2, out_features=1)
criterion = torch.nn.BCEWithLogitsLoss() # 等价于伯努利MLE
# 前向计算
logits = model(X)
loss = criterion(logits, y)
四、总结
• 最小二乘法和交叉熵损失的本质:
它们都是通过假设数据的生成分布(高斯/伯努利),然后对参数进行极大似然估计导出的。
• 机器学习与概率论的桥梁:
损失函数的设计可以统一理解为对数据分布假设的统计推断,这使得概率论成为理解算法背后原理的有力工具。
理解这一框架后,你可以轻松推广到其他分布假设(如泊松回归、鲁棒回归等),并设计新的损失函数来匹配具体问题。