Information Retrieval(信息检索)笔记07:Probabilistic Model & Language Model

目前为止,我们已经学习了简单的布尔检索模型和向量空间模型,现在我们来看一看概率模型 (Probabilistic Model)。我们可以先回顾一下检索的基本信息检索的基本思想。用户起始于信息需求(information need),然后将这些需求转换成查询表示(query representation)。类似地,文档(document)也可以转换成文档表示(document Representation)。需要注意的是,不管是转换后的文档表示还是查询与其原本的形式相比,其包含的信息量都会减少 基于这两种表示结果,系统试图确定文档对于信息需求的满足程度。

在这里插入图片描述
在布尔模型和向量空间模型中,这种满足程度通过索引词来计算,但是这两种模型中的计算方式虽有形式化定义,但在语义上并不精确,这很好理解,因为就算不同的信息需求,有时转换为查询也会变成相同的形式。在仅仅给定查询的情况下,IR 系统难以精确理解其背后的信息需求。即给定查询表示和文档表示,系统只能给出文档内容和需求是否相关的一个非确定性推测。而概率论可以为这种非确定性推理提供一个基本的理论。

概率模型 (Probabilistic Model)

和之前一样,我们这里给出文档排序问题需要的必要条件:

文档集 (Collection) 、用户输入的查询 (Query) 以及返回的有序文档结果 (A list of documents needs to be returned)
这里我们仍然设定相关度是二值 (Binary) 的,即相关 (Relevant) / 不相关 (Nonrelevant)
对查询 q 和文档集中的一篇文档 d,假定变量 Rd,q 代表 d 和查询 q 是否相关,即:
当文档 d 和查询 q 相关时 Rd,q 的取值为 1;
不相关时 Rd,q 的取值为 0。
在不造成上下文歧义的情况下,我们将 Rd,q 简记为 R。

概率排序原理 (Probability Ranking Principle, PRP)

我们用 x 表示文档集中的一篇文档,用 R 表示给定查询 (Query) q 的情况下的相关 (Relevant),用 NR 表示不相关 (Nonrelevant)。因此我们想要找到 P(R | x) ,即文档 x 与查询 q 相关的概率:

在这里插入图片描述
我们其实也可以写为 P(R|x, q),但既然已经在这里将 q 作为 Evidence,也就可以进行省略

其中,P( R ) 和 P(NR) 表示检索一个 (不) 相关文档的先验概率 (Prior Probability)。P(x|R) 和 P(x|NR) 表示如果检索到的 (不) 相关的文档为 x 的概率。

因此,所谓的概率排序原理 (PRP) 即为使用概率模型来估计每篇文档 (Document) x 和查询 (Query) q 的相关概率 (Relevant Probability) P(R|x) ,然后对结果进行排序。

一般我们会选择贝叶斯最优决策定理 (Bayes’ Optimal Decision Rule) 来决定一个文档是否相关,进而确定是否将其返回。所谓的贝叶斯最优决策定理其实很简单,当 P(R|x) > P(NR|x) (也就是 P(R|x) > 0.5)时,我们认定该文档是相关文档,将其返回

同时,我们需要知道,在 1/0 损失的情况下,PRP 对于最小化期望损失(也称为贝叶斯风险)而言是最优的。所谓的 1/0 损失就是在返回一篇不相关文档 (Nonrelevant Document) 或者没有返回相关文档的情况下,即 FP 和 FN 时,将失去 1 分。

当然,我们也可以假定检索中存在检索代价,在此基础上来给出一个检索模型。令 C1 表示一篇相关文档未返回所发生的代价 (FN) ,而 C0 表示返回一篇不相关文档发生的代价 (FP)。那么,此时 PRP 认为如果对于一篇特定的文档 d 及所有其他未返回的文档 d′ 都满足:

在这里插入图片描述
这个式子的左部和右部可以分别看成是 d 和 d′ 的函数,每个函数表示一篇文档 (Document) 的代价。它由两部分组成:一个是当它不相关 (Nonrelevant) 时却返回的代价 C0· P(R=1|d),另一个是相关 (Relevant) 时却没有被返回所造成的代价 C1· P(R=0|d)。两者相减表示返回文档 d 的代价函数,也即此时前者越低越好,后者越高越好

那么d 就应该是下一篇被返回的文档。这种模型的好处在于,我们在建模的时候就已经将 FP 和 FN 的代价,甚至是系统性能的问题考虑在内,而不是等最后的评价 (Evaluation) 环节再去考虑。

在了解了 PRP 的原理之后,我们现在有一个亟待解决的问题,那就是,我们怎样得到 P(R|x) (即P(R|q, d)),这个概率是一切的基础,没有它我们也无法进行上述的所有操作。

二值独立模型 (Binary Independence Model)

这节要介绍的BIM(binary independence model,二值独立模型)是在传统上随同PRP 一起使用的一种模型。为了能够在实际中对概率函数P(R|d,q)进行估计,该模型中引入了一些简单的假设。我们现在把这个名词拆解开来理解:

首先,什么是 "二值 (Binary) "。在这里,二值等价于布尔值 (Boolean) ,文档和查询都表示为词项出现与否的布尔向量。也就是说,文档 d 表示为向量 x = (x1, …, xM) 其中当词项 t 出现在文档 d 中时,xt=1,否则 xt=0。类似地,我们将查询 q 表示成词项出现向量 q(由于查询 q 通常就是采用一系列词项的集合来表示,所以 q 和 q 的之间的区别并不十分重要。 如果有印象的话,我们在之前的向量空间模型中对此有了一定的介绍,形如下图所示:

在这里插入图片描述
需要注意的是,在这种表示下,由于不考虑词项出现的频率 (TF) 以及顺序 (Order) ,许多不同的文档可能都有相同的向量表示。

接下来,我们来看 “独立性 (Independence) ”。所谓的 “独立性” 指的是词项在文档中的出现是互相独立的,BIM 并不识别词项之间的关联。独立性假设和实际情况很不相符,但在实际中常常却能给出令人满意的结果这实质上就是朴素贝叶斯模型 (Naive Bayes Model) 的思想。

因此,BIM 实际上也就是多元贝努利朴素贝叶斯模型 (Bernoulli Naive Bayes Model)。

现在我们已经有了查询 q 和所有文档的二元向量 (binary term incidence vectors),现在我们对每一个文档 d 求其与查询 q 的相关概率 P(R|d, q),为了方便表示,我们用 x 表示文档的二元向量,所以,这个概率表示为 P(R|x, q)。在 BIM 模型中,我们就需要根据 P(R|x, q) 的值,从高到低将文档进行排序。由于 IR 系统关心的只是文档的相对次序,所以这里并不需要直接估计出这个概率值,而是采用其它的更容易计算的排序函数,这中间只需要保证采用排序函数和直接计算概率所得到的文档次序一致即可。因此,我们可以选择使用文档相关性的优势率 (Odds) 来对文档排序,它是相关性概率的单调递增函数。

所谓的优势率 (Odds) 也就是:

在这里插入图片描述
现在,我们将文档相关性概率代入,并使用贝叶斯定理,可以得到如下公式:

在这里插入图片描述
住在这个式子中,前半部分是一个常数:

在这里插入图片描述
同时,因为我们只关注文档的排序,因此我们只需要关注后半部分:

在这里插入图片描述
为了估计这部分的值,我们需要借助朴素贝叶斯条件独立性假设(Naive Bayes conditional independence assumption)。即在给定查询的情况下,认为一个词的出现与否与任意一个其他词的出现与否是互相独立的。所以,上面的式子可以变为:

在这里插入图片描述
因此,整个优势率 (Odds) 公式就可以变为:

在这里插入图片描述
由于每个 xt 的取值只有 0 / 1 两种,因此,上面的式子可以进一步转换为:

在这里插入图片描述
为了简便起见,我们记 pt = P(xt=1|R=1, q),即词项出现在一篇相关文档中的概率;ut = P(xt=1|R=0, q),即词项出现在一篇不相关文档中的概率。这些值的关系可以用一个矩阵表示清楚:

在这里插入图片描述
因此,可以对之前的式子进行简化,我们只需要考虑在查询 (Query) 中出现的词项的概率的乘积:

在这里插入图片描述
其中,第二个因子计算的是出现在文档中的查询词项的概率乘积,第三个因子计算的是不出现在文档中的查询词项的概率乘积。该式子可以进一步转换:

在这里插入图片描述
此时的式子中,第二个因子仍然基于出现在文档中的查询词项来计算,而第三个因子考虑的是所有查询词项。显然,对于给定的查询而言,第三个因子实际是个常数。因此,现在我们需要进行估计的仅有第二个因子。

在这个模型中,最后用于排序的量被称为 RSV (Retrieval Status Value,检索状态值),具体定义为:

在这里插入图片描述

因此,所有的计算最后都归结于 RSV 值,定义 ct:

在这里插入图片描述
ct 是查询词项 (Query Term) 的优势率比率(odds ratio)的对数值:

  • 当查询词项出现在相关文档时,优势率为 pt /(1 - pt
  • 当查询词项出现在不相关文档时,优势率为 ut / (1 - ut)

优势率比率是上述两个优势率的比值,最后对这个值取对数。如果词项在相关和不相关文档中的优势率相等,ct 值为 0。如果词项更可能出现在相关文档中,那么该值为正。ct 实际上给出的是模型中词项的权重,而文档的得分是 RSVd = Σct

下面我们具体介绍如何来估计 ct

首先给出一个在文档集 (Collection) 中不同类型的文档数目的列联表:

在这里插入图片描述
其中用 dft 表示 t 的文档频率 (DF:包含该词项的文档数量);N 表示文档集 (Collection) 规模,即文档 (Document) 的总数。

基于这个表,我们可以知道,pt = s / S, ut = (dft - s) / N - S。 所以 ct 可以估计为:

在这里插入图片描述
为了避免可能出现的 0 概率,即 s = 0 的情况(比如所有的相关文档都包含或不包含某个特定的词项),一种很常规的做法是在之前的表格中的每个量的基础上都加上 1/2,因此总数也做相应改变(比如表格的右下角的总数也会变成N+2),这是一种很简单的平滑方式,因此我们就有了以下结果:

在这里插入图片描述
以上的理论部分或许会显得很复杂,现在我们来看一个例子:

在这里插入图片描述
本例中,查询 q = {x1, x2}。共有 5 个文档,每个文档相关与否以及其二值向量如表格所示。
现在,我们来求 O(R = 1|D3, q)。
首先,我们知道 D3 ∩ q = {x1}
接下来,我们需要顾及 pt 和 ut
p1 = P(x1=1|R=1, q) = P(x1=1|R=1) = s / S = 2 / 3
u1 = P(x1=1|R=0, q) = P(x1=1|R=0) = (df1 - s) / N - S = (3 - 2) / (5 - 3) = 1 / 2
所以:
O(R = 1|D3, q) = log((2/3 * 1/2) / (1/2 * 1/3)) = log 2 = 1
注意,这里我们并没有进行平滑 (Smoothing),如果进行平滑,则结果为:
p1 = (2 + 1/2) / (3 + 1/2 * α)
u1 = (1 + 1/2) / (2 + 1/2 * α)
这里的 α 一般为 xi 的取值数量,因为我们这里都是二元变量,因此 α = 2

Okapi BM25

在 BIM 模型中,我们没有将 TF 纳入考虑。Okapi BM25 就是一种将 TF 以及文档长度纳入考虑的模型。

在这里插入图片描述
Lavg 是文档的平均长度。k1, k3∈ [1.2, 2.0], b = 0.75

语言模型 (Language Model)

在之前的概率模型中,我们的实现逻辑大致为:将信息需求表示为查询,通过对文档 d 与查询 q 的相关概率 P(R = 1|q, d) 显示建模,来找到匹配程度最高的一批结果:

在这里插入图片描述
而现在实际上有另外一种思路。给定查询,如果某篇文档所对应的文档模型可能生成该查询,那么这篇文档是一个好的匹配文档。此时,查询词项也往往在该文档中频繁出现。这就是所谓的语言建模

在这里插入图片描述
上面我们提到从文档模型生成查询,那么这种说法的具体含义如何?和为人所熟知的形式语言理论(formal language theory)类似,一个传统的语言生成模型(generative model)可以用于识别或生成字符串。比如下图中的有穷自动机可以生成例子中的字符串。所有可能的字符串的全集称为该自动机的语言:

在这里插入图片描述
这个有穷自动机的双圆圈节点表示可能的终止状态,而左边的是初始状态。因此这个有穷自动机不会产生 “wish I wish” 这样的字符串。

如果每个节点都有一个生成不同词项的概率分布,便可以得到一个语言模型。语言模型的概念本质上也是基于概率的。一个语言模型(language model)是从某词汇表上抽取的字符串 (String) 到概率 (Probability) 的一个映射函数。也就是说,对于字母表 ∑ 上的语言模型 M 有:

在这里插入图片描述

一类最简单的语言模型与一个概率有穷自动机等价,该自动机仅仅包含一个节点,它也只有一个生成不同词项的概率分布,生成每个词之后,要决定是停止还是继续循环生成另外一个词:

在这里插入图片描述
因此,此时生成一个词序列 (frog said that toad likes frog) 的概率为:

P(frog said that toad likes frog) = (0.01×0.03×0.04×0.01×0.02×0.01)× (0.8×0.8×0.8×0.8×0.8×0.8×0.2)= .000 000 000 001 573

可以看到,一个具体的字符串或文档的概率往往非常小。而且这里我们还只是在第二次生成 frog 时就停止。这有很大一部分原因来源于后半部分乘上的终止概率。然而,大部分情况下,我们可以不考虑终止概率。在一个数据集上比较两个模型,可以计算似然比(likelihood ratio),即将其中一个模型的数据生成概率除以另外一个模型的数据生成概率:

在这里插入图片描述
对于上面这个例子,我们可以知道,模型 M1 是更可能生成词项序列 s 的那个模型。

针对一个词项序列,我们可以使用链式法则 (Chain Rule) 去计算它的生成概率:

在这里插入图片描述

最简单的语言模型形式是我们假设每个词项互相独立。这种模型就称为一元语言模型 (Unigram Language Model):

在这里插入图片描述
还有很多更复杂的语言模型,比如二元语言模型(bigram language model),即计算条件概率时只考虑前一个词项的出现情况:

在这里插入图片描述
在这个模型中,我们对文档集中的每篇文档 d 构建其对应的语言模型Md。我们的目标是将文档按照其与查询相关的似然 P(d|q) 排序,根据贝叶斯定理,这个似然率也可表示为:

在这里插入图片描述

P(q)对所有的文档都一样,因此可以被忽略。文档的先验概率 P(d) 往往可以视为均匀分布,因此也可以被省略。当然,实际中也可以使用真实的先验概率,比如可以包括权威度、长度、类型、新鲜度和以前阅读过该文档的用户数目这些因素。这里我们暂时不考虑P(d),这样的话,最后我们会按照 P(q|d) 进行排序,它是在文档 d 对应的语言模型下生成 q 的概率

因此,IR 中的语言建模方法实际上是在对查询的生成过程进行建模:首先每篇文档 (Document) 对应一个文档模型,然后计算查询 (Query) 被视为每个文档模型的随机抽样样本的概率,最后根据这些概率对文档排序。

设计语言模型的一个基本问题就是,我们不知道到底应该用什么来估计语言模型 Md 。但是,通常我们都有一个能够代表模型的文本样本。在 IR 系统中采取的策略如下:我们假设文档 d 仅仅是来自满足某个词分布模型的抽样样本,该词分布代表了一个细粒度的话题;然后,基于这个样本估计出一个语言模型并利用该模型计算观察中的词序列的概率;最后,我们按照不同模型生成查询的概率大小来对文档进行排序。

在这里插入图片描述
到此为止,我们先来总结一下语言模型 (Language Model, LM) 的基本思路。基于语言模型(简记为LM)的检索中,可以将查询的生成看成一个随机过程:

  1. 对每篇文档推导出其LM
  2. 估计查询在每个文档 di 的 LM 下的生成概率 P( q | Mdi )
  3. 按照上面的结果进行排序

那么,现在最重要的任务就是估计出概率 P( q | Mdi )。

在 MLE(maximum likelihood estimation,最大似然估计)及一元语言模型 (Unigram Language Model) 假设的前提下,给定文档 d 的 LM Md 的情况下生成查询 q 的概率为:

在这里插入图片描述
该式子中 Md 是文档 d 的 LM, tft,d 是词项 t 在文档 d 中的频率(即 TF), Ld 是文档 d 中的词条数目 (即文档 d 的长度)。也就是说,我们只是将词在文档中出现的次数除以文档中出现的所有的词的总数

LM 使用中的一个经典问题是参数估计(公式中 P 上面的 ^ 符号强调模型是估计出来的)的稀疏性问题,即词项在文档中的出现非常稀疏。特别是有些词根本不会在文档中出现,但是这些词很有可能构成信息需求并可能在查询中使用。如果将不出现在文档中的词项t 的概率 P(t|M) 估计成 0,这就出现了所谓的零概率问题。LM 的估计当中还有一个更一般的问题就是,对文档中出现的词的估计也存在很大问题,特别是那些在文档中只出现一次的词往往会被过度估计,这是因为它们仅有的一次出现在一定程度上出于偶然性。

为了解决以上两个问题,就需要进行平滑 (Smoothing)。即对非零的概率结果进行折扣,并对未出现的词的概率赋予一定的值。一个实际效果较好的简单方法是,将基于文档的多项式分布和基于全部文档集估计出的多项式分布相混合

在这里插入图片描述
其中,0 < λ < 1,Mc 是基于全部文档集构造的 LM,上述公式混合了来自单个文档的概率词在整个文档集的出现频率。这种平滑方式被称为 Jelinek-Mercer Smoothing。

这种平滑方式中,λ 的取值就显得格外重要,较小的 λ 意味着更加平滑。λ 的值也不必是个常数,一种做法就是将参数定义为查询长度的一个函数,这是因为对于短查询来说,轻度平滑(类似于“与”搜索)更为合适,而长查询则需要加重平滑的权重。

总结一下,在我们讨论的基本语言建模的 IR 模型下,查询 q 的检索排序函数定义如下:

在这里插入图片描述

来看一个具体的例子:
假设文档集 (Collection) 包含以下两篇文档:
d1 : Xyzzy reports a profit but revenue is down
d2: Quorus narrows quarter loss but revenue decreases further
模型采用的是利用 MLE 估计的两个一元模型的混合,其中一个来自文档而另一个来自文档集,混合参数 λ = 1/2。查询为 revenue down
此时:

  1. 对于第一个查询词项 revenue,它在 d1 的 TFt1,d1 为 1,在 d2 的 TFt1,d2 为 1,在文档集的 TFt1,c 为 2
  2. 对于第一个查询词项 down,它在 d1 的 TFt2,d1 为 1,在 d2 的 TFt2,d2 为 0,在文档集的 TFt2,c 为 1
  3. d1 的长度 Ld1 为 8, d2 的长度 Ld2 为 8,文档集 (Collection) 的尺寸 Lc 为 16

所以可以得到:

P(q, d1) = [λ * TFt1,d1 / Ld1 + (1 - λ) * TFt1,c / Lc] * [λ * TFt2,d1 / Ld1 + (1 - λ) * TFt2,c / Lc]
= [1/2 * 1/8 + 1/2 * 2/16] * [1/2 * 1/8 + 1/2 * 1/16]
= [1/2 * (1/8 + 2/16)] * [1/2 * (1/8 + 1/16)] = 1/8 * 3/32 = 3/256

P(q, d2) = [1/2 * (1/8 + 2/16)] * [1/2 * (0 + 1/16)] = 1/8 * 1/32 = 1/256

因为 P(q, d1) > P(q, d2),所以 d1 的排名应当高于 d2

有人可能会奇怪,为什么我们最后去计算 P(q, d),而不是 P(d|q)。因为这两者实际上是一样的,我们很容易根据贝叶斯定理将二者转换,这两个概率之间只相差了一个 P(q),而这个概率对于所有文档相同,是一个常数,因此我们不必关心它。所以,计算 P(q, d) 和计算 P(d|q) 本质上没有区别。

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值