Contents

最大似然估计:从统计建模到逻辑回归

最大似然估计

核心问题:给定一批观测数据,如何反过来估计最可能生成这些数据的模型参数?

核心思想:如果一个参数 $\theta$ 是“好的参数”,那么在这个参数下,已经观测到的数据应该是“更容易发生”的。最大似然估计做的事情,就是在所有可能的参数里,找出那个让观测数据概率最大的参数。

换句话说:

最大似然估计 = 选择一组参数,使“当前这批数据在模型下出现的可能性最大”。

这是统计建模里最基础、也最重要的方法之一。

一个最直观的例子

假设你手里有一枚硬币,但你不知道它是不是公平的。你连续掷了很多次,记录到的数据大概是:

  • 正面很多
  • 反面很少

这时你自然会倾向于认为:这枚硬币本身更偏向正面。
也就是说,你会倾向于选择一个更大的正面概率 $p$,因为这样的参数更容易解释当前观测到的数据。

这就是最大似然估计的基本思想。

似然到底是什么

在最大似然估计里,最容易混淆的是“概率”和“似然”。

概率通常是:

参数已知,去看数据发生的概率。

例如,如果硬币正面概率是 $p=0.8$,那么连续观察到某组正反面序列的概率可以算出来。

似然则反过来:

数据已经固定,去看不同参数 $\theta$ 对这组数据的解释能力谁更强。

所以,似然不是一个新发明出来的数学对象,它本质上还是同一个概率表达式,只是观察角度变了

  • 概率:把参数看成固定,把数据看成随机
  • 似然:把数据看成固定,把参数看成变量

这就是为什么最大似然估计要写成:

$$ L(\theta) = p(D;\theta) $$

这里 $D$ 表示已经观测到的数据,$L(\theta)$ 表示参数 $\theta$ 的似然函数。

最大似然估计的数学形式

设观测数据为:

$$ D = \{x^{(1)}, x^{(2)}, \dots, x^{(n)}\} $$

模型由参数 $\theta$ 控制,每个样本的概率分布记为:

$$ p(x;\theta) $$

如果假设这些样本是独立同分布的,那么整批数据在参数 $\theta$ 下的联合概率为:

$$ L(\theta) = \prod_{i=1}^{n} p(x^{(i)};\theta) $$

这就是似然函数

最大似然估计希望找到一个参数,使这个似然函数最大:

$$ \theta^\star = \arg\max_\theta L(\theta) $$

也就是:

$$ \theta^\star = \arg\max_\theta \prod_{i=1}^{n} p(x^{(i)};\theta) $$

为什么通常取对数

直接最大化一串概率的乘积通常不方便,因为:

  • 连乘容易数值下溢
  • 乘积形式不利于求导
  • 对数能把乘法变成加法

由于对数函数是单调递增的,所以最大化似然,等价于最大化对数似然:

$$ \theta^\star = \arg\max_\theta \log L(\theta) $$

进一步展开:

$$ \theta^\star = \arg\max_\theta \sum_{i=1}^{n} \log p(x^{(i)};\theta) $$

这就是最常见的最大似然估计形式。

负对数似然

在机器学习里,更常见的是把最大化改写成最小化,也就是最小化负对数似然

$$ \theta^\star = \arg\min_\theta \left( -\sum_{i=1}^{n} \log p(x^{(i)};\theta) \right) $$

如果再除以样本数 $n$,就得到平均负对数似然:

$$ \theta^\star = \arg\min_\theta \left( -\frac{1}{n}\sum_{i=1}^{n} \log p(x^{(i)};\theta) \right) $$

这一步非常重要,因为很多机器学习里的损失函数,本质上就是负对数似然。

一个最简单的例子:硬币正面概率估计

假设一枚硬币正面概率为 $p$,反面概率为 $1-p$。现在我们观测到 $n$ 次掷硬币结果,其中:

  • 正面出现了 $k$ 次
  • 反面出现了 $n-k$ 次

那么这组数据的似然函数为:

$$ L(p) = p^k (1-p)^{n-k} $$

对应的对数似然为:

$$ \log L(p) = k \log p + (n-k)\log(1-p) $$

最大似然估计就是求:

$$ p^\star = \arg\max_p \left( k \log p + (n-k)\log(1-p) \right) $$

对 $p$ 求导并令其为零,可以得到:

$$ p^\star = \frac{k}{n} $$

这个结果很自然:

最大似然估计下,硬币正面概率就是样本里正面出现的频率。

这也说明了一个很重要的事实:

MLE 往往就是“让模型尽量贴近观测频率”。

从最大似然到损失函数

很多人第一次接触机器学习时,会觉得损失函数像是“经验拍脑袋设计出来的”。但其实很多常见损失函数都有清晰的统计学来源。

最大似然估计告诉我们:

  • 如果想让模型更好地解释数据
  • 就应该让数据在模型下的概率更大
  • 等价地,就是让负对数似然更小

所以很多学习目标,本质上都来自下面这个式子:

$$ -\sum_{i=1}^{n} \log p(x^{(i)};\theta) $$

或者其平均形式:

$$ -\frac{1}{n}\sum_{i=1}^{n} \log p(x^{(i)};\theta) $$

这也是为什么统计学、信息论和机器学习在这里会连到一起。

逻辑回归:最大似然估计的经典机器学习例子

逻辑回归是最大似然估计在机器学习里最经典的例子之一。

考虑二分类问题。给定输入 $x$,标签 $y$ 取值为 $0$ 或 $1$。逻辑回归假设:

$$ p(y=1 \mid x;\theta) = \sigma(w^\top x + b) $$

其中:

$$ \sigma(z) = \frac{1}{1+e^{-z}} $$

参数 $\theta$ 由 $w$ 和 $b$ 组成。

于是:

$$ p(y=0 \mid x;\theta) = 1 - \sigma(w^\top x + b) $$

为了写得更紧凑,记:

$$ \hat{p}^{(i)} = p(y=1 \mid x^{(i)};\theta) $$

那么单个样本 $(x^{(i)}, y^{(i)})$ 的条件概率可以统一写成:

$$ p(y^{(i)} \mid x^{(i)};\theta) = (\hat{p}^{(i)})^{y^{(i)}} (1-\hat{p}^{(i)})^{1-y^{(i)}} $$

这个式子非常常见,也非常值得理解:

  • 如果 $y^{(i)}=1$,它会退化成 $\hat{p}^{(i)}$
  • 如果 $y^{(i)}=0$,它会退化成 $1-\hat{p}^{(i)}$

所以它用一个统一形式同时表示了两种情况。

整批样本的似然函数

对于训练集:

$$ \{(x^{(1)}, y^{(1)}), (x^{(2)}, y^{(2)}), \dots, (x^{(n)}, y^{(n)})\} $$

假设样本独立,则似然函数为:

$$ L(\theta) = \prod_{i=1}^{n} p(y^{(i)} \mid x^{(i)};\theta) $$

代入逻辑回归的形式:

$$ L(\theta) = \prod_{i=1}^{n} (\hat{p}^{(i)})^{y^{(i)}} (1-\hat{p}^{(i)})^{1-y^{(i)}} $$

取对数后:

$$ \log L(\theta) = \sum_{i=1}^{n} \left[ y^{(i)} \log \hat{p}^{(i)} + (1-y^{(i)}) \log(1-\hat{p}^{(i)}) \right] $$

因此,最大似然估计等价于最小化负对数似然:

$$ -\log L(\theta) = -\sum_{i=1}^{n} \left[ y^{(i)} \log \hat{p}^{(i)} + (1-y^{(i)}) \log(1-\hat{p}^{(i)}) \right] $$

如果取平均,就得到:

$$ -\frac{1}{n}\log L(\theta) = -\frac{1}{n}\sum_{i=1}^{n} \left[ y^{(i)} \log \hat{p}^{(i)} + (1-y^{(i)}) \log(1-\hat{p}^{(i)}) \right] $$

这就是机器学习里非常熟悉的二分类交叉熵损失

为什么逻辑回归的损失函数就是交叉熵

这一步是理解逻辑回归最关键的地方。

很多人先学到逻辑回归,再学到交叉熵时,会觉得:

为什么逻辑回归偏偏要用这个损失函数?

答案不是“经验上好用”,而是:

因为逻辑回归假设了标签服从 Bernoulli 分布,而对这个分布做最大似然估计,推出来的目标函数就正好是交叉熵。

也就是说:

  • 逻辑回归不是“先有模型,再拍脑袋选交叉熵”
  • 而是“先有概率模型,再用最大似然自然推出交叉熵”

所以从统计学视角看,逻辑回归训练的是最大似然估计;从信息论视角看,优化的是交叉熵;从优化视角看,最小化的是负对数似然。它们是同一件事的不同说法。

最大似然估计和经验风险最小化的关系

从机器学习角度再进一步看,平均负对数似然:

$$ -\frac{1}{n}\sum_{i=1}^{n} \log p(x^{(i)};\theta) $$

本质上就是一种经验风险。

也就是说,最大似然估计可以看成:

以负对数概率作为损失函数时的经验风险最小化。

这一步很重要,因为它把统计建模和机器学习训练统一到了同一个框架里:

  • 统计学里叫最大似然估计
  • 机器学习里叫最小化损失函数
  • 信息论里叫最小化编码代价

这三种语言,本质上都在做同一件事。

最大似然估计的优点与局限

优点

  • 形式统一,适用于很多概率模型
  • 与概率建模天然一致
  • 常常能导出有明确统计意义的损失函数
  • 在样本足够多时具有很好的理论性质

局限

  • 对模型假设依赖很强。模型假设错了,MLE 也可能偏掉
  • 对异常值有时比较敏感
  • 有些模型下似然函数可能难以优化
  • 小样本时方差可能较大

所以,最大似然估计非常基础,但不是“无条件总是最好”。它的效果依赖于模型设定是否合理。

和 MAP 的区别

最大似然估计只考虑数据本身:

$$ \theta^\star = \arg\max_\theta p(D;\theta) $$

如果进一步把参数也当成随机变量,并加入先验分布 $p(\theta)$,就得到 MAP,也就是最大后验估计:

$$ \theta^\star = \arg\max_\theta p(\theta \mid D) $$

根据贝叶斯公式,这等价于:

$$ \theta^\star = \arg\max_\theta p(D;\theta)p(\theta) $$

所以:

  • MLE:只看数据在参数下的概率
  • MAP:同时考虑数据拟合和参数先验

在机器学习里,很多正则化项都可以从 MAP 的角度理解。

总结

最大似然估计的核心思想很简单:

选一组参数,让已经观测到的数据在模型下尽可能容易出现。

它的数学形式是:

$$ \theta^\star = \arg\max_\theta \prod_{i=1}^{n} p(x^{(i)};\theta) $$

等价地,也可以写成最大化对数似然,或者最小化负对数似然。

更重要的是,最大似然估计不是孤立的统计技巧,它和机器学习里的很多目标函数直接相连:

  • 二项分布下,MLE 会得到样本频率
  • 逻辑回归里,MLE 会自然导出二分类交叉熵损失
  • 从更广义的角度看,MLE 其实就是概率建模下的一种经验风险最小化

所以,如果你真正理解了最大似然估计,就会发现很多机器学习损失函数并不是“凭经验选出来的”,而是从概率模型里自然推出来的。

References

  • T. M. Cover and J. A. Thomas, Elements of Information Theory.
  • Christopher M. Bishop, Pattern Recognition and Machine Learning.
  • Kevin P. Murphy, Machine Learning: A Probabilistic Perspective.
  • Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning.