1. 4-【理论】RankNet:排序学习算法的“在天之灵”
在搜索排序的项目中,系统性梳理推荐/搜索排序算法脉络,对项目实施与演进至关重要。一般而言,推荐/搜索排序系统包含召回、排序与干预三个阶段。排序阶段分为粗排与精排,具体业务不同,策略各异。网络上已有多样丰富的资料,这里重点介绍排序任务的三种算法设计方法:PointWise、PairWise与ListWise。
PointWise方法关注于每个查询下的单个文档绝对相关度,不考虑文档间关系,最符合标准机器学习结构。PairWise方法则关注文档间的相对相关度,即在给定查询下,文档之间的相对排序。ListWise方法则考虑整个搜索结果列表的排序,旨在优化文档列表整体。
在算法逻辑框架中,PointWise方法最为基础,其直接应用机器学习标准;PairWise方法则专为排序场景设计,核心在于最小化文档对的排序误差,体现了数据科学家的深入思考与创新;ListWise方法在PairWise基础上进行改进优化。LambdaMART作为ListWise模型的代表,曾赢得2010 Yahoo! Learning To Rank Challenge的冠军。
RankNet作为LambdaMART的基础模型,基于PairWise思想,被誉为排序学习算法的“在天之灵”。其经典性与创新性使其成为研究领域不可或缺的里程碑。尽管深度神经网络在2016年后回潮,PointWise方法再次受到重视,但轻量级的LambdaMART在特定场景下仍具有高性价比。
美团在搜索排序应用的演进过程中,经历了从逻辑回归(LR)到LambdaMART再到各种深度神经网络结构的探索,最终从上一版升级至LambdaMART,实现了业务应用效果的质的飞跃。
理解LambdaMART的关键在于理解RankNet的核心思想:最小化文档对的排序误差。这一步骤是整个算法设计的“神来之笔”,与标准机器学习数据结构相比,RankNet在数据定义、假设函数、目标函数与优化算法设计上独具匠心。
数据结构定义、假设函数设计与目标函数明确,为算法提供坚实基础。优化算法通过分析文档对的偏微分,揭示了排序误差的最小化过程。在Python实现中,尽管没有现成的RankNet接口,通过手写代码或利用XGBoost等工具,可以实现LambdaMART框架。
排序任务中,DMatrix数据结构的分组信息通过set_group()方法设置,以适应排序任务需求。LambdaMART的梯度向量在优化过程中融入评估指标信息,有效指导算法优化,提升排序效果。