Learning to rank学习

 

 

Intro

LTR(Learning to rank)是一种监督学习(SupervisedLearning)的排序方法,已经被广泛应用到推荐与搜索等领域。传统的排序方法通过构造相关度函数,按照相关度进行排序。然而,影响相关度的因素很多,比如tf,idf等。传统的排序方法,很难融合多种因数,比如向量空间模型以tf*idf作为权重构建相关度函数,就很难利用其他信息了,并且如果模型中参数比较多,也会使得调参非常困难,而且很可能会出现过拟合现象。LTR采用机器学习很好地解决了这一问题。机器学习方法很容易融合多种特征,而且有成熟深厚的理论基础,并有一套成熟理论解决稀疏、过拟合等问题。

LTR框架如图所示:

Learning to rank学习_第1张图片

学习过程通过在训练集上选定LTR方法,确定损失函数,以最小化损失函数为目标进行优化即可得到排序模型的相关参数。

预测过程将样本输入学习得到的排序模型中,即可得到结果的相关得分,利用该得分进行排序即可得到待预测结果的最终顺序。

LTR一般说来有三类方法:单文档方法(Pointwise)文档对方法(Pairwise)文档列表方法(Listwise)

问题阐述:

用户 i 的查询query为 q_{i} ,候选文档集docs为 c_{i,1}, c_{i,2}, .............c_{i,N}, ,正确的结果排序假设为  c_{i,1}, c_{i,2}, .............c_{i,K}。候选文档集要一般大于最终返回的集合,因此 N > K 。例如,给出一个提问句子从候选句子(有10个)中选出最佳的5个的答案,返回的列表也要按优劣排序,优的在前面。

1 Pointwise

pointwise把排序问题当成一个二分类问题,训练的样本被组织成为一个三元组 (q_{i}, c_{i,j}, y_{i,j}) 。 y_{i,j} 为一个二进制值,表明 c_{i,j} 是否为 q_{i} 正确回答。我们就可以训练一个二分类网络: h_{\theta}(q_{i},c_{i,j}) \rightarrow y_{i,j} ,其中 0 \leq y_{i,j} \leq 1 。训练的目标就为最小化数据集中所有问题和候选句子对的交叉熵。

在预测阶段,二分类模型 h_{\theta } 被用来排序每一个候选句子,选取top-k的句子作为正确回答。

Pointwise常用方法有McRank等。

缺陷:

1、ranking 追求的是排序结果,并不要求精确打分,只要有相对打分即可。
2、pointwise 类方法并没有考虑同一个 query 对应的 docs 间的内部依赖性。一方面,导致输入空间内的样本不是 IID 的,违反了 ML 的基本假设,另一方面,没有充分利用这种样本间的结构性。其次,当不同 query 对应不同数量的 docs 时,整体 loss 将会被对应 docs 数量大的 query 组所支配,前面说过应该每组 query 都是等价的。
3、损失函数也没有 model 到预测排序中的位置信息。因此,损失函数可能无意的过多强调那些不重要的 docs,即那些排序在后面对用户体验影响小的 doc。
4、query间doc的不平衡,如query1对应500个文档,query2对应10个文档。

 

2 Pairwise

在pairwise方法中排序模型 h_{\theta } 让正确的回答的得分明显高于错误的候选回答。给一个提问,pairwise给定一对候选回答学习并预测哪一个句子才是提问的最佳回答。训练的样例为  ,其中 q_{i} 为提问, 为正确的回答,  为候选答案中一个错误的回答。

损失函数为合页损失函数:

其中 m 为边界阀值。如果  损失函数 L 大于0,当满足这个不等式的时候,意味着模型把非正确的回答排在正确答案的上面;如果 L 等于0,模型把正确的回答排在非正确的回答之上。用另一种方式解释就是,如果正确的答案的得分比错误句子的得分之差大于 m (  ),总之合页损失函数的目的就是促使正确答案的得分比错误答案的得分大于 m 。和pairwise类似,在预测阶段得分最高的候选答案被当作正确的答案。

Pairwise有很多的实现,比如Ranking SVM,RankNet,Frank,RankBoost等。

缺陷:

  • doc pair 的数量将是 doc 数量的二次,从而 pointwise 方法存在的 query 间 doc 数量的不平衡性将在 pairwise 类方法中进一步放大。
  • pairwise 方法相对 pointwise 方法对噪声标注更敏感,即一个错误标注会引起多个 doc pair 标注错误。
  • pairwise 方法仅考虑了 doc pair 的相对位置,损失函数还是没有 model 到预测排序中的位置信息。
  • pairwise 方法也没有考虑同一个 query 对应的 doc pair 间的内部依赖性,即输入空间内的样本并不是 IID 的,违反了 ML 的基本假设,并且也没有充分利用这种样本间的结构性。

 

3 Listwise

pariwise和pointwise忽视了一个事实就是答案选择就是从一系列候选句子中的预测问题。在listwise中单一训练样本就:query和它的所有候选回答句子。在训练过程中给定提问数据 q_{i} 和它的一系列候选句子 C(c_{i1}, c_{i2}, .............c_{im}) 和标签 Y(y_{i1}, y_{i2}, .............y_{im}) ,归一化的得分向量 S 通过如下公式计算:

Learning to rank学习_第2张图片

标签的归一化方法为:

Learning to rank学习_第3张图片

训练的目标可以为最小化 S 和 Y 的KL散度。

Listwise常用方法有AdaRank,SoftRank,LambdaMART等。

Listwise方法相比于pariwise和pointwise往往更加直接,它专注于自己的目标和任务,直接对文档排序结果进行优化,因此往往效果也是最好的。

 

References

Learning to Rank: pointwise 、 pairwise 、 listwise

你可能感兴趣的:(NLP)