1. Learning to Rank算法
下图为机器学习排序的原理图,机器学习排序系统由4个步骤组成——人工标注训练数据、文档特征抽取、学习分类函数、在实际搜索系统中采用机器学习模型。
2. Learning to Rank的三种类型
Learning to Rank主要包含pointwise方法、pairwise方法和listwise方法三种类型。
- pointwise方法:对于某一个query,它将每个doc分别判断与这个query的相关程度,由此将docs排序问题转化为了分类(比如相关、不相关)或回归问题(相关程度越大,回归函数的值越大)。
- pairwise方法:pairwise方法并不关心某一个doc与query相关程度的具体数值,而是将排序问题转化为任意两个不同的docs di和dj谁与当前的query更相关的相对顺序的排序问题。一般分为di比dj更相关、更不相关和相关程度相等三个类别,分别记为{+1, -1, 0},由此便又转化为了分类问题。
- listwise方法:将一个query对应的所有相关文档看做一个整体,作为单个训练样本。
3. GBRank
(1)定义
GBRank是一种pairwise的学习排序算法,它是基于回归来解决pair对的先后排序问题。在GBRank中使用的回归算法是GBT(Gradient Boosting Tree)
(2)算法原理
一般来说在搜索引擎里面,与用户搜索query相关度越高的网页越应该排在前面。现在query-doc的特征使用向量或者表示,假设现在有一个文档对,当排在前面时,我们使用来表示。
在实际用的时候可以将 当作doc_x的特征, 当作doc_y的特征。这样的话 可以理解为doc_x 的分数,
我们含顺序的pair对用如下集合表示(也就是真的排在真的前面):
现假设学习的排序函数为,我们希望当时,满足的样本的数量越多越好。现将的风险函数用如下的式子表示:
从可以知道每个pair对的cost为:
可以发现当:
- ,cost为0,也就是并不会对最终的风险函数的值产生影响
- ,cost为其差值的平方
上述风险函数直接优化比较困难,这里一个巧妙的解决方案是使用回归的方法,也就是让去拟合的预测值,让去拟合的目标值。
为了避免优化函数是一个常量函数,风险函数一般会增加一个平滑项():
因为当为常量函数时,先前的 就没有再优化的空间了,加入平滑项就变相地转为:如果希望,就得有,也就更为严格了,多了一个gap。对于计算和的负梯度为:
可以发现当pair对符合顺序时,上述的梯度均为0,对于这一类case就没有必要去优化了,但是对于另一类,如果不满足pair 他们对应的梯度为:
到了这里我们就知道所谓的训练样本就是对于 但是 的那些样本,并且使用的是回归的方法,GBRank为其巧妙地找到了 的 目标为 以及 的目标为 , 也就是在每次迭代的时候将会构建以下的训练集:
这里可以这样理解:
让 向着 逼近,让 向着
这是因为在有效的训练集中,即 但是 ,我们的目标是更新函数 使得经 算出来的 的分数更高,经 算出来的 的分数更低。所以 的目标就是更大一些的 , 的目标就是更小一些的 。
(3)算法步骤