在使用搜索引擎的过程中,对于某一Query(或关键字),搜索引擎会找出许多与Query相关的URL,然后根据每个URL的特征向量对该URL与主题的相关性进行打分并决定最终URL的排序,其流程如下:
排序的好坏完全取决于模型的输出,而模型又由其参数决定,因而问题转换成了如何利用带label的训练数据去获得最优的模型参数w。Ranknet提供了一种基于Pairwise的训练方法,它最早由微软研究院的Chris Burges等人在2005年ICML上的一篇论文Learning to Rank Using Gradient Descent中提出,并被应用在微软的搜索引擎Bing当中。
相关性概率
Cost function是RankNet算法的核心,在介绍Cost function前,我们先定义两个概率:预测相关性概率、真实相关性概率。
预测相关性概率
对于任意一个URL对( Ui , Uj ),模型输出的score分别为 si 和 sj ,那么根据模型的预测, Ui 比 Uj 与Query更相关的概率为:Pij=P(Ui>Uj)=11+e−σ(si−sj)由于RankNet使用的模型一般为神经网络,根据经验sigmoid函数能提供一个比较好的概率评估。参数 σ 决定sigmoid函数的形状,对最终结果影响不大。
真实相关性概率
对于训练数据中的 Ui 和 Uj ,它们都包含有一个与Query相关性的真实label,比如 Ui 与Query的相关性label为good, Uj 与Query的相关性label为bad,那么显然 Ui 比 Uj 更相关。我们定义 p¯ij 为 Ui 比 Uj 更相关的真实概率,有p¯ij=12(1+Sij)如果 Ui 比 Uj 更相关,那么 Sij=1 ;如果 Ui 不如 Uj 相关,那么 Sij=−1 ;如果 Ui 、 Uj 与Query的相关程度相同,那么 Sij=0 。
代价函数
对于一个排序,RankNet从各个URL的相对关系来评价排序结果的好坏,排序的效果越好,那么有错误相对关系的pair就越少。所谓错误的相对关系即如果根据模型输出 Ui 排在 Uj 前面,但真实label为 Ui 的相关性小于 Uj ,那么就记一个错误pair,RankNet就是以错误的pair最少为优化目标。对于每一个pair,我们使用交叉熵来度量其预测代价,即:
化简