你以为的推荐系统,其实只是推荐模型

OneFlow重庆

image.png

作者|Even Oldridge、Karl Byleen-Higley
翻译|胡燕君

构建推荐系统最大的入门难点之一是理解推荐系统如何在实际中应用。

目前,关于推荐系统的网络资料大部分关注的是推荐模型本身,而且仅限于介绍一些简单的协同过滤(Collaborative Filtering)模型。对新手来说,只了解简单的推荐模型并不足以让他们构建出一个真正能在实际生产中使用的推荐系统。

无论是简单的协同过滤模型,还是DLRM等深度学习模型,推荐模型的作用都是对用户可能感兴趣的内容进行排序(Ranking),更准确地说,是评分(Scoring)。但在现实场景中,光有评分并不足以实现良好的推荐效果。

本文将结合Meta、Netflix和Pinterest等公司的实例介绍一种构建推荐系统的主流模式。NVIDIA Merlin团队认为,这种模式是构建端到端推荐系统的核心,并希望通过介绍这种模式,帮助你理解推荐系统(而不仅仅是推荐模型)如何应用在实际生产中。

1

两阶段推荐系统:检索和评分

待推荐条目(items)越多,往往就会带来问题。待推荐目录中的内容可达几百万项甚至数十亿项,这时,针对每位用户的喜好对每项内容进行评分并不现实。评分需要消耗巨大的算力。在实际操作中,系统通常只会从所有条目中快速选一个与用户喜好相关的子集,给其中的1000或10,000项条目评分。

因此,推荐系统可分为两个阶段。在我们对条目进行评分之前,我们需要选择一个合理的相关合集,其中包含用户最终将接触到的条目,这个阶段叫候选检索阶段(也叫候选生成),即选出用户有可能感兴趣的条目集。候选检索模型有多种,包括矩阵分解模型(Matrix Factorization)、双塔模型(Two-Tower)、线性模型、近似最近邻模型(Approximate Nearest Neighbor)和图遍历模型(Graph Traversal)。它们的计算效率通常都比评分模型高得多。

2016年,Google发表了一篇关于YouTube推荐系统的论文(https://static.googleusercont...),这是有关候选检索架构最早的公开文献之一,这个方法如今已被行业广泛应用。Eugene Yan对此也写过一篇优秀的文章(https://eugeneyan.com/writing...),他将推荐系统分为两个阶段(即候选检索和评分),我们在此基础上获得启发,并将其细化为四个阶段(下文将详述)。

值得一提的是,在同一推荐系统中使用多种候选来源也是一种常见做法,这样可以确保对用户展现更多样的候选条目,在此先按下不提。

2

过滤阶段的必要性

虽然候选检索和评分这两个阶段看似足以应付大规模推荐任务,但推荐系统还需支持另外一些限制条件。因为大多数情况下,总有一些你不希望展现给用户的内容,例如缺货的商品、不适合用户年龄层的内容、用户已看过的内容和用户所在国家未许可上线的内容等。

与其让评分或检索模型来推理上述业务逻辑,以避开不能推荐的内容,不如直接为推荐系统增加“过滤”(Filtering)阶段。

过滤阶段通常紧随检索阶段之后,也可以与检索阶段结合(过滤阶段最复杂的问题是确保检索之后有足量的候选条目),有时甚至可以在评分阶段结束后再过滤。通过过滤可以实现模型本身难以执行的业务逻辑规则。有时,实行过滤只需简单的排除查询,有时则更复杂,例如用Bloom Filter筛掉用户接触过的内容。

3

排序阶段:Ranking or Ordering?

目前我们已介绍了三个阶段:候选检索、过滤和评分。经过这三个阶段,系统已选出相关推荐内容并一一评分。每项条目的分数代表评分系统估计的用户感兴趣程度。

推荐内容通常以列表形式向用户呈现,这就带来一个有趣的难题:最理想的推荐列表不能局限于系统的评分,还要保证一定的多样性,为用户展示一些他们平常不会接触的内容,帮助他们探索未知领域,避免陷入信息茧房。

部分文献会把推荐系统的评分阶段称为“排名(Ranking)”,但给用户的推荐列表中的最终排名(或位置)很少会直接对齐模型输出的结果(译注:比如推荐列表中排在末尾的内容通常不是被模型评分最低的内容)。而通过提供一个显式的“排序(Ordering)”阶段,我们能将推荐模型的评分和其他业务需求的限制条件进行对齐。

4

推荐系统的四个阶段和实例

候选检索、过滤、评分和排序这四个阶段构成目前绝大部分推荐系统的设计模式。下图展示了四个阶段的如何训练、部署并支持推理时间查询,应用于实际生产的推荐系统比基本的推荐模型复杂得多。我们认为下图较准确地呈现了当今大多数实际推荐系统的构建方法。

image.png

接下来让我们看看推荐系统的实际应用。首先,通过研究常见推荐任务,我们发现以下用例都具有相似的模式,符合上述四个阶段。

image.png

然后,我们可以分析现实中的推荐系统,看看其中的各个步骤分别属于哪一个阶段。

Meta公司的Instagram团队曾发布一篇文章Powered by AI: Instagram’s Explore recommender system (IGQL query language),介绍其开发的查询语言(Query Language),它可以让推荐系统的开发更加简便。Instagram提供了如下例子,从中可见,这种查询语言可以完全映射我们总结的四个阶段。

image.png

Pinterest也有一系列关于推荐系统的论文:Related Pins at Pinterest:The Evolution of a Real-World Recommender System、Pixie: A System for Recommending 3+ Billion Items to 200+ Million Users in Real-Time和Applying deep learning to Related Pins。下图摘自上述第一篇论文,展示了Pinterest系统架构的演变。同样,Pinterest的推荐系统总体也符合四个阶段,只是候选检索和过滤被整合为同一阶段。

image.png

最后,Instacart在2016年公布了如下推荐架构(http://slideshare.net/Sharath...),也符合我们所说的四个阶段。首先是检索候选商品,过滤用户已购买的商品,然后对待推荐商品评分,最后对待推荐商品进行重新排序,以增加展示条目的多样性。

image.png

总之,实际的推荐系统比单独的推荐模型复杂得多,而业内新手在网络上查到的推荐系统资料大部分都只介绍协同过滤模型,因此,当他们真正着手构建推荐系统时难免会一头雾水。

(本文经授权后编译发布。原文:
https://medium.com/nvidia-mer...;视频:
https://www.youtube.com/watch...

题图源自LoboStudioHamburg, Pixabay

欢迎下载体验 OneFlow v0.8.0 最新版本https://github.com/Oneflow-In...

阅读 191

业界观点
★ OneFlow深度学习框架:github.com/Oneflow-Inc/oneflow ★ OF云平台:oneflow.cloud

★ OneFlow深度学习框架:github.com/Oneflow-Inc/oneflow ★ OF云平台:oneflow.cloud

1 声望
0 粉丝
0 条评论
推荐阅读
Stable Diffusion半秒出图;VLIW的前世今生;YOLOv5全面解析教程 | AI系统前沿动态
自研深度学习编译器技术的 OneFlow 团队更是在不降低采样效果的前提下,成功将之前的 “一秒出图” 缩短到了 “半秒出图”!在 GPU 上仅仅使用不到 0.5 秒就可以获得一张高清图片!

OneFlow阅读 198

【YOLOv5】LabVIEW+YOLOv5快速实现实时物体识别(Object Detection)含源码
前面我们给大家介绍了基于LabVIEW+YOLOv3/YOLOv4的物体识别(对象检测),今天接着上次的内容再来看看YOLOv5。本次主要是和大家分享使用LabVIEW快速实现yolov5的物体识别,本博客中使用的智能工具包可到主页置顶...

wangstoudamire1阅读 281

Python 3.14 将比 C++ 更快🤭
Python 是数据科学 (DS) 和机器学习 (ML) 中最常用的脚本语言之一。根据“PopularitY of Programming Languages”,Python 是 Google 上搜索次数最多的语言。除了作为将各种 DS/ML 解决方案连接在一起的出色胶水语...

deephub1阅读 664

一文详解AI模型部署策略
编者按:模型部署是AI开发生产流程中的重要步骤。对于许多组织而言,选择最佳的模型部署策略以扩展到生产级系统,都是一项复杂且具有挑战的工作。今天IDP将和大家一同,跟随Yashawi Nayak,全面了解模型部署策略...

Baihai_IDP1阅读 288

封面图
个推谈Web3.0:从概念、技术原理到发展趋势
今年“双11”,在各大电商平台、直播间,我们可以看到越来越多的虚拟主播和数字人涌现,不少国内外品牌还进驻NFT领域,推出数字藏品,力图为消费者开启Web3.0时代的元宇宙营销新体验。

个推1阅读 394评论 1

封面图
深度学习求解PDE以及应用:综述
本人目前已经研究生三年级了,也要去读博士了,后面可能就不做这个方向了,也就是将深度学习引入PDE的求解中。我进入这个领域的动机是硕士论文一开始是做PDE的智能控制,但是控制问题大家都知道,不过还是把传统...

饥饿的盛世1阅读 356评论 6

封面图
有关遗传算法最新发展的4篇论文推荐
这篇论文使用遗传算法来构建Hadamard矩阵。 生成随机矩阵的初始群体是除第一列全部是+1以外,每列中都是平衡数量的+1和-1项。 通过实现了多个适应度函数并进行筛选,找到了最有效的适应度函数。交叉过程是通过交...

deephub1阅读 314

封面图

★ OneFlow深度学习框架:github.com/Oneflow-Inc/oneflow ★ OF云平台:oneflow.cloud

1 声望
3 粉丝
宣传栏