【推荐】RankNet

依次介绍RankNet,LambdaRank,LambdaMart。

1.引言:

RankNet 是 2005 年微软提出的一种 Pairwise 的 Learning to Rank 算法,它从概率的角度来解决排序问题。RankNet 的核心是提出了一种概率损失函数来学习 Ranking Function,并应用 Ranking Function 对文档进行排序。这里的 Ranking Function 可以是任意对参数可微的模型,也就是说,该概率损失函数并不依赖于特定的机器学习模型,在论文中,RankNet 是基于神经网络实现的。除此之外,GDBT、LR、MF 等模型也可以应用于该框架。

2.原理

2.1预测相关性概率

先获取文档i比文档j靠前的概率,这个概率使用sigmod函数获取。RankNet 证明了如果知道一个待排序文档的排列中相邻两个文档之间的排序概率,则通过推导可以算出每两个文档之间的排序概率。因此对于一个待排序文档序列,只需计算相邻文档之间的排序概率,不需要计算所有 pair,减少计算量。

2.2真实相关性概率

2.3rankNet的损失函数

对于一个排序,RankNet 从各个 doc 的相对关系来评价排序结果的好坏,排序的效果越好,那么有错误相对关系的 pair 就越少。所谓错误的相对关系即如果根据模型输出 𝑈𝑖 排在 𝑈𝑗 前面,但真实 label 为 𝑈𝑖 的相关性小于 𝑈𝑗,那么就记一个错误 pair,RankNet 本质上就是以错误的 pair 最少为优化目标,也就是说 RankNet 的目的是优化逆序对数。而在抽象成损失函数时,RankNet 实际上是引入了概率的思想:不是直接判断 𝑈𝑖 排在 𝑈𝑗 前面,而是说 𝑈𝑖 以一定的概率 P 排在 𝑈𝑗 前面,即是以预测概率与真实概率的差距最小作为优化目标。最后,RankNet 使用交叉熵(Cross Entropy)作为损失函数

该损失函数有以下几个特点:

1) 当两个相关性不同的文档算出来的模型分数相同时,即 𝑠𝑖=𝑠𝑗,此时的损失函数的值为 log2,依然大于 0,仍会对这对 pair 做惩罚,使他们的排序位置区分开。

2) 损失函数是一个类线性函数,可以有效减少异常样本数据对模型的影响,因此具有鲁棒性。

Ranknet 最终目标是训练出一个打分函数 𝑠=𝑓(𝑥;𝑤),使得所有 pair 的排序概率估计的损失最小。

这里解释下,为什么Ranknet是量程申请网络。观察上面的f(x),中间的括号是一层网络,外面的括号是一层网络。我们可以将每一层网络看做:输入x*权值矩阵w,深度网络,其实可以理解为在每一层输出的基础上,继续乘以权值矩阵,一层一层下去,多层的情况下,称之为深层网络。

2.4参数更新

RankNet 采用神经网络模型优化损失函数,也就是后向传播过程,采用梯度下降法求解并更新参数:

𝑤𝑘=𝑤𝑘−𝜂∂𝐶∂𝑤𝑘

 

其中,𝜂 是学习率,论文中实验时选取的范围是 1e-3 到 1e-5,因为 RankNet 是一种方法框架,因此这里的 𝑤𝑘 可以是 NN、LR、GBDT 等算法的权重。

3.RankNet 小结

排序问题的评价指标一般有 NDCG、ERR、MAP、MRR 等,这些指标的特点是不平滑、不连续,无法求梯度,因此无法直接用梯度下降法求解。RankNet以错误pairpairpair 最少为优化目标的算法。RankNet 的创新点在于没有直接对这些指标进行优化,而是间接把优化目标转换为可以求梯度的基于概率的交叉熵损失函数进行求解。因此任何用梯度下降法优化目标函数的模型都可以采用该方法,RankNet 采用的是神经网络模型,其他类似 boosting tree 等模型也可以使用该方法求解。

4.代码:

尚未整理完,待续ing。

 

参考文献:

1.https://lumingdong.cn/learning-to-rank-in-recommendation-system.html

2.代码:https://blog.csdn.net/mr_tyting/article/details/80580075

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值