原创:机器学习排序深入解读

原创:机器学习排序深入解读

上一篇文章主要介绍了查询与文档内容相似性的打分以及基于概率模型的BM25模型和如何修改lucene的排序源代码。这篇文章将重点讲述机器学习排序,其中的重头戏是关于ListNet算法的英文原版学术论文的解读以及RankLib源码包的学习。

                     机器学习排序:从 Pairwise方法到Listwise方法

Zhe Cao*                                                                                                              

Tao Qin*

清华大学,北京,10084,中国

Tie-Yan Liu

微软亚洲研究院,海淀区知春路49号,10080,中国北京

Ming-Feng Tsai*

国立台湾大学,中华台北 106

Hang Li

微软亚洲研究院,海淀区知春路49号,10080,中国北京

翻译:XueQiang  Tong   http://www.cnblogs.com/txq157   txq157@163.com

说明:在翻译过程中,我会尽量尊重原著,力求做到简洁易懂,后面会加入自己的一些理解。

摘要

本文主要阐述对排序对象构建机器学习模型(评分函数)。机器学习排序在文档检索、协同过滤以及其他许多领域都有广泛且重要的应用。目前一种基于把”文档对”作为排序对象的机器学习排序方法已经被提出来,在学术界我们把它称为Pairwise方法。尽管Pairwise有所改进,然而它忽略了一个非常重要的事实:我们的排序预测任务是基于所有的排序对象,这些对象的排列顺序要远远多于两个对象的排列。本文论述的机器学习排序方法,是把对象列表(检索出的全部文档)作为排序对象,并且为这个方法提出了一种概率模型。具体来说,我们引入了两个概率模型作为Listwise方法的损失函数,分别是全排列概率模型和top-one概率模型。我们会使用神经网络构建评分函数和梯度下降作为损失函数的优化手段。在信息检索中的经验显示,Listwise比Pairwise表现得更加出色。

1.引言

很多应用的核心事务都离不开排序,比如全文检索,协同过滤,专家搜索,反网络垃圾邮件,情感分析,产品评级等等。不失一般性,本文主要以文档检索为例讨论机器学习排序。当应用于全文检索时,机器学习排序按照如下方式工作:假设现在有一些文档集合,在检索的时候,给定一个查询,然后评分函数给每一个返回的文档打分,按降序排列。每个文档的得分代表了与这个查询的相对相关程度。在机器学习排序的训练中,往往先提供多个查询,其中每个查询都和由这个查询得到的评分文档集合相关联,得到文档后用这些训练数据创建出评分函数,用以精确地预测文档集的得分。

由于它的重要性,近年来机器学习排序在机器学习社区中引起了广泛的关注。在业内被称之为Pairwise的若干方法已经成功用于全文检索。这个方法把一对儿有排列顺序的文档作为训练学习的实例,并且用分类算法来处理。特别地,在训练中,在我们收集到所有文档对儿的全排列之后,对每个文档对儿标识一个代表这两个文档相关程度的标签(-1 or 1),然后我们用这些数据训练出分类模型,再用这个分类模型排序。SVM、Boosting还有神经网络这些分类模型的应用直接导致RankingSVM(Herbrich et al.,1999),RankBoost(Freund et al.,1998),RankNet(Burges et al.,2005)算法的产生。

使用Pairwise方法有很多优势。首先,在分类算法中很多成型的方法可以直接应用于排序中。其次,在特定情况下可以非常容易地获取到文档对儿(Joachims,2002)。

然而,这个方法存在很多缺点。首先,作为训练对象的文档对儿,他所训练出来

的模型的最小化损失函数,是用在分类中而非排序中。其次,文档对儿数量庞大导致计算复杂度太高。第三,文档对儿属于独立同分布(iid)的假设过于(严格)strong,与实际情况相差甚远。最后,不同的查询产生的文档对儿数量变化太大,换句话说文档对儿的数量对查询比较敏感,由于这个差异,将直接导致训练模型更加偏向于拥有更多文档对儿的查询(拥有多数量文档对儿的查询对建模贡献更大)。

在本文中,我们提出Listwise的方法,在这个方法中,我们把文档集作为训练对象。接下来的主要问题是如何定义Listwise的损失函数。我们提出一个概率模型用于listwise损失函数的参数估计。我们会同时把排序函数对文档的打分(此时参数是未知的)和人工对文档显示的或者隐士的打分变换成概率分布,这样我们就可以把两者(特指概率分布)间的距离(差异)作为损失函数。

我们定义了两个概率模型,分别是组合(全排列)概率模型和top one概率。ListNet算法是这样一种算法,它使用listwise的损失函数,优化损失函数前先构建神经网络模型,然后用梯度下降估计参数。事实表明,ListNet算法明显好于Ranking SVM, RankBoost还有 RankNet。

本文主要包括以下4部分:①listwise算法的概述;②基于概率模型的损失函数的转换;③listwise算法的发展;④关于这个算法的实验验证。

2.Related Work

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佟学强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值