分享

搜索引擎Rank算法

 lzqkean 2014-02-18
      Rank(排序)是搜索引擎最核心的一个模块。在搜索引擎中,对于用户输入一条查询query(关键词/句),搜索引擎将索引出一个相关的document(文档)列表,然后系统计算(query, document)之间的相关度,对列表中的文档进行排序,并返回给用户。传统的rank有很多经典的模型来完成这一任务,比如bool model(布尔模型),VSM(向量空间模型),language model(语言模型)等,这些方法都比较简单,任何一本IR的书籍都有介绍。

      然而,现在的搜索引擎使用的rank算法都比较复杂,一般都有上百维的feature(特征)组成,常用的一个公式(ListNet使用这种形式)如下:

y=w0+i=1..n wi×xi 

其中,xi为第i维的feature分值,wixi的权重,y为最后的总得分。

      既然是这样的话,如果有了每个feature,自然Xi就定好了,但是权重wi怎么调是个问题,不少搜索引擎还是根据经验来人工调整,如果参数较多的话,这也比较困难。于是,人们就很自然想到用机器学习来解决这个问题。机器学习最主要的一个功能说白了就是训练出模型,模型定了的话,就是训练模型的参数,即训练出一个和训练语料误差最小(loss function)的参数。总结一下,learning to rank就是使用机器学习的方法来解决rank的模型调优。

      这样的话,就有两个问题:1、选特征;2、将排序问题转化为适用于机器学习解决的分类或者回归问题。首先说下特征,就拿微软研究院公开的一个learning to rank datasets中提到的feature来看一下吧(http://research.microsoft.com/en-us/projects/mslr/feature.aspx末尾我也列出来了看到了吧,传统的rank模型只是其中的一个feature),每一个也比较好懂,如果你是内行,那应该可以略过;如果不是,那google一下,看些相应的paper就懂了。其实这些feature也是现在的搜索引擎最常用的,大家也在开发一些新的feature,比如现在社交网络中出现的或者分享的urlhot与否,也可以作为一个feature,等等。

      下面看第2个问题,将排序问题转化为适用于机器学习解决的分类或者回归问题,首先说下,排序问题的语料标注,每一个query对应与其相关的文档集合为:{d1, d2,, dn},然后每个文档di有一个与该query的标注结果label,一般分为五个类别{Perfect, Excellent, Good, Fair, Bad}。有如下三种方法:

1Pointwise

Pointwise方法的主要思想是将排序问题转化为多类分类问题或者回归问题,也就是将(querydi)的标注结果(一般五个类别)作为一个类别。这就有个假设,就是query独立的,即只要(query, document)的相关度相同,比如都为“perfect”,那么它们就被放在同一个类别里,即属于同一类的实例,而无论query是什么。这种方法比较简单,效果也不是很好。实现Pointwise方法有McRank

2Pairwise

Pairwise方法的主要思想是将排序问题转化为二元分类问题。对于同一个query,在它的所有相关文档集里,对任两个不同label的文档,都可以得到一个训练实例对,比如说是(d1d2)分别对应label53,那么对于这个训练实例对,给它赋予类别+15>3),反之则赋予类别-1。于是,按照这种方式,我们就得到了二元分类器训练所需的样本了。该方法不再是query独立的,因为它只对同一个query里的文档集生成训练样本的。但是它也有缺点,比如说query1对应的相关文档集大小为6query2的相关文档集大小为1000,那么从后者构造的训练样本数远远大于前者,从而使得分类器对相关文档集小的query所产生的训练实例区分不好。实现Pairwise方法有RankSVM,还有RankNetFRankRankBoost等。

3Listwise

Listwise方法的主要思想是直接对排序结果进行优化。对于一个给定的query,以及其对应的document list,现在已经得到了一个标注好的分数列表z(例如,每个文档的点击率等)。然后采用某种排序函数f给每个document打分,得到一个预测排序得分列表y,然后再采用某种损失函数计算lossListNet采用交叉熵),ListNet中使用得分的概率分布为:


然后将zyy是使用文章开始时候提到的那个线性函数表示)带入交叉熵公式(L(y,z)= -Py×logPz)中作为损失函数来用来学习参数。实现Listwise方法有ListNetRankCosineSVM-MAP等。

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多