【深度学习】排序学习(Learning to rank)
L2R将机器学习的技术很好的应用到了排序中。
https://jimmy-walker.gitbooks.io/rank/L2R.html
github https://github.com/jiangnanboy/learning_to_rank
lightgbm的训练速度非常快,快的起飞。
先看看L2R之前,业界是怎么做排序的。下面两个:
1.1 相关度排序模型(Relevance Ranking Model)
根据查询和文档之间的相似度来对文档进行排序。
常用的模型包括:布尔模型(Boolean Model),向量空间模型(Vector Space Model),隐语义分析(Latent Semantic Analysis),BM25,LMIR模型等等。
1.2 重要性排序模型(Importance Ranking Model)
根据网页(亦即文档)之间的图结构来判断文档的权威程度,
典型的权威网站包括Google,Yahoo!等。常用的模型包括PageRank,HITS,HillTop,TrustRank等等。
为什么需要使用机器学习的方法来进行排序
对于传统的排序模型,单个模型往往只能考虑某一个方面(相关度或者重要性),
用单个模型达不到要求。我们就想说,组合多种排序模型来进行排序,但是,如何组合多个排序模型来形成一个新的排序模型,是一个很大的问题。
使用机器学习的方法,我们可以把各个现有排序模型的输出作为特征,然后训练一个新的模型,并自动学得这个新的模型的参数,从而很方便的可以组合多个现有的排序模型来生成新的排序模型。
L2R的特征即然是使用机器学习的方法,那么就要有feature,
feature可以分为3大类:
Doc本身的特征:Pagerank、内容丰富度、是否是spam、质量值、CTR等
Query-Doc的特征:Query-Doc的相关性、Query在文档中出现的次数,査询词的Proximity值(即在文档中多大的窗口内可以出现所有査询词)等。当然,有些Query-Doc的特征不是显式的,而是有Semantic的,即虽然Query在文档中没有出现,但是语义上是有关系的。
Query的特征:Query 在所有Query 中的出现次数、比率等
4. L2R训练数据的获取
L2R的训练数据可以有三种形式:对于每个查询,各个文档的绝对相关值(非常相关,比较相关,不相关,等等);对于每个查询,两两文档之间的相对相关值(文档1比文档2相关,文档4比文档3相关,等等);对于每个查询,所有文档的按相关度排序的列表(文档1>文档2>文档3)。这三种形式的训练数据之间可以相互转换。
训练数据的获取有两种主要方法:人工标注[3]和从日志文件中挖掘[4]。
人工标注:首先从搜索引擎的搜索记录中随机抽取一些查询,将这些查询提交给多个不同的搜索引擎,然后选取各个搜索引擎返回结果的前K个,最后由专业人员来对这些文档按照和查询的相关度进行标注。
5. L2R模型训练
L2R是一个有监督学习过程。
对与每个给定的查询-文档对(query document pair),抽取相应的特征(既包括查询和文档之间的各种相关度,也包括文档本身的特征以及重要性等),另外通过或者人工标注或者从日志中挖掘的方法来得到给定查询下文档集合的真实序列。然后我们使用L2R的各种算法来学到一个排序模型,使其输出的文档序列和真实序列尽可能相似。
6. L2R算法分类和简介
L2R算法主要包括三种类别:PointWise,PairWise,ListWise。
最直观的方案是Pointwise算法,例如对于广告CTR预估,在训练阶段需要标注某个文档的点击概率,这相对来说容易。Pairwise算法一个重要分支是Lambda系列,包括LambdaRank、LambdaMart等,它的核心思想是:很多时候我们很难直接计算损失函数的值,但却很容易计算损失函数梯度(Gradient)。这意味着我们很难计算整个列表的nDCG和ERR等指标,但却很容易知道某个文档应该排的更靠前还是靠后。Listwise算法往往效果最好,但是如何为每个请求对所有文档进行标注是一个巨大的挑战。
7. L2R效果评价
L2R是用机器学习的方法来进行排序,所以评价L2R效果的指标就是评价排序的指标,主要包括一下几种:
1) WTA(Winners take all) 对于给定的查询q,如果模型返回的结果列表中,第一个文档是相关的,则WTA(q)=1,否则为0.
2) MRR(Mean Reciprocal Rank) 对于给定查询q,如果第一个相关的文档的位置是R(q),则MRR(q)=1/R(q)。
3) MAP(Mean Average Precision) 对于每个真实相关的文档d,考虑其在模型排序结果中的位置P(d),统计该位置之前的文档集合的分类准确率,取所有这些准确率的平均值。
4) NDCG(Normalized Discounted Cumulative Gain归一化折损累计增益) 是一种综合考虑模型排序结果和真实序列之间的关系的一种指标,也是最常用的衡量排序结果的指标,
DCG的两个思想:
1、让排名越靠前的结果越能影响最后的结果;
2、有高关联度的结果出现在更靠前的位置的时候,指标会越高;
。
5) RC(Rank Correlation) 使用相关度来衡量排序结果和真实序列之间的相似度,常用的指标是Kendall’s Tau。
在线排序架构
索引阶段的工作是由索引器(Indexer)读取文档(Documents)构建索引(Index)。
查询阶段读取索引做为召回,然后交给Topn Retriever进行粗排,在粗排后的结果里面将前n个文档传给Reranker进行精排。这样一个召回、粗排、精排的架构最初是由Google提出来的,也被称为“Two-Phase Scheme”。
索引部分属于离线阶段,这里重点讲述在线排序阶段,即查询阶段。
综上所述,召回总体而言分成四大类:
-
关键词召回,我们采用Elasticsearch解决方案。
-
距离召回,我们采用K-D tree的解决方案。
-
粗排召回。
-
推荐类召回。
进展
在工业界内,推荐算法有更多的应用,例如微软提出了DSSM(deep structured semantic models),一种Pair Wise Ranking方法。Google提出了神经网络(a wide and deep network)来做推荐和排序。近期,大家可能更多使用RNN/CNN或者Attention的技术来做推荐。因为用户在某一个平台上,会存在一个天然的行为序列,这个性质使得RNN/CNN或者Attention具有更佳的可用性。