Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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\) 当作变量,最大化数据在这些参数下的似然。这就是最大似然训练的基本思想。