行业前沿:TF-Ranking:最先进的排序学习TensorFlow库
排序,是以将整个列表效用最大化的方式来排序项目的过程,适用于广泛的领域,从搜索引擎、推荐系统到机器翻译、对话系统甚至计算生物学等等。
在这些应用程序中,研究人员经常使用一组被称为排序学习的监督机器学习技术。在许多情况下,这些排序学习的技术适用于非常大的数据集。其中,TensorFlow的可扩展性也许是一个优势,但是目前还没有现成的技术支持将排序学习技术应用于TensorFlow中。据不完全统计,目前还没有其他的开源库专门应用大规模的排序学习技术。
为此,本文推荐TF-Ranking——一个可扩展的用于排序学习的TensorFlow库。TF-Ranking提供了一个统一的框架,其中包括一套最先进的排序学习算法,并支持成对或列表损失函数、多项目评分、排名度量优化和无偏见的排序学习。
TF-Ranking快速且易于使用,并能创建高质量的排序模型。统一框架使ML研究人员、从业者和爱好者能够在单个库中评估和选择一系列不同的排序模型。
此外,一个实用开源库的关键不仅在于能够提供合理的默认值,还应授权用户能够开发自己的自定义模型。因此,TF-Ranking提供灵活的API,用户可以在其中定义和插入自己的自定义损失函数,评分函数和指标。
现有的算法和度量支持
排序学习算法的目的是使项目列表上定义的损失函数最小化,从而优化所有给定应用程序的列表排序的效用。TF-Ranking支持广泛的标准点态,配对和列表损失函数。
这确保了使用TF-Ranking库的研究人员能够复制和扩展以前发布的基线,并且从业者可以为他们的应用做出最明智的选择。
此外,TF-Ranking可以通过嵌入和扩展到数亿个训练实例来处理稀疏特征(如原始文本)。
因此,任何对构建真实世界数据密集型排名系统(如网络搜索或新闻推荐)感兴趣的人都可以将TF-Ranking用为一个强大且可扩展的解决方案。
经验评估是所有机器学习或信息检索研究的重要组成部分。为了确保与先前工作的兼容性,TF-Ranking支持许多常用的排名指标,包括即平均到数排名Mean Reciprocal Rank(MRR)和 标准化贴现累积收益NormalizedDiscounted Cumulative Gain (NDCG)。TF-Ranking也可以在TensorBoard(一个开源TensorFlow可视化仪表板)的训练时很轻松地可视化这些指标。
根据TensorBoard中展示的训练步骤(X轴)的NDCG度量(Y轴)的示例所显示,训练期间指标的总体进度。可以直接在仪表板上比较不同的方法。也可以根据指标选择最佳模型。
多项评分
TF-Ranking支持一种全新的评分机制,其中多个项目(如网页)可以联合评分,这是对传统评分模式的扩展,其中单个项目被独立评分。
多项目评分的一个挑战是难以进行判断,其中项目必须在子组中进行分组和评分。然后,每个项目的分数进行累计,并用于排序。
为了使这些复杂的项目累积分数对用户透明,TF-Ranking提供了一个List-In-List-Out(LILO)API以将所有这些逻辑包装在导出的TF模型中。
TF-Ranking库支持多项目评分体系结构,这是对传统单项评分模式的扩展。
多项目评分在公共LETORbenchmark上与最先进的排序学习模型(例如RankNet,MART和LambdaMART)相比更具有竞争力。
排序指标优化
排序学习中一个重要的研究挑战是排序指标的直接优化(例如前面提到的NDCG和MRR)。这些指标虽然能够比标准分类指标(如曲线下面积(AUC))更好地衡量排名系统的性能,但却具有不连续或不稳定的缺点。因此,这些指标的标准随机梯度下降优化是存在着一些问题的。
在最近的工作中,Google AI 提出了一种新方法,即LambdaLoss,它为排序指标优化提供了一个原则性的概率框架。
在此框架中,可以通过期望最大化程序来设计和优化指标驱动的损失函数。TF-Ranking库的最新进展是集成了直接度量优化框架,并提供了LambdaLoss的实现。这将鼓励和推进我们在排序指标优化这样的重要领域进行更深入研究。
无偏见的排序学习
先前的研究表明,给定排序的项目列表,用户更有可能与前几个结果进行交互,无论其相关性如何。这一观察结果激发了研究人员对无偏见的排序学习的兴趣,并且基于训练实例重新加权,开发了无偏见的评估和几种无偏见的学习算法。
在TF-Ranking库中,实施指标来支持无偏估计,并且通过本机支持重新加权来克服用户交互数据集中的固有偏差,弥补无偏见学习的损失。
TF-Ranking入门
TF-Ranking实现了TensorFlow Estimator接口,通过封装训练、评估、预测和导出服务,大大简化了机器学习的编程难度。TF-Ranking与丰富的TensorFlow生态系统完美集成。
如上所述,你可以使用Tensorboard来可视化排序指标,如NDCG和MRR等,以及使用这些指标选择最佳模型检查点。一旦你的模型准备就绪,使用TensorFlow服务很容易将其部署到生产中。