✨ 复制成功!

以文会友,打造好学人设!

📋 已复制到剪贴板:

极大似然估计(MLE)详解:从扔硬币的直觉到深度学习的损失函数

创建时间:2026-07-22 更新时间:2026-07-24 阅读次数:1079 次

在统计学和机器学习里,有一个方法几乎无处不在,却常被当作“理所当然”的默认配置。它就是极大似然估计(Maximum Likelihood Estimation,简称 MLE)。

它的想法简单到让人意外:选那个能让“观测到现有数据”这件事概率最大的参数

这就好比你在食堂连续三天都看到同一个人坐在靠窗第三排。你自然会猜测:“他大概很喜欢那个位置。”虽然不能百分之百确定,但这是最“像那么回事”的推断。极大似然估计,就是在数学上把这种直觉严格化。

一、一个扔硬币的直觉

假设我们有一枚硬币,不知道它是不是均匀的。记正面朝上的概率为 $\theta$,反面朝上的概率为 $1-\theta$。

我们抛了 10 次,结果是:正正反正正正反正正反——也就是 7 次正面,3 次反面。

你会怎么猜 $\theta$ 呢?几乎所有人的第一反应都是 $\theta = 0.7$。这其实就是极大似然估计的结果。

我们用概率的语言来写这个过程。

这 10 次抛掷可以看作独立重复试验,出现“7 正 3 反”这一结果的概率是:

$$ P(\text{数据}|\theta) = \theta^7 (1-\theta)^3 $$

这里的 $P(\text{数据}|\theta)$ 叫作似然函数(likelihood),记作 $L(\theta)$。它表示在参数取某个值时,观测到当前数据的可能性有多大。

极大似然估计的目标就一句话:找一个 $\theta$,让 $L(\theta)$ 尽可能大。

在这个例子里,就是最大化:

$$ L(\theta) = \theta^7 (1-\theta)^3 $$

为了方便计算,通常取对数(对数不改变单调性,但把乘法变成加法):

$$ \log L(\theta) = 7\log\theta + 3\log(1-\theta) $$

求导并令其为零:

$$ \frac{d}{d\theta}\log L(\theta) = \frac{7}{\theta} - \frac{3}{1-\theta} = 0 $$

解得 $\theta = 0.7$。正好就是我们直觉中的答案。

这就是极大似然估计的全部精髓:让已经发生的事情看起来最“合理”。

二、从扔硬币到训练 AI

你可能会问:这和 AI、深度学习有什么关系?

关系太大了。在监督学习中,我们做的事情本质上和扔硬币一模一样:

  • 我们有一堆训练数据,每个样本有输入 $x$ 和标签 $y$。
  • 我们有一个模型,它根据参数 $w$ 来对 $y$ 做出预测。
  • 我们想要找到最好的参数 $w$

而“最好”的标准是什么?极大似然估计给出了一个极为自然的答案:选那个让“看到当前标签”的概率最大的参数。

换句话说,我们想让模型输出的预测,在概率意义上最“像”真实标签。

于是,训练模型的问题就被转化成这样一个优化问题:

$$ w_{\text{MLE}} = \arg\max_w \prod_{i=1}^{N} P(y^{(i)} | x^{(i)}; w) $$

取对数后,就变成最大化对数似然:

$$ w_{\text{MLE}} = \arg\max_w \sum_{i=1}^{N} \log P(y^{(i)} | x^{(i)}; w) $$

在实际实现中,优化器通常最小化一个损失函数。所以我们加个负号,把最大化变成最小化:

$$ \mathcal{L}(w) = - \sum_{i=1}^{N} \log P(y^{(i)} | x^{(i)}; w) $$

这就是负对数似然损失(Negative Log-Likelihood,NLL)。

你看,我们只是把“想让数据出现概率最大”这个朴素想法用数学写下来,就天然得到了一个损失函数的形式。事实上,深度学习中绝大多数常用损失函数,都可以从极大似然估计推导出来。

三、均方误差:回归里的“正态分布假设”

现在来看一个经典问题:房价预测。输入是房子的各种特征 $x$,输出是一个连续的数值 $y$。

模型给出的预测值是 $\hat{y} = f(x; w)$。但真实房价几乎不可能精确等于 $\hat{y}$,总会有一些偏差。我们把这个偏差视为随机噪声。

极大似然估计需要我们对这个噪声的分布做一个假设。最自然的选择是——正态分布

假设真实值 $y$ 围绕预测值 $\hat{y}$ 呈正态分布,方差固定为 $\sigma^2$:

$$ P(y | x; w) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left( -\frac{(y - \hat{y})^2}{2\sigma^2} \right) $$

那么这个样本的对数似然就是:

$$ \log P(y | x; w) = -\frac{1}{2\sigma^2}(y - \hat{y})^2 - \frac{1}{2}\log(2\pi\sigma^2) $$

把所有样本的对数似然加起来,再加负号,我们得到需要最小化的损失函数:

$$ \mathcal{L}(w) \propto \sum_{i=1}^{N} (y^{(i)} - \hat{y}^{(i)})^2 $$

这就是再熟悉不过的均方误差(Mean Squared Error, MSE)。

均方误差在算的,本质上就是假设误差服从正态分布时的负对数似然。 你每算一次 MSE,其实都在默默地说:“我相信真实值是在预测值附近正态分布的,我要让这个假设尽可能‘像真的’。”

四、交叉熵:分类里的“伯努利扔硬币”

再看分类问题。比如手写数字识别,输入是图片 $x$,输出是 0 到 9 的标签。

对于多分类,模型通常输出一个概率分布 $\hat{y} = [\hat{y}_0, \hat{y}_1, \ldots, \hat{y}_9]$,其中 $\hat{y}_k = P(y=k | x; w)$,且所有概率之和为 1。

真实标签可以用独热编码表示为 $y = [y_0, y_1, \ldots, y_9]$,其中正确类别对应的位置是 1,其余是 0。

在给定输入 $x$ 和参数 $w$ 的条件下,观测到当前标签的概率可以写成:

$$ P(y | x; w) = \prod_{k=0}^{9} \hat{y}_k^{y_k} $$

这其实就是在说:对于正确的那一类,取它的预测概率;对于其它类,指数为 0,不影响结果。

取对数:

$$ \log P(y | x; w) = \sum_{k=0}^{9} y_k \log \hat{y}_k $$

再加负号,对所有样本求和:

$$ \mathcal{L}(w) = -\sum_{i=1}^{N} \sum_{k=0}^{9} y_k^{(i)} \log \hat{y}_k^{(i)} $$

这正是交叉熵损失(Cross-Entropy Loss)。

如果是二分类,每个样本的标签 $y \in {0, 1}$,模型只输出一个概率 $\hat{y}$ 表示 $P(y=1|x; w)$。那么:

$$ P(y | x; w) = \hat{y}^y (1-\hat{y})^{1-y} $$

取对数为:

$$ \log P(y | x; w) = y\log\hat{y} + (1-y)\log(1-\hat{y}) $$

负对数似然即:

$$ \mathcal{L}(w) = -\sum_{i=1}^{N} \left[ y^{(i)}\log\hat{y}^{(i)} + (1-y^{(i)})\log(1-\hat{y}^{(i)}) \right] $$

这就是二元交叉熵

交叉熵在算的,本质上就是把分类问题当成一次次“扔硬币”(伯努利试验或多类骰子),然后最大化观测到正确标签的似然。

五、一张表看清它们的“血缘关系”

任务类型 对数据分布的假设 极大似然估计导出的损失函数
回归 误差服从正态分布 均方误差(MSE)
二分类 标签服从伯努利分布 二元交叉熵
多分类 标签服从类别分布 交叉熵

所以,下次当你调用 loss='mse' 或者 loss='categorical_crossentropy' 的时候,你其实已经在用极大似然估计了——只是框架帮你把背后的概率假设悄悄封装好了。

六、它为什么是“最像那么回事”的

统计学家会告诉你,极大似然估计有很好的理论性质:一致性(数据越多,估计越准)、渐近有效性(大样本下方差最小)、不变性(参数变换后 MLE 依然是 MLE)。

但对我们来说,最重要的或许是它的哲学简单性:

如果一个参数下,我们看到的数据显得很“反常”,那这个参数多半是错的。如果一个参数下,我们看到的数据变得很“理所当然”,那这个参数大概就是我们要找的。

这种思路从高斯时代一直贯穿到今天的深度学习,从未过时。

每一次梯度下降的迭代,每一次损失函数的计算,本质上都在追问同一个问题:“如果这个模型是对的,那眼前的数据看起来有多‘正常’?”

然后我们不停调整参数,让这个“正常”的感觉,尽可能像那么回事。

本教程共26节,当前为第4节!
本教程最新修订时间为:2026-08-17 12:04:19


评论专区

评论加载中...