『IR 信息检索入门必看』#10 查询相关反馈(简明)

访问博客查看 本文 最新内容,排版更美观ヾ(•ω•`)o 如有错误欢迎指出~

IR 信息检索系列笔记:

用户在检索信息时,通常会以一个简短的 query 开始,这样的查询往往得不到其最想要的结果。而用户会在得到结果后优化自己的 query,如:增删词项、重新赋权、加入布尔运算符等。

相关反馈(Relevance Feedback)的主要思想就是:在信息检索的过程中通过用户交互来优化查询,从而提高最终的检索效果。我们的目的是实现一个良好的反馈机制

最佳查询 | Best Query

为了使反馈能让 query 真正往「更好」的方向演变,需要定义评价 query 的一个指标。通常我们在向量空间模型中评价之,因为可以较好地表达相似度。

假设我们要找一个最优查询向量 \vec{q},它与相关文档之间的相似度最大,和不相关文档之间的相似度最小。若 C_r 表示相关文档集,C_{nr} 表示不相关文档集,我们希望找到的最优的是 \vec{q} 应当满足:
\begin{aligned} \vec{q}_{opt} &= argmax[Sim(\vec{q},C_r)-Sim(\vec{q},C_{nr})] \\ &=argmax(\frac{1}{|C_r|}\sum_{\vec{d}_j\in C_r}{\vec{q}\cdot \vec{d}_j}-\frac{1}{|C_{nr}|}\sum_{\vec{d}_j\in C_{nr}}{\vec{q}\cdot \vec{d}_j}) \\ &=argmax(\vec{q}\cdot \vec{a}) \end{aligned}

其中 argmax(x) 函数是返回使 x 最大的变量,相似度 Sim 的求法则采用余弦夹角, \vec{q}\vec{d} 采用归一化后的单位向量。此外,我们令:
\vec{a}=\frac{1}{|C_r|}\sum_{\vec{d_j}\in{C_r}}{\vec{d_j}} - \frac{1}{|C_{nr}|}\sum_{\vec{d_j}\in{C_{nr}}}{\vec{d_j}}
若使 \vec{q}\cdot{\vec{a}} 最大,\vec{q} 需要与 \vec{a} 平行,且 \vec{q} 为单位向量,故有最佳查询:
\vec{q}_{opt}=\frac{1}{|C_r|}\sum_{\vec{d_j}\in{C_r}}{\vec{d_j}} - \frac{1}{|C_{nr}|}\sum_{\vec{d_j}\in{C_{nr}}}{\vec{d_j}}
这就是说,最优的查询向量等于相关文档的质心向量和不相关文档的质心向量的差,相当于是最接近相关文档,同时最远离不相关文档。

查询优化 | Query Modification

然而,即使有了上述最佳查询的表示方法,也无法直接求出来——因为检索本来的目的就是要找相关文档,而所有的相关文档事先是未知的。

Rocchio 提出在真实的检索情景中,我们可以利用已检索到的部分相关文档 D_r 和不相关文档 D_{nr},逐步修改原始的查询向量:
\vec{q}_m=\alpha\vec{q}_0 + \beta \frac{1}{|D_r|}\sum_{\vec{d_j}\in{D_r}}{\vec{d_j}} - \gamma\frac{1}{|D_{nr}|}\sum_{\vec{d_j}\in{D_{nr}}}{\vec{d_j}}
修改后的新查询从 \vec{q}_{0} 开始,向着相关文档的质心向量靠近了一段距离,而同时又与不相关文档的质心向量远离了一段距离——更加接近最优查询了。通过不断迭代,可以观察到查询效果确实有显著的提升。

查询反馈 | Relevance Feedback

通常情况下,反馈可分为以下两种:

  • 真实相关反馈:搜索引擎返回结果,用户提供反馈,搜索引擎根据反馈返回更好的结果。
  • 假设相关反馈:搜索引擎得到结果但不返回,根据结果自动优化 query,根据优化后的 query 返回「更好」的结果。

点击流数据 | Clickthrough Data

在真实相关反馈中,用户往往不愿意主动提供反馈信息(如标记相关或不相关文档),于是搜索引擎收集用户的间接反馈

而点击流数据则是这个领域最常用的一种反馈,可以在不干扰用户的情况下大量收集(此外还有一种补充用户行为信息的方法是眼动追踪)。

同一搜索结果中,用户进行点击浏览的结果被认为是相关的,或者说是「用户更偏好的」。如果用户查看了每个搜索引擎下面显示的文本短摘要后,决定跳过它并点击在排序中低于它的结果,就可以说用户相对更喜欢这个被点击的结果。

局部上下文分析 | Local Context Analysis

在假设相关反馈中,还可分为两种基本方法:

  • 局部分析(Local Analysis):从结果集合排名靠前的文档中产生反馈信息。
  • 全局分析(Global Analysis):从外部资源产生反馈信息,如同义词典(用于扩充查询)。

同义词典构建的代价十分昂贵,通常考虑用上下文和短语结构进行分析获得。而如果把这个思想用于局部分析,则诞生了 LCA 方法:一种聚焦于从反馈结果中筛选出与 query 相关性更高的 term,再用这些 term 扩展 query 重新检索的方法。

大致的步骤如下:

  1. 找到与这个 query 检索结果排名靠前的文章,使用一个固定长度(如 300 个词)的滑动窗口,来划分段落。引入段落是为了最小化冗长文档中的无关内容。
  2. 对段落进行检索排序,找到结果排名靠前的段落,对其使用语义分析和文本分词、词性标注技术找到名词项。名词在搜索引擎中往往被视为最重要的词。
  3. 统计名词项的出现次数,以及出现时离 query 的距离,通过特殊的加权方法来选择出候选 term。
  4. 将排名靠前的几个候选 term 加入到原始 query 中,进行新的查询。

排序学习 | Learning to Rank

相关反馈信息,包括前述文章中提到的相关度、重要度,其实只是 IR 中许多因子的冰山一角。实际中可能还有若干、数十个因子,这些因子最后会加权构成一个统一的指标函数

这个指标函数的输入是数据集(包括查询和文档集),输出是最终检索出的 ranklist。如何构造这样一个复杂的函数呢?

对于构造函数,人们最原始的想法通常是拟合所有 <query, ranklist> 点,但是这显然不适用于这种规模的问题。

机器学习的使用 | Machine learning for IR ranking

过去的 IR 系统较少用到机器学习,是因为缺乏训练集,特别是在真实世界中得到的数据集(而不是学术论文中),因为很难收集到用户检索的真实需求和对返回文档的相关反馈。

此外,过去的 IR 系统往往只使用少量的特征(feature),如词项频率、逆文档频率、term 出现的位置等。

少量的特征带来的是构造函数的便利。而随着现在网络的发展、算力的提升,大家开始关注数据集中大量的特征,并尝试用机器学习使用这些特征。

定义 loss function l(r_a,r_b),其中 r_a 是基于用户反馈得到的「标准排名」,r_b 是通过拟合的排序函数 F 计算出的「模拟排名」。我们要寻找到一个 F 使得损失最小——这就是机器学习的目标。

Example - title & body

下面以一个例子说明机器学习在 IR 中的应用。考虑查询中的 term 出现在文档的 title (标题) 或 body (正文) 中对返回结果排名的影响。

为此,我们需要对 term 出现的四种情况分别打分:
\operatorname{score}\left(d, q\right)=g {s_{t}}\left(d, q\right)+(1-g) s_{b}\left(d, q\right)
其中 s_ts_b 函数是关于 term 是否存在于文档对应位置的布尔函数(0/1),故 score 的结果只有 0, g, 1-g, 1 四种。我们要求的就是权重 g

在第 j 个查询中,我们对检索结果中的文档 i 定义如下损失函数
\varepsilon\left(g, \Phi_{j}\right)=\left(r\left(d_{i}, q_{j}\right)-\operatorname{score}\left(d_{i}, q_{j}\right)\right)^{2}
这里简单的定义 r 函数是关于二者是否相关的布尔函数(0/1),使用平方误差是为了让结果更连续。

在训练集中,我们标注出所有结果的 s_ts_br 函数的取值——八种情况,并分别统计其次数。例如,n_{01r} 表示 s_t=0,s_b=1 且相关的例子,n_{01n} 表示 s_t=0,s_b=1 且不相关的例子,其平方误差之和为:
[1-(1-g)]^{2} n_{01 r}+[0-(1-g)]^{2} n_{01 n}
同样的,我们对其他三组也进行计算后相加,化简可得:
\left(n_{01 r}+n_{10 n}\right) g^{2}+\left(n_{10 r}+n_{01 n}\right)(1-g)^{2}+n_{00 r}+n_{11 n}
要求这个函数的极小值,只需用对关于 g 的导数求零点即可。如果考虑更多的变量,则需要求偏导,再用拉格朗日常数法等数值分析方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容