最大似然估计:从统计建模到逻辑回归
最大似然估计
核心问题:给定一批观测数据,如何反过来估计最可能生成这些数据的模型参数?
核心思想:如果一个参数 $\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.