RankNet
Last updated
Last updated
RankNet是通过一个神经网络模型来计算样本的得分,输入层和样本特征维数有关,输出层是一个节点,就是分值。以三层的神经网络模型举例,则计算分值函数定义为:
其中权值参数w和偏置参数b的上标表示节点所在的层,下标表示同一层中节点的编号;表示特征向量的第k个分量,这是是输入到输入层的。 RankNet是从概率角度解决排序的问题,证明了如果知道一个待排序文档的排列中相邻两个文档之间的排序概率,则通过推导可以算出每两个文档之间的排序概率。因此对于一个待排序文档序列,只需计算相邻文档之间的排序概率,不需要计算所有pair,减少计算量。
训练时以预测概率与真实概率的交叉熵作为损失函数
预测概率:
:文档模型计算出来的得分
真实概率:
交叉熵:
损失函数有以下几个特点:
当两个相关性不同的文档算出来的模型分数相同时,损失函数的值大于0,仍会对这对pair做惩罚,使他们的排序位置区分开
损失函数是一个类线性函数,可以有效减少异常样本数据对模型的影响,因此具有鲁棒性
文档与真实排序。取值{-1,0,1}。1表示应该在前面,-1表示应该在后面,0表示谁前谁后无所谓
预测概率函数就是逻辑回归的sigmoid函数,由于 影响的是sigmoid函数的形状,对最终结果影响不大,因此默认使用 进行简化。