Likelihood 是什么?它和条件概率有什么区别
似然 likelihood 是机器学习里非常容易混淆的概念。它看起来和条件概率长得一模一样,比如:
\[ p(x \mid \theta) \]
但在不同语境下,这个表达式的阅读方式完全不同。
如果 \(\theta\) 是固定参数,\(x\) 是随机变量的取值,那么 \(p(x \mid \theta)\) 是一个条件概率分布或条件密度。它回答的是:
在参数 \(\theta\) 已知的情况下,观测到数据 \(x\) 的概率或密度是多少?
如果观测数据 \(x\) 已经固定,而我们把 \(\theta\) 当成变量来看,那么同一个表达式就变成了 \(\theta\) 的似然函数:
\[ L(\theta; x) = p(x \mid \theta) \]
它回答的是:
已经观测到数据 \(x\) 之后,不同参数 \(\theta\) 对这份数据的解释能力有多强?
所以,似然和条件概率的联系是:它们经常使用同一个数学表达式。区别是:条件概率把参数固定、数据当随机对象;似然把数据固定、参数当作待比较的对象。
从条件概率开始
假设有一个带参数的概率模型。参数记为 \(\theta\),数据随机变量记为 \(X\),观测值记为 \(x\)。
模型通常写成:
\[ p(x \mid \theta) \]
这里:
- \(\theta\):模型参数,例如高斯分布的均值和方差,或者语言模型的所有权重。
- \(X\):随机变量,表示模型可能生成的数据。
- \(x\):随机变量 \(X\) 的一个具体观测值。
- \(p(x \mid \theta)\):在参数为 \(\theta\) 时,观测到 \(x\) 的概率质量或概率密度。
如果 \(\theta\) 已经固定,那么 \(p(x \mid \theta)\) 是关于 \(x\) 的分布。它必须满足概率分布的要求。
离散情况下:
\[ \sum_x p(x \mid \theta) = 1 \]
连续情况下:
\[ \int p(x \mid \theta) dx = 1 \]
这时我们是在问:在这个模型参数下,不同数据 \(x\) 出现的概率如何分布?
似然函数是什么
当数据 \(x\) 已经观测到以后,我们往往想反过来问:哪个参数 \(\theta\) 更可能生成这份数据?
这时定义似然函数:
\[ L(\theta; x) = p(x \mid \theta) \]
这里的分号 \(;\) 是一种常见记号,用来提醒读者:\(x\) 是已经固定的观测数据,\(\theta\) 才是我们正在比较的变量。
因此,似然函数不是关于 \(x\) 的函数,而是关于 \(\theta\) 的函数:
\[ \theta \mapsto L(\theta; x) \]
它的值越大,表示参数 \(\theta\) 越能解释已经观测到的数据 \(x\)。但要特别注意:
似然不是 \(\theta\) 的概率分布。
也就是说,一般并不要求:
\[ \int L(\theta; x) d\theta = 1 \]
或者在离散参数空间中:
\[ \sum_\theta L(\theta; x) = 1 \]
似然值只适合在不同参数之间做相对比较。它告诉我们哪个参数让观测数据更“合理”,但它本身还不是参数的概率。
条件概率和似然的区别
同一个表达式:
\[ p(x \mid \theta) \]
可以有两种读法。
第一种读法是条件概率或条件密度:
\[ x \mapsto p(x \mid \theta) \]
这里 \(\theta\) 固定,\(x\) 是变量。它描述的是:给定参数 \(\theta\),不同数据 \(x\) 出现的概率或密度。
第二种读法是似然函数:
\[ \theta \mapsto L(\theta; x) = p(x \mid \theta) \]
这里 \(x\) 固定,\(\theta\) 是变量。它描述的是:已经看到数据 \(x\),不同参数 \(\theta\) 对这份数据的支持程度。
可以用一句话概括:
条件概率是在参数已知时看数据;似然是在数据已知时看参数。
这也是为什么 likelihood 通常翻译成“似然”:它不是直接说某个参数“概率大”,而是说这个参数看起来“像是能生成这份数据”。
一个抛硬币的例子
假设一枚硬币正面朝上的概率是 \(\theta\)。我们抛 \(n\) 次硬币,观测到正面 \(k\) 次,反面 \(n-k\) 次。
设 \(X\) 表示正面出现的次数。如果参数 \(\theta\) 固定,那么:
\[ X \sim \mathrm{Binomial}(n,\theta) \]
其中,\(n\) 表示实验次数,\(\theta\) 表示每次正面朝上的概率。于是:
\[ p(k \mid \theta) = \binom{n}{k}\theta^k(1-\theta)^{n-k} \]
这里:
- \(k\):已经观测到的正面次数。
- \(n\):总抛掷次数。
- \(\theta\):硬币正面朝上的概率。
- \(\binom{n}{k}\):从 \(n\) 次抛掷中选出 \(k\) 次正面的组合数。
如果 \(\theta\) 固定,比如 \(\theta=0.5\),那么 \(p(k \mid \theta)\) 是关于 \(k\) 的概率分布。它回答:公平硬币抛 \(n\) 次,正面出现 \(k\) 次的概率是多少?
但如果我们已经观测到了 \(k\),比如 \(n=10\),\(k=7\),那么:
\[ L(\theta; k) = \binom{10}{7}\theta^7(1-\theta)^3 \]
这时 \(k=7\) 固定,\(\theta\) 是变量。我们在比较不同 \(\theta\) 对“10 次里有 7 次正面”这件事的解释能力。
比如:
\[ L(0.5; 7) = \binom{10}{7}0.5^7(1-0.5)^3 \]
\[ L(0.7; 7) = \binom{10}{7}0.7^7(1-0.7)^3 \]
如果 \(L(0.7;7) > L(0.5;7)\),说明 \(\theta=0.7\) 比 \(\theta=0.5\) 更能解释这次观测结果。但这不等于说“\(\theta=0.7\) 的概率比 \(\theta=0.5\) 大”。要谈参数的概率,还需要引入先验分布。
最大似然估计
最大似然估计 maximum likelihood estimation, MLE 的思想很直接:选择让观测数据似然最大的参数。
设观测数据为 \(x\),参数为 \(\theta\),似然函数为:
\[ L(\theta; x)=p(x \mid \theta) \]
那么最大似然估计定义为:
其中:
- \(\hat{\theta}_{\mathrm{MLE}}\):最大似然估计得到的参数。
- \(\arg\max_{\theta}\):让目标函数取得最大值的 \(\theta\)。
- \(L(\theta;x)\):观测数据 \(x\) 固定时,参数 \(\theta\) 的似然。
在实际计算中,我们常用对数似然:
\[ \ell(\theta; x) = \log L(\theta; x) = \log p(x \mid \theta) \]
因为对数函数单调递增,所以最大化 \(L(\theta;x)\) 和最大化 \(\ell(\theta;x)\) 得到的参数相同:
\[ \arg\max_{\theta} L(\theta;x) = \arg\max_{\theta} \ell(\theta;x) \]
对数似然的好处是可以把很多连乘变成求和,数值上也更稳定。
多个独立样本的似然
假设观测到一组独立同分布样本:
\[ x_1, x_2, \dots, x_N \]
其中,\(x_i\) 表示第 \(i\) 个观测样本,\(N\) 表示样本数量。若每个样本都来自同一个参数为 \(\theta\) 的模型,并且样本之间相互独立,则联合概率为:
\[ p(x_1,\dots,x_N \mid \theta) = \prod_{i=1}^{N} p(x_i \mid \theta) \]
因此似然函数为:
\[ L(\theta; x_1,\dots,x_N) = \prod_{i=1}^{N} p(x_i \mid \theta) \]
对数似然为:
\[ \ell(\theta; x_1,\dots,x_N) = \sum_{i=1}^{N} \log p(x_i \mid \theta) \]
这就是很多机器学习训练目标的基本形式。最大化训练数据的对数似然,等价于让模型给真实数据分配更高的概率或密度。
在语言模型中,如果一段 token 序列为:
\[ x_1, x_2, \dots, x_T \]
自回归模型通常分解为:
\[ p_\theta(x_1,\dots,x_T) = \prod_{t=1}^{T} p_\theta(x_t \mid x_{<t}) \]
其中,\(x_{<t}\) 表示第 \(t\) 个 token 之前的上下文。训练时最大化:
\[ \sum_{t=1}^{T} \log p_\theta(x_t \mid x_{<t}) \]
或者等价地最小化负对数似然:
\[ -\sum_{t=1}^{T} \log p_\theta(x_t \mid x_{<t}) \]
这就是语言模型交叉熵损失背后的概率解释。
似然和贝叶斯后验
如果只使用似然,我们只能比较不同 \(\theta\) 对数据的解释能力。若想得到“参数 \(\theta\) 在看到数据后的概率”,需要使用贝叶斯公式。
这里有一个容易混淆的点:贝叶斯公式里面的 \(p(x \mid \theta)\),到底是条件概率,还是似然?
更准确的说法是:在贝叶斯公式本身里,\(p(x \mid \theta)\) 是条件概率或条件密度;但是当观测数据 \(x\) 已经固定,而我们把它看成 \(\theta\) 的函数时,它就承担了似然函数的角色。
设:
- \(p(\theta)\):参数的先验分布,表示观测数据前对 \(\theta\) 的相信程度。
- \(p(x \mid \theta)\):给定参数 \(\theta\) 时,数据 \(x\) 的条件概率或条件密度。
- \(p(\theta \mid x)\):后验分布,表示观测到 \(x\) 后对 \(\theta\) 的相信程度。
贝叶斯公式写成:
\[ p(\theta \mid x) = \frac{p(x \mid \theta)p(\theta)}{p(x)} \]
从这个公式本身看,\(p(x \mid \theta)\) 是一个条件分布里的项。也就是说,如果固定 \(\theta\),它描述的是数据 \(x\) 如何分布。离散情况下,它对 \(x\) 求和应该为 1;连续情况下,它对 \(x\) 积分应该为 1。
其中,\(p(x)\) 是证据项:
\[ p(x) = \int p(x \mid \theta)p(\theta) d\theta \]
但在贝叶斯统计里,我们通常已经观测到了数据 \(x\),接下来关心的是 \(\theta\) 的后验分布。这时 \(x\) 被固定下来,\(p(x \mid \theta)\) 就可以被看成 \(\theta\) 的函数:
\[ L(\theta; x) = p(x \mid \theta) \]
这个 \(L(\theta;x)\) 就是似然函数。它不需要对 \(\theta\) 归一化,因此它本身不是 \(\theta\) 的概率分布。它只是告诉我们:不同的 \(\theta\) 对已经观测到的数据 \(x\) 有多大的支持程度。
如果只关心 \(\theta\) 的相对大小,贝叶斯公式可以写成正比形式:
\[ p(\theta \mid x) \propto p(x \mid \theta)p(\theta) \]
这时候右边的 \(p(x \mid \theta)\) 就是在作为“似然因子”使用。因此我们经常说:
后验 \(p(\theta \mid x)\) 正比于似然 \(L(\theta;x)\) 乘以先验 \(p(\theta)\)。
这句话里的“似然”,不是说 \(p(x \mid \theta)\) 在原始定义上变成了一个关于 \(\theta\) 的概率分布,而是说:在固定观测数据 \(x\) 之后,我们把同一个条件概率或条件密度表达式当作 \(\theta\) 的函数来使用。
所以更严谨地说:
- 贝叶斯公式中的 \(p(x \mid \theta)\) 是条件概率或条件密度。
- 固定观测数据 \(x\) 后,\(p(x \mid \theta)\) 作为 \(\theta\) 的函数,就是似然 \(L(\theta;x)\)。
- 后验不是似然本身,而是先验乘以似然,再通过证据项 \(p(x)\) 归一化之后得到的分布。
如果没有先验和归一化,似然本身不能直接解释成参数的概率分布。
连续变量中的一个注意点
在连续随机变量中,\(p(x \mid \theta)\) 是密度,不是点概率。也就是说:
\[ \mathbb{P}(X=x \mid \theta) = 0 \]
但密度 \(p(x \mid \theta)\) 仍然可以用来比较不同参数对观测值附近区域的解释能力。
例如,对于高斯模型:
\[ X \sim \mathcal{N}(\mu,\sigma^2) \]
如果 \(\sigma\) 已知,\(\mu\) 是未知参数,那么观测到一个具体值 \(x\) 后,似然函数是:
\[ L(\mu; x) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right) \]
这里 \(x\) 固定,\(\mu\) 是变量。似然最大的 \(\mu\) 会靠近观测值 \(x\)。但 \(L(\mu;x)\) 仍然不是 \(\mu\) 的概率密度,除非我们进一步引入先验并做归一化。
一个实用区分
可以用下面这张表来区分条件概率和似然:
| 表达式 | 固定什么 | 变量是什么 | 含义 | 是否需要对变量归一化 |
|---|---|---|---|---|
| \(p(x \mid \theta)\) 作为条件概率 | \(\theta\) | \(x\) | 参数已知时数据的分布 | 需要对 \(x\) 归一化 |
| \(L(\theta;x)=p(x \mid \theta)\) 作为似然 | \(x\) | \(\theta\) | 数据已知时参数的相对解释能力 | 不需要对 \(\theta\) 归一化 |
一句话总结:
条件概率关心“给定参数,数据怎么分布”;似然关心“给定数据,哪个参数更能解释它”。
在机器学习训练里,我们通常已经有固定的数据集,所以会把模型参数 \(\theta\) 当作变量,最大化数据在这些参数下的似然。这就是最大似然训练的基本思想。