文章

检索问题与概率分布匹配

检索问题与概率分布匹配

引言:从关键词匹配到概率分布匹配

信息检索(Information Retrieval)的核心任务,是给定一个查询 $q$ 和一个文档集合 $\mathcal{C}$,找到与查询所表达的信息需求最相关的文档,并按照相关性进行排序。

传统的检索算法通常从词项匹配出发:一个查询词在文档中出现得越频繁,文档似乎就越相关;一个词在整个语料库中越罕见,它对相关性的区分能力似乎就越强。TF-IDF 和 BM25 正是沿着这一思路建立起来的经典排序方法。

基于语言模型的信息检索(Language Modeling Approach to Information Retrieval)为这个问题提供了一套统一而严谨的数学语言。其基本思想是:不再仅仅把文档视为词项的集合或向量,而是把每篇文档看作一个能够生成词项的概率模型;相应地,查询也可以表示为定义在同一词汇空间上的概率分布。文档是否相关,就转化为该文档的语言模型能否很好地解释观察到的查询。从信息论的角度看,这又与交叉熵(Cross-Entropy)和 Kullback–Leibler Divergence(KL 散度)直接联系起来。

这一视角最重要的理论结果是:在一元词语言模型、经验查询分布以及固定查询等条件下,最大化查询似然,与最小化查询分布到文档分布的 KL 散度严格等价。

将查询和文档表示为词上的概率分布

设词汇表为 $\mathcal{V}$,其中包含检索系统能够识别的所有词项。对于文档 $d$,记 $c(w,d)$ 为词项 $w$ 在文档中的出现次数,$\lvert d\rvert$ 为文档的总词项数。在一元语言模型(Unigram Language Model)的假设下,文档可以由一个定义在 $\mathcal{V}$ 上的离散概率分布表示:

\[P_d(w)=P(w\mid \theta_d)\]

其中,$\theta_d$ 表示文档语言模型的参数,并且满足概率分布的归一化条件:

\[P_d(w)\geq 0, \qquad \sum_{w\in\mathcal{V}}P_d(w)=1\]

最简单的估计方式是极大似然估计(Maximum Likelihood Estimation,MLE),即直接使用文档中的相对词频作为概率:

\[\widehat{P}_{\mathrm{ML}}(w\mid d) = \frac{c(w,d)}{\lvert d\rvert}\]

同样地,对于长度为 $\lvert q\rvert$ 的查询 $q$,可以利用查询中的经验词频构造查询语言模型:

\[\widehat{P}_q(w) = \frac{c(w,q)}{\lvert q\rvert}\]

这里的 $\widehat{P}_q$ 是从观察到的查询估计出的经验分布,而不一定等于用户真实的信息需求分布。由于查询通常很短,经验查询分布往往非常稀疏,只有少数查询词具有非零概率。相比之下,文档语言模型通常需要经过平滑处理,以避免未观察到的词项获得零概率。

一旦完成这种表示,文档与查询就处于同一个概率空间之中。检索问题可以被重新表述为:给定一个查询分布 $\widehat{P}_q$,寻找一个文档模型 $P_d$,使其能够尽可能准确地解释查询词项的概率分布。

查询似然模型:文档生成查询的概率

查询似然模型(Query Likelihood Model)是语言模型检索中最经典的实现之一。它假设每篇文档都对应一个词项生成模型,而用户输入的查询可以被看作从某个相关文档的语言模型中生成的一组词项。对于固定查询 $q$,系统据此计算每篇候选文档生成该查询的概率,并按照概率从大到小排序。在文档先验概率相同的条件下,这可以表示为:

\[d^* = \arg\max_{d\in\mathcal{C}} P(q\mid\theta_d)\]

这一目标也可以从贝叶斯公式理解。如果将 $P(q\mid d)$ 近似为文档语言模型下的查询生成概率,那么有:

\[P(d\mid q) = \frac{P(q\mid d)P(d)}{P(q)}\]

对于固定查询,$P(q)$ 不随候选文档变化;如果进一步假设所有候选文档具有相同的先验概率 $P(d)$,那么按照后验概率 $P(d\mid q)$ 排序,就等价于按照查询似然 $P(q\mid\theta_d)$ 排序。如果引入文档权威性、时间、质量等非均匀先验,则应当保留对应的 $\log P(d)$ 项,而不能直接将查询似然与完整的后验相关性概率混为一谈。

在一元词袋模型中,假设查询词项在给定文档语言模型后条件独立,那么查询的生成概率可以写为:

\[P(q\mid\theta_d) \propto \prod_{w\in\mathcal{V}} P_d(w)^{c(w,q)}\]

这里的比例关系忽略了多项分布中的组合系数,因为对于固定查询,该系数不依赖候选文档,不会影响排序。对查询似然取对数,可以将乘积转换为求和,从而得到实际检索系统更常使用的打分函数:

\[S_{\mathrm{QL}}(d,q) = \log P(q\mid\theta_d)+C_q = \sum_{w\in\mathcal{V}} c(w,q)\log P_d(w)\]

其中,$C_q$ 表示吸收了查询相关组合系数的常数,具体符号约定不影响排序。由于非查询词的计数为零,上式实际上只需要遍历查询中出现的词项。它揭示了查询似然模型的基本机制:一个文档只有在能够为查询词分配较高概率时,才会获得较高的检索分数;同时,查询词出现次数越多,该词对最终排序分数的贡献越大。

从查询似然到 KL 散度:严格的排序等价关系

查询似然模型虽然来自概率生成过程,但它可以被完全等价地改写为信息论中的分布差异最小化问题。考虑查询的经验概率分布 $\widehat{P}_q$,以及经过适当平滑、对查询支持集赋予正概率的文档分布 $P_d$。二者之间的 KL 散度定义为:

\[D_{\mathrm{KL}} \left( \widehat{P}_q\parallel P_d \right) = \sum_{w\in\mathcal{V}} \widehat{P}_q(w) \log \frac{\widehat{P}_q(w)}{P_d(w)}\]

将对数内部的比值展开,可以得到:

\[\begin{aligned} D_{\mathrm{KL}} \left( \widehat{P}_q\parallel P_d \right) &= \sum_{w\in\mathcal{V}} \widehat{P}_q(w)\log\widehat{P}_q(w) \\ &\quad- \sum_{w\in\mathcal{V}} \widehat{P}_q(w)\log P_d(w) \end{aligned}\]

根据信息熵(Shannon Entropy)的定义:

\[H(\widehat{P}_q) = - \sum_{w\in\mathcal{V}} \widehat{P}_q(w) \log\widehat{P}_q(w)\]

因此,KL 散度可以重写为:

\[D_{\mathrm{KL}} \left( \widehat{P}_q\parallel P_d \right) = - H(\widehat{P}_q) - \sum_{w\in\mathcal{V}} \widehat{P}_q(w)\log P_d(w)\]

注意,对于固定查询 $q$,查询熵 $H(\widehat{P}_q)$ 是常数,与待排序文档无关。因此,最小化 KL 散度等价于最大化查询分布在文档模型下的期望对数概率:

\[\arg\min_d D_{\mathrm{KL}} \left( \widehat{P}_q\parallel P_d \right) = \arg\max_d \sum_{w\in\mathcal{V}} \widehat{P}_q(w)\log P_d(w)\]

进一步代入经验查询分布的定义:

\[\widehat{P}_q(w) = \frac{c(w,q)}{\lvert q\rvert}\]

便得到:

\[\arg\min_d D_{\mathrm{KL}} \left( \widehat{P}_q\parallel P_d \right) = \arg\max_d \frac{1}{\lvert q\rvert} \sum_{w\in\mathcal{V}} c(w,q)\log P_d(w)\]

由于查询长度 $\lvert q\rvert$ 对所有候选文档相同,最终有:

\[\boxed{ \arg\max_d S_{\mathrm{QL}}(d,q) = \arg\min_d D_{\mathrm{KL}} \left( \widehat{P}_q\parallel P_d \right) }\]

进一步定义查询分布相对于文档分布的交叉熵:

\[H(\widehat{P}_q,P_d) = - \sum_{w\in\mathcal{V}} \widehat{P}_q(w)\log P_d(w)\]

则有:

\[H(\widehat{P}_q,P_d) = H(\widehat{P}_q) + D_{\mathrm{KL}} \left( \widehat{P}_q\parallel P_d \right)\]

并且:

\[S_{\mathrm{QL}}(d,q) = -\lvert q\rvert \left[ H(\widehat{P}_q) + D_{\mathrm{KL}} \left( \widehat{P}_q\parallel P_d \right) \right]\]

换言之,查询似然最大化、交叉熵最小化以及 KL 散度最小化,在固定查询的排序问题中描述的是同一个优化目标。从信息论角度看,检索系统正在寻找能够以最小额外信息代价解释查询分布的文档模型。

为什么 KL 散度的方向不能颠倒

KL 散度虽然经常被非正式地称作分布之间的距离,但它并不是真正的数学度量,因为它不满足对称性,也不满足三角不等式。一般而言,$D_{\mathrm{KL}}(P\parallel Q)$ 与 $D_{\mathrm{KL}}(Q\parallel P)$ 并不相同,而这种方向上的差异在信息检索中具有非常重要的意义。

对于查询似然模型,其对应的散度方向是:

\[D_{\mathrm{KL}} \left( \widehat{P}_q\parallel P_d \right)\]

这一方向意味着,我们关注的是查询分布支持的词项是否被文档模型充分解释。对于没有出现在查询中的词项,经验查询概率为零,因此它们不会直接进入 KL 散度的求和;不过,这些非查询词仍然通过文档分布的归一化约束影响查询词的概率。直观地说,系统并不要求文档只讨论查询中的几个词,而是要求文档给查询词分配足够大的概率质量。这正好符合检索的基本特点:查询通常很短,而相关文档可能包含大量额外的信息。

如果将方向颠倒,使用 $D_{\mathrm{KL}}(P_d\parallel\widehat{P}_q)$,问题就会发生根本变化。由于经验查询分布通常只在少数查询词上非零,而正常文档包含大量查询之外的词项,反向 KL 散度往往会因为支持集不匹配而变为无穷大。即使对查询分布进行平滑,反向散度也会更直接地惩罚文档中没有被查询解释的概率质量,从而改变检索目标。因此,查询似然所对应的是以查询分布为第一个参数、以文档分布为第二个参数的 KL 散度。

概率平滑:从稀疏词频到可用于检索的文档分布

如果直接使用极大似然词频估计文档语言模型,那么任何没有出现在文档中的词项都会得到零概率:

\[c(w,d)=0 \quad\Longrightarrow\quad \widehat{P}_{\mathrm{ML}}(w\mid d)=0\]

这会导致一个严重问题:只要查询中存在一个文档没有出现的词项,该文档生成整个查询的概率就会变为零,对数查询似然也会趋向负无穷。对于实际信息检索而言,这过于严格。因此,语言模型检索中的文档分布通常不能简单地使用原始词频,而需要引入概率平滑(Smoothing)。

平滑的基本思想是利用整个语料库的词项分布作为背景语言模型。设 $P_C(w)$ 表示词项 $w$ 在语料库中的经验概率:

\[P_C(w) = \frac{ \sum_{d\in\mathcal{C}}c(w,d) }{ \sum_{d\in\mathcal{C}}\lvert d\rvert }\]

常见的平滑方法包括 Jelinek–Mercer 平滑以及 Dirichlet Prior 平滑,而不同的平滑方法不仅影响概率估计的稳定性,还会显著改变检索排序中的词频权重与文档长度效应。

Jelinek–Mercer 平滑

Jelinek–Mercer 平滑采用线性插值,将文档的经验语言模型与背景语言模型组合在一起:

\[P_d^{\mathrm{JM}}(w) = (1-\lambda) \frac{c(w,d)}{\lvert d\rvert} + \lambda P_C(w)\]

其中,$\lambda\in(0,1)$ 为平滑系数。较小的 $\lambda$ 表示更信任文档内部的词频分布,较大的 $\lambda$ 表示更依赖整个语料库的背景分布。

这种方法可以解释为一种分布混合:文档中的每个词项概率,一部分来自文档自身的统计证据,另一部分来自总体语言环境。

Dirichlet Prior 平滑

Dirichlet Prior 平滑从贝叶斯参数估计出发,在文档的一元多项分布上引入 Dirichlet 先验。若将词项 $w$ 的先验参数设为 $\mu P_C(w)$,则其后验均值,也即下一个词项的后验预测概率,可以写为:

\[P_d^{\mathrm{Dir}}(w) = \frac{ c(w,d)+\mu P_C(w) }{ \lvert d\rvert+\mu }\]

其中,$\mu>0$ 控制先验分布的强度。该公式也可以改写为一种依赖文档长度的动态插值:

\[P_d^{\mathrm{Dir}}(w) = \frac{\lvert d\rvert}{\lvert d\rvert+\mu} \widehat{P}_{\mathrm{ML}}(w\mid d) + \frac{\mu}{\lvert d\rvert+\mu} P_C(w)\]

与使用固定插值系数的 Jelinek–Mercer 平滑不同,Dirichlet 平滑会根据文档长度动态调整两种分布的权重。短文档的词频统计不充分,因此模型给予背景分布更大的权重;长文档包含更多观察样本,因此可以更充分地依赖文档自身的经验分布。

Dirichlet 查询似然的展开

Dirichlet 平滑的一个重要价值,是它能够将查询似然排序函数进一步分解,从而揭示经典检索权重背后的概率结构。将平滑后的文档概率代入查询似然函数,可以得到:

\[S_{\mathrm{Dir}}(d,q) = \sum_{w\in\mathcal{V}} c(w,q) \log \frac{ c(w,d)+\mu P_C(w) }{ \lvert d\rvert+\mu }\]

因为文档长度项不依赖具体词项,并且查询词频之和等于查询长度,因此可以整理为:

\[S_{\mathrm{Dir}}(d,q) = \sum_{w\in\mathcal{V}} c(w,q) \log \left[ c(w,d)+\mu P_C(w) \right] - \lvert q\rvert\log(\lvert d\rvert+\mu)\]

进一步将分子中的背景概率提取出来:

\[c(w,d)+\mu P_C(w) = \mu P_C(w) \left( 1+\frac{c(w,d)}{\mu P_C(w)} \right)\]

代入并展开对数,就能够得到:

\[\begin{aligned} S_{\mathrm{Dir}}(d,q) &= \sum_{w\in\mathcal{V}} c(w,q) \log \left( 1+\frac{c(w,d)}{\mu P_C(w)} \right) \\ &\quad+ \lvert q\rvert \log \frac{\mu}{\lvert d\rvert+\mu} \\ &\quad+ \sum_{w\in\mathcal{V}} c(w,q)\log P_C(w) \end{aligned}\]

最后一项只依赖查询和语料库背景模型,对所有候选文档而言都是常数,因此不影响排序。于是,可以得到一个非常重要的排序等价形式:

\[\boxed{ \begin{aligned} S_{\mathrm{Dir}}(d,q) \overset{\mathrm{rank}}{=} &\sum_{w\in\mathcal{V}} c(w,q) \log \left( 1+\frac{c(w,d)}{\mu P_C(w)} \right) \\ &+ \lvert q\rvert \log \frac{\mu}{\lvert d\rvert+\mu} \end{aligned} }\]

这个结果表明,Dirichlet 查询似然可以被拆解为两部分:第一部分是由查询词匹配带来的正向证据,第二部分是依赖文档长度的归一化惩罚。更重要的是,第一部分同时包含了词项的文档内频率 $c(w,d)$ 和语料库背景概率 $P_C(w)$,因此已经具备了类似 TF-IDF 与 BM25 的两类核心机制:文档内词频增强,以及语料库背景频率抑制。

具体而言,当某个词在文档中出现得越频繁时,$c(w,d)$ 越大,其对应的正向得分也就越大;当某个词在整个语料库中越普遍时,$P_C(w)$ 越大,即使它在文档中出现相同次数,其贡献也会下降。这意味着,模型不仅关注文档是否包含查询词,还在衡量该词的出现相对于背景分布究竟提供了多少额外证据。从统计角度看,频繁出现在所有文档中的词项并不具有很强的区分能力,而那些在总体语料中稀少、却在特定文档中明显集中的词项,才往往携带更强的检索信号。

与此同时,长度项

\[\lvert q\rvert \log \frac{\mu}{\lvert d\rvert+\mu}\]

会随着文档长度增加而减小,从而抑制长文档仅仅因为包含更多词项、获得更多匹配次数而形成的优势。

TF-IDF:背景概率与词项信息量的近似表达

TF-IDF 是信息检索中最经典的词项加权方法之一。其基本假设是,一个词在某篇文档中出现得越频繁,它对该文档主题的代表性通常越强;一个词在整个文档集合中出现得越普遍,它对区分不同文档的贡献通常越弱。

TF-IDF 同时使用 Term Frequency(TF)与 Inverse Document Frequency(IDF)来刻画局部频率与全局区分性。

设语料库包含 $N$ 篇文档,$\mathrm{df}(w)$ 表示至少包含一次词项 $w$ 的文档数量,那么一个常见的 IDF 定义为:

\[\mathrm{idf}(w) = \log \frac{N}{\mathrm{df}(w)}\]

在采用原始词频权重的简单形式下,TF-IDF 可以表示为:

\[\mathrm{TFIDF}(w,d) = c(w,d) \log \frac{N}{\mathrm{df}(w)}\]

实际系统通常还会使用对数词频、向量归一化以及不同的平滑版本。例如,为了减弱词频线性增长带来的过度加权,可以使用:

\[\mathrm{tf}_{\log}(w,d) = \begin{cases} 1+\log c(w,d), & c(w,d)>0 \\ 0, & c(w,d)=0 \end{cases}\]

从信息论角度看,IDF 可以被理解为一种基于文档出现事件的自信息(Self-Information)。如果将随机抽取一篇文档时该文档包含词项 $w$ 的概率估计为:

\[P_{\mathrm{doc}}(w) = \frac{\mathrm{df}(w)}{N}\]

那么该事件的自信息就是:

\[I_{\mathrm{doc}}(w) = -\log P_{\mathrm{doc}}(w) = \log\frac{N}{\mathrm{df}(w)}\]

这与 IDF 的定义完全一致。它表明,一个词在文档集合中出现得越罕见,那么观察到某篇文档包含该词时,所提供的事件信息量就越大。这一解释与语言模型检索中的背景概率机制具有明显的共同点:两者都认为,词项的区分能力来自它相对于某种背景分布的罕见程度,而不是来自词项出现这一事实本身。

更直接的联系可以从 Dirichlet 查询似然中的词项贡献看出:

\[g(w,d) = \log \left( 1+\frac{c(w,d)}{\mu P_C(w)} \right)\]

当文档内词频足够大,使得 $c(w,d)$ 明显大于 $\mu P_C(w)$ 时,可以使用如下渐近关系:

\[\log(1+x)\approx\log x, \qquad x\gg 1\]

因此有:

\[g(w,d) \approx \log c(w,d) - \log P_C(w) - \log\mu\]

这个近似形式非常接近 TF-IDF 的加法式对数表达:$\log c(w,d)$ 对应局部词频的对数增强,$-\log P_C(w)$ 对应背景罕见性的奖励,而 $-\log\mu$ 是由平滑强度决定的偏移项。

BM25:从概率相关性模型到词频饱和机制

BM25 是经典词项检索中应用非常广泛的排序函数。它与查询似然模型一样,同时关注词频、词项区分性和文档长度,但其理论来源有所不同。BM25 主要建立在概率相关性框架(Probabilistic Relevance Framework)及二元独立模型(Binary Independence Model)的发展之上,而不是从查询分布与文档分布之间的 KL 散度直接推导得到。

BM25 的典型形式可以写为:

\[S_{\mathrm{BM25}}(d,q) = \sum_{w\in\mathcal{V}_q} \mathrm{idf}_{\mathrm{BM25}}(w) \frac{ c(w,d)(k_1+1) }{ c(w,d)+k_1 \left( 1-b+b\frac{\lvert d\rvert}{\mathrm{avgdl}} \right) }\]

其中,$\mathcal{V}_q$ 表示查询中不同词项构成的集合,$\mathrm{avgdl}$ 表示语料库中文档长度的平均值;$k_1$ 控制词频饱和速度,$b$ 控制文档长度归一化强度。对于包含重复词项的较长查询,可以进一步引入查询词频权重;这里给出的是短查询场景下常用的简化形式。

BM25 中的一种常见非负 IDF 变体为:

\[\mathrm{idf}_{\mathrm{BM25}}(w) = \log \left( 1+ \frac{ N-\mathrm{df}(w)+0.5 }{ \mathrm{df}(w)+0.5 } \right)\]

这个 IDF 与经典 Robertson–Spärck Jones 权重有关,通过词项在包含与不包含该词的文档之间的分布,刻画其区分能力。BM25 的不同实现可能使用不同的 IDF 平滑或截断规则,例如不带外层 $1+$ 的概率权重形式可能对高频词产生负值,因此具体实现中的 IDF 定义并不完全一致。

BM25 最重要的特征之一是词频饱和。固定文档长度后,设:

\[K_d = k_1 \left( 1-b+b\frac{\lvert d\rvert}{\mathrm{avgdl}} \right)\]

那么单个词项的词频增强因子可以写成:

\[f_{\mathrm{BM25}}(c) = \frac{c(k_1+1)}{c+K_d}\]

其对词频的导数为:

\[\frac{\mathrm{d}f_{\mathrm{BM25}}}{\mathrm{d}c} = \frac{(k_1+1)K_d}{(c+K_d)^2}\]

在常用的正参数设定下,这个导数随着 $c$ 的增大而减小,说明词项每增加一次出现所带来的额外收益逐渐下降。当词频持续增大时,该词频因子会趋近于有限上界 $k_1+1$。这种设计符合一种合理的检索直觉:文档第一次、第二次出现某个关键查询词,通常能够显著增强相关性证据;但如果文档已经多次出现该词,那么额外重复几十次不应该继续带来同等幅度的收益。

回到 Dirichlet 查询似然,可以看到一个相似但不完全相同的机制。它的单词正向贡献为:

\[f_{\mathrm{Dir}}(c) = \log \left( 1+\frac{c}{\mu P_C(w)} \right)\]

对于固定的背景概率,其导数为:

\[\frac{\mathrm{d}f_{\mathrm{Dir}}}{\mathrm{d}c} = \frac{1}{c+\mu P_C(w)}\]

这一导数同样随词频增大而下降,因此 Dirichlet 查询似然也具有词频边际收益递减的性质。不过,Dirichlet 中的对数贡献在词频趋于无穷大时仍然无界增长,而 BM25 的词频因子具有明确的有限上界;同时,Dirichlet 中的背景概率直接进入词频增强函数,而 BM25 通常将 IDF 与词频饱和因子分离。

文档长度归一化也是两者的重要共同点。在 BM25 中,长度通过 $\lvert d\rvert/\mathrm{avgdl}$ 进入词频因子的分母,使相同的查询词频在不同长度文档中获得不同的有效权重;在 Dirichlet 查询似然中,长度通过 $\lvert d\rvert+\mu$ 进入词项概率,并在展开后的排序函数中形成整体长度惩罚。它们都在控制“长文档由于词项数量更多而天然拥有更多匹配机会”的偏差,但控制机制不同。BM25 依靠带有可调参数的有理函数,Dirichlet 查询似然则依靠归一化概率及贝叶斯平滑。

一个例子:为什么词频更高的文档不一定更相关

考虑一个包含两个词项 $a$ 和 $b$ 的查询:

\[q=(a,b)\]

由查询的经验词频可以得到:

\[\widehat{P}_q(a) = \widehat{P}_q(b) = 0.5\]

假设背景语言模型中,这两个词项的概率均为 $0.1$,其余 $0.8$ 的概率质量分配给其他词项,并采用 $\mu=2$ 的 Dirichlet 平滑。现在考虑两篇候选文档:文档 $d_1$ 仅包含一次 $a$ 和一次 $b$,总长度为 $2$;文档 $d_2$ 包含五次 $a$、一次 $b$ 和四个其他词项,总长度为 $10$。显然,$d_2$ 中查询词的总出现次数更多,但其词项概率分布也更加分散,而且对 $a$ 与 $b$ 的分配并不均衡。

对于第一篇文档,Dirichlet 平滑后的查询词概率为:

\[P_{d_1}(a) = P_{d_1}(b) = \frac{1+2\times0.1}{2+2} = 0.3\]

对于第二篇文档:

\[P_{d_2}(a) = \frac{5+2\times0.1}{10+2} \approx 0.4333\] \[P_{d_2}(b) = \frac{1+2\times0.1}{10+2} = 0.1\]

因此,两篇文档生成查询的概率分别为:

\[P(q\mid\theta_{d_1}) = 0.3\times0.3 = 0.09\] \[P(q\mid\theta_{d_2}) \approx 0.4333\times0.1 = 0.0433\]

结果是 $d_1$ 的查询似然高于 $d_2$,即使 $d_2$ 包含更多查询词出现次数。从 KL 散度角度看,$d_1$ 也为均匀的查询分布分配了更加均衡、更加充分的概率质量,因此具有更小的 $D_{\mathrm{KL}}(\widehat{P}_q\parallel P_d)$。这个例子揭示了一个经常被简单词频匹配忽略的事实:文档相关性的词项证据不等于查询词出现次数的简单求和,而取决于查询词在整个文档语言分布中获得了多大的概率质量,以及这种概率分配是否能够解释查询分布。

从分布相似到语义相关:经典模型的能力边界

语言模型检索提供了清晰的概率解释,但把查询与文档表示为一元词分布,也带来了明确的建模限制。首先,一元模型假设词项之间不存在需要显式建模的依赖关系,因此无法直接区分同一组词在不同顺序、不同语法结构下形成的语义差异。其次,词汇匹配并不等于语义匹配:两个文档可能使用完全不同的术语描述同一个概念,而一元词模型会因为缺少直接词项重合而低估它们之间的相关性。反过来,两个文档即使具有相似的词频分布,也不一定表达相同的事实、关系或用户真正需要的答案。

此外,短查询的经验分布本身也是有噪声的估计。用户通常只输入少量关键词,这些词并不能完整表示潜在的信息需求。将查询直接转化为经验词分布,实际上假设用户选择的查询词及其重复频率足以代表目标分布,而这一假设在复杂检索任务中往往过于简化。因此,KL 散度检索的一个自然扩展是改进查询语言模型,而不仅仅改进文档语言模型。

例如,可以通过相关性反馈(Relevance Feedback)或伪相关性反馈(Pseudo-Relevance Feedback),从初始检索结果中估计一个相关主题分布 $P_R$,然后将它与原始查询分布插值:

\[P_q^{\mathrm{new}}(w) = (1-\alpha)\widehat{P}_q(w) + \alpha P_R(w)\]

其中,$\alpha\in[0,1]$ 控制查询扩展的强度。与仅依靠原始查询词频不同,扩展后的查询模型可以为同义词、相关术语以及原始查询未包含的潜在主题词分配概率质量。系统随后仍然可以使用相同的 KL 散度目标进行排序:

\[d^* = \arg\min_d D_{\mathrm{KL}} \left( P_q^{\mathrm{new}}\parallel P_d \right)\]

这种扩展说明,KL 散度并不只是一个替代 TF-IDF 或 BM25 的简单打分函数,而是一个可以容纳查询建模、相关性反馈、概率平滑和文档分布估计的通用优化目标。随着语言表示能力的发展,文档和查询模型也不必局限于原始词频。一些研究使用翻译模型解释词汇替换,也有工作借助预训练神经语言模型估计查询生成概率。不过,一旦引入更复杂的上下文依赖生成模型,经典一元经验分布与 KL 散度之间的严格等价推导就不再自动适用,必须重新分析新模型的概率分解与优化目标。

工程实现

虽然 KL 散度最初看起来需要在整个词汇表上求和,但在采用经验查询分布的情况下,所有非查询词的概率都是零,因此只有查询支持集中的词项会对散度产生直接贡献。这意味着经典查询似然检索仍然可以通过倒排索引(Inverted Index)高效实现,而不必为每篇候选文档遍历完整词汇表。

对于 Dirichlet 查询似然,可以将前面推导出的排序函数进一步写成:

\[\begin{aligned} S_{\mathrm{Dir}}(d,q) \overset{\mathrm{rank}}{=} &\sum_{w\in\mathcal{V}_q\cap\mathcal{V}_d} c(w,q) \log \left( 1+\frac{c(w,d)}{\mu P_C(w)} \right) \\ &+ \lvert q\rvert \log \frac{\mu}{\lvert d\rvert+\mu} \end{aligned}\]

其中,$\mathcal{V}_d$ 是文档中出现过的不同词项集合。对于文档中没有出现的查询词,第一部分的词项增益为零,因此这部分得分只需要通过倒排表中的命中文档及其词频来计算。查询词频、背景概率、文档长度和平滑参数则可以作为检索阶段所需的基本统计量进行存储或预计算。

需要注意的是,第二部分的长度项即使对于完全没有命中查询词的文档也不为零。因此,如果要求对整个文档集合执行数学上完全精确的排序,就不能在未经分析的情况下直接忽略所有未命中文档;实际系统通常会先采用倒排匹配、候选召回和剪枝等策略,将排序限制在一个候选集合之内。这样可以提高检索效率,但候选约束本身也应被视为系统设计的一部分,而不是查询似然目标自动保证的性质。

从工程角度看,背景词频估计、分词粒度、停用词处理以及词汇表外词项(Out-of-Vocabulary Terms)的处理,同样会影响最终排序。尤其是在中文检索中,词项可以是分词后的词、字符或子词,不同粒度会直接改变词频分布和 KL 散度的计算结果。因此,概率模型虽然提供了清晰的数学目标,但其实际效果依然依赖文本表示、参数估计和候选检索机制的共同设计。

统一视角:经典排序函数

回顾查询似然、KL 散度、TF-IDF 和 BM25,可以发现这些模型虽然具有不同的形式化基础,但都在处理同一类核心统计问题:如何区分具有解释力的词项匹配与偶然的词项共现,以及如何避免文档长度和高频词对检索排序产生系统性偏差。

查询似然模型直接建模文档生成查询的概率,认为能够为查询词分配更高概率质量的文档应当获得更高排名。KL 散度则将这一目标改写为分布差异最小化,通过信息论中的交叉熵和相对熵解释查询与文档之间的概率匹配关系。TF-IDF 使用局部词频与逆文档频率,在较简单的加权框架中近似刻画词项的代表性和区分性。BM25 则通过概率相关性框架、词频饱和和长度归一化,构造出适合实际排序任务的高效权重函数。

这几种方法的联系可以概括为三个共同的统计原则。首先是局部证据增强:查询词在文档中越突出,通常越有利于该文档的排名。其次是背景概率校正:一个在所有文档中都常见的词项,通常比一个具有明显区分性的罕见词项提供更少的相关性证据。最后是文档规模校正:不能简单地把更长文档中更高的词项出现次数等同于更强的相关性,而需要控制词频与文档长度之间的关系。

结语:检索可以被理解为一种信息解释问题

经典文本检索表面上是在比较查询词和文档词之间的重合程度,但从概率建模的角度看,它实际上可以被理解为一个更深层的问题:给定用户观察到的查询词项,哪一个文档语言模型最有能力解释这些观察?查询似然模型将这一问题形式化为概率最大化,KL 散度进一步将其转化为信息损失最小化,而概率平滑、背景词频校正与文档长度归一化,则使这种模型能够在稀疏文本数据上获得具有实际意义的排序结果。

从这个角度看,词项检索、概率语言模型以及现代语义检索虽然采用不同的表示和估计技术,但都在探索同一个核心目标:构造一种能够准确刻画用户信息需求与文档内容之间关系的评分机制,并据此找到最有可能满足该需求的文档。

参考文献

  • Ponte, J. M., & Croft, W. B. (1998). A Language Modeling Approach to Information Retrieval. Proceedings of SIGIR, 275–281. https://doi.org/10.1145/290941.291008
  • Lafferty, J., & Zhai, C. (2001). Document Language Models, Query Models, and Risk Minimization for Information Retrieval. Proceedings of SIGIR, 111–119. https://doi.org/10.1145/383952.383970
  • Zhai, C., & Lafferty, J. (2004). A Study of Smoothing Methods for Language Models Applied to Information Retrieval. ACM Transactions on Information Systems, 22(2), 179–214. https://doi.org/10.1145/984321.984322
  • Robertson, S., & Zaragoza, H. (2009). The Probabilistic Relevance Framework: BM25 and Beyond. Foundations and Trends in Information Retrieval, 4(1–2), 1–174. https://doi.org/10.1561/1500000019
  • Manning, C. D., Raghavan, P., & Schütze, H. (2008). Introduction to Information Retrieval. Cambridge University Press. https://nlp.stanford.edu/IR-book/

warning

本文由作者按照 CC BY 4.0 进行授权