本帖最后由 shaoheshaohe 于 2018-12-22 19:17 编辑
日前,谷歌 AI 发布了最新成果 TF-Ranking,它是一个专门针对排序学习(learning-to-rank)应用的可扩展 TensorFlow 库。TF-Ranking 快速且易用,并能创建高质量的排序模型,对构建 web 搜索或新闻推荐等基于真实世界数据的排序系统感兴趣的人,都可以将 TF-Ranking 作为强稳的、可扩展的解决方案。
排序是一种以最大化整个列表效用为目的,对项目列表进行排序的过程,适用于搜索引擎、推荐系统、机器翻译、对话系统,甚至还能用于计算生物学等众多领域。在诸如这些(以及其他诸多)应用中,研究人员经常使用一系列称作排序学习的有监督的机器学习技术。在许多情况下,这些排序学习技术会被应用于大规模数据集,在这一场景中,TensorFlow 的可伸缩性会成为一个优势。然而,目前 TensorFlow 还不能直接支持学习排序。并且,现在也还没有其他专门针对排序学习技术规模化应用的开源库。
TF-Ranking 快速且易用,并能创建高质量的排序模型。该统一框架让机器学习研究人员、实践者和爱好者能够在单个库中评估和选择一系列不同的排序模型。此外,谷歌 AI 团队坚信一个有用的开源库,它的关键不仅在于提供合理的默认值(sensible default),而且还在于能够授权用户开发自定义模型。为此,他们提供了灵活的 API,让用户可以在 API 中定义和插入自定义的损失函数、评分函数和指标。
现有算法和指标支持
排序学习算法的目标是最小化在项目列表上定义的损失函数,以优化任意给定请求的排序。TF-Ranking 支持在此前工作(https://en.wikipedia.org/wiki/Learning_to_rank#Approaches)中所描述的各类标准的 pointwise,pairwise 和 listwise 损失函数。这确保了使用 TF-Ranking 库的研究人员能够重现和扩展先前的 baseline,并且他们的请求可以得到最明智的选择。此外,TF-Ranking 还可以通过嵌入来处理稀疏特征(如原始文本)以及扩展到数亿个训练实例。因此,任何对构建 web 搜索或新闻推荐等基于真实世界数据的排序系统感兴趣的人,都可以将 TF-Ranking 作为强稳的、可扩展的解决方案。
TensorBoard 上显示的基于训练步骤(X 轴)的 NDCG 指标 (Y 轴)示例,它表示了训练期间指标的总体进度。不同的方法可直接在仪表板上进行比较,并基于指标选出最佳模型。
多条目评分
TF-Ranking 支持一种新的评分机制,在新的评分机制中可以对多个条目进行联合评分,这是对只能对单个条目进行独立评分的传统评分机制的扩展。多条目评分面临的一个挑战是难以推断哪些条目必须进行分组并在子组中评分。然后,每个条目累积下来的分数将被用于排序。TF-Ranking 提供了一个 List-In-List-Out(LILO)API,来将所有这些逻辑放入导出的 TF 模型中。
TF-Ranking 库支持扩展自传统单条目评分的多条目评分架构。
排序评价指标优化
排序学习所面临的一个重要研究挑战是排序评价指标的优化(例如前面所提到的 NDCG 和 MRR)。虽然与 Area Under the Curve(AUC)之类的标准分类评价指标相比,这些评价指标能更好地衡量排序系统的性能,但可惜它们要么不连续,要么平滑。因此,这些评价指标的标准随机梯度下降优化存在困难。
在最近的一项工作(https://ai.google/research/pubs/pub47258)中,谷歌 AI 提出了一种新的方法——LambdaLoss,它为排序评价指标优化提供了一个统一的概率框架。在这个框架中,可以通过期望最大化的过程来设计和优化由评价指标驱动的损失函数。TF-Ranking 库集成了评价指标优化的最新成果,并提供了 LambdaLoss 的实现。谷歌 AI 表示,TF-Ranking 未来有望鼓舞和推动排序评价指标优化这一重要领域的更深入的研究进展。
无偏见排序学习
开启 TF-Ranking 的使用
TF-Ranking 实现了 TensorFlow Estimator 接口,它通过封装训练、评估、预测和导出服务,可以大大简化机器学习编程。 TF-Ranking 完美地集成了丰富的 TensorFlow 生态系统。如上所述,你可以使用 Tensorboard 将 NDCG 和 MRR 等排序评价指标可视化,以及使用这些评价指标选择最佳模型检查点。一旦你的模型准备就绪,便可使用 TensorFlow 服务(https://www.tensorflow.org/serving/),轻而易举地将其部署到生产。
|