版权声明:本文为博主原创文章,转载请注明出处:https://twocups.cn/index.php/2023/02/05/52/
前序、推荐系统是什么?
推荐系统[参考文献1]分为广义推荐系统和狭义推荐系统。广义推荐系统的特点是给某个人推送/引荐/分配某个物品,狭义推荐系统的特点是从海量的物品池中挑出当前用户感兴趣的物品。这里我们只讨论狭义推荐系统。
推荐系统就是根据用户的历史行为、社交关系、兴趣点、所处上下文环境等信息去判断用户当前需要或感兴趣的物品/服务的一类应用。推荐系统本身是一种信息过滤的方法,与搜索和类目导航组成三大主流的信息过滤方法。我们可以从不同的角度看推荐系统的用处:对用户而言,推荐系统能帮助用户找到喜欢的物品/服务,帮忙进行决策;对服务提供方而言,推荐系统可以给用户提供个性化的服务,提高用户信任度和粘性,增加营收。据说,Netflix有2/3 被观看的电影来自推荐系统,Google新闻有38%的点击量来自推荐系统;Amazon电商有35%的销量来自推荐系统的推荐。
如果想要简单了解一下推荐系统,可以看下我之前的文章。不过不看也没事,这篇文章中涉及到的推荐系统知识我会再提一遍的。
一、Amazon的推荐部分长什么样?
简单来说,你在购物网站上看到的那些长得像广告的模块,除了有一部分是真的广告,剩下的都是推荐。当然,这是非常不严谨的说法,因为广告也算是推荐的一种展现形式,不应该和推荐区别开来。但这种说法能让你迅速了解到你看到页面中哪些部分是推荐。
接下来会展示主流的购物网站(网页版)的首页中推荐部分的样式。当然,推荐部分不只有在首页存在。在你购物过程中、购物成功后,系统都会源源不断地为你推荐你可能会感兴趣的商品。
- Amazon -国外
- ebay -国外
- walmark -国外
- 淘宝 -国内
- 天猫 -国内
- 京东 -国内
一个购物网站首页的展示部分有三样重要的部分:搜索、导航和推荐。
- 搜索:当你带着明确的目的性去购物时,就会使用搜索。例如我想买某本书,我直接搜索书名即可。
- 导航:你对想买的东西有一个大概的范围,但是不确定到底选择哪一款商品,你就会使用导航。例如我养了一只宠物,并且想为它选购一些日用品,但我不清楚具体需要购买哪些物品,我就会进入宠物分类进行购物。
- 推荐:你购物时没有明确的目的,就会使用推荐来找找自己心仪的商品。例如很多妹子们都爱没事刷购物网站,看看能不能刷到自己喜欢的商品。
国外购物网站这三者在首页中的占比分配和国内是不同的,这是由于不同购物网站的用户群体、主营业务和职能都不尽相同。
二、Amazon的推荐系统架构
Amazon的推荐系统的详细架构尚未公开,因为它是公司的核心商业机密。但是,Amazon的推荐系统架构也是会遵循工业级的推荐系统架构,如下图所示[参考文献2]。
召回
Amazon详情页推荐场景中最常用的两种通用召回策略是:基于item表示向量的相似度的召回,和基于item关联规则的召回[参考文献3]。
- 基于item表示向量的相似度的召回,常见的item表示方法如下:物品item的显式画像的表示,物品item的整个embedding向量的表示,用户-物品交互矩阵中item对应列向量的表示(假设用户是行,物品是列);
- 基于item关联规则的召回(常用在电商中的购物车页面推荐或者购买页面推荐中),找出所有用户购买的所有物品数据里频繁出现的Item序列,来做频繁集挖掘,找到满足支持度(即两个商品被同时购买的概率)阈值的关联物品。关联规则分析中的关键概念包括:
- 支持度(Support):它是两件商品(A∩B)在总销售笔数(N)中出现的概率,即A与B同时被购买的概率;
- 置信度(Confidence):它是购买A后再购买B的条件概率;
- 提升度(Lift):它表示先购买A对购买B的概率的提升作用,用来判断规则是否有实际价值,即使用规则后商品在购物车中出现的次数是否高于商品单独出现在购物车中的频率。
在进行召回的时候,经常需要构建索引。对所有的用户进行索引是非常耗存储和费时的,所以在构建索引的时候,可能选择月活用户来构建索引是合适的。在做实时召回的时候,用户的行为序列特征除了可以考虑推荐业务相关的行为,还可以考虑同一个应用的其他形态比如用户在搜索业务中的行为。比如Youtube DNN召回模型的特征,除了有用户最近观看过的video id序列/video embedding,还有该用户最近搜索过的word序列或者word的embedding。
排序
排序阶段目前主流的都是基于传统机器学习或者深度学习的模型,排序模型的研究一直都是推荐系统领域的热点,国内外大厂都在这个领域大展拳脚。当前的排序模型有如下趋势:引入行为序列特征、引入注意力机制(比如DIN,DIEN等)、引入多任务/多目标(比如ESMM,MMOE,ESMM2,PLE等)、引入多模态。
之后还会经历重排阶段。重排阶段主要就是业务运营人员用各种策略/规则进行干预。重排主要从以下几个方面来进行干预:
- 优选物品的曝光:给优质的物品更多的曝光机会(首页推荐一般会考虑)
- 探索与利用:为了发现用户可能更多的兴趣点,以及给长尾物品和冷启动物品更多的曝光机会
- 曝光位置的编排:考虑是否做分区混合推荐以及每个分区曝光位置安排,是否给长尾物品和冷启动物品固定曝光位置,是否有其他形式比如广告和推荐列表的混排
- 结果的多样性:需要覆盖用户不同的兴趣领域,即推荐结果需要具有多样性
- 结果的新颖性:向用户推荐非热门非流行物品的能力
- 结果的信任度:增加系统透明度,提供推荐解释,让用户了解推荐系统的运行机制
- 结果的时效性:需要在物品还具有时效性时就将它们推给用户
- 过滤:过滤操作在重排阶段和召回阶段都需要,例如把用户最近刚买过的商品以及类似的商品从推荐列表中去掉
模型
上图中的常规模型指的是周期离线训练并更新为线上的模型,而实时模型指的是实时收集用户行为反馈,并选择训练实例,实时抽取拼接特征,并近乎实时地比如分钟级别更新在线推荐模型。这样做的好处是用户的最新兴趣能够近乎实时地体现到推荐结果里。这里的常规模型和实时模型共存的原因可能是某路召回模型或者排序模型没有办法做增量训练或当前常规模型和实时模型处于A/B Test部署中,或者常规模型作为fallback选择。
补充:Netflix的推荐系统架构
虽然Amazon的推荐系统架构无法获取,但是有的网站就会公开自己的推荐系统架构。Netflix的个性化推荐系统架构(2013年)如下图所示[参考文献4]。
Netflix的推荐系统分为离线,近在线,在线三个部分。在线部分要尽可能满足低延迟的 SLA以响应实时的客户端请求。线上的召回,排序阶段的预测以及业务策略处理也属于online部分。离线部分是作为在线部分的一个fallback选项(即一种优雅降级的方法),同时它能提供一部分最终或者中间的推荐结果(比如作为一路召回或者分区混合推荐的一个分区),另外它能提供部分字段的预计算(比如用户画像和物品画像)。当然模型的离线训练也属于这个部分。近在线部分除了可以增量训练并近实时(比如分钟级别)的更新在线模型,还可以根据最新事件补充离线召回结果,以及根据用户最新浏览记录提取的兴趣标签补充到用户画像中。
三、历史沿革:Amazon推荐系统的20年变迁史
2017年3月,Amazon的Brent Smith在IEEE Internet Computing上发表了文章《Two Decades of Recommender Systems at Amazon.com(Amazon推荐系统的20年变迁史)》[参考文献5]。这位作者可不一般,他是ItemCF的发明人,也算是推荐系统行业的“祖师爷”。ItemCF是基于物品的协同过滤算法,该算法通过分析用户的行为记录计算物品之间的相似度,详情可以看我之前的文章
Amazon在1998年上线了ItemCF算法,将推荐系统推向服务百万级用户和处理百万级商品这样一个前所未见的规模。并且自从Amazon在2003年于IEEE Internet Computing上发表关于这一算法的文章之后,该算法在互联网上开始广泛流传,包括YouTube,Netflix和其他很多公司在内都在使用。该算法的成功来源于以下几个方面:
- 简单、可扩展。
- 经常能给出令人惊喜和有用的推荐。
- 可根据用户的新信息立刻更新推荐。
- 可解释性强。
根据Amazon在2003年发表的文章中描述的内容来看,这些年Amazon推荐系统曾经面临很多很重大的挑战,同时也经历了极大的发展。
最初,Brent Smith发明ItemCF时,Amazon还只是一个网上书店。自从使用了ItemCF,Amazon的销售额增长了不止一百倍,并且从图书扩展到以非出版物为主,从笔记本电脑到女装。
正如Amazon在2003年的文章中所描述的一样,ItemCF算法是很直观的。在90年代中期,协同过滤算法主要还是基于用户的,这意味着算法的第一步是要通过搜索所有的用户来计算某个用户在兴趣方面的相似用户(例如拥有相似的购买模式),之后再看这些相似用户看过哪些这个用户没有看过的东西。与之相反,Amazon的算法第一步是计算每个物品的相关物品。这里的“相关”可以表示多种含义,但在这里,可以将其模糊地定义为“买了一个物品的人具有非常大的可能性会购买另外一个物品”。所以,对于每个物品,我们希望得到所有购买了该物品的用户极高概率会购买的其他物品。
一旦这张物品相关的表构建好,我们可以通过一系列的查找来构建推荐系统。对于一个用户当前场景下和历史兴趣中的每个部分,Amazon寻找到其相关物品,将它们结合起来得到用户最可能感兴趣的物品,过滤掉已经被看过或购买过的,剩下的就是就是待推荐的物品。
以上说的就是ItemCF的核心思想,它相较于旧的基于用户的协同过滤算法(UserCF)具有很多优势。最重要的是,主要的计算(相关物品的批量计算)都是在离线发生的。而推荐的计算过程可以通过实时的一系列查找来完成。当数据量充足时,推荐结果的质量就会非常好。虽然二十年来各种新算法在不断被发明,但在可观测到的质量方面,ItemCF仍然极具竞争力。该算法能够无损地扩展到亿级用户和千万级物品,而不需要抽样或使用其他会影响推荐质量的手段。该算法在用户兴趣更新时可以立刻随之更新。最后,该算法的结果可以用很直观的方式来解释,因为其来源就是用户记得自己曾经买过的物品列表。
在2003年时,ItemCF已经在Amazon广泛使用了。Amazon在主页非常显眼的位置放置了基于用户购买历史和浏览行为的个性化推荐模块。搜索结果页会给出和用户搜索相关的推荐。购物车会给用户推荐其他可以加入购物车的商品,可能会刺激用户在最后一刻完成捆绑购买,或者对用户已经打算购买的商品形成补充。在用户订单的尾部,会出现更多的推荐,给出建议用户之后可能购买的东西。借助电子邮件、列表页、商品详情页以及其他页面,很多Amazon上的页面多少都会有些推荐模块,开始形成一个千人千面的商店。
在2010年时,YouTube宣称他们使用ItemCF来做视频推荐。并且很多开源工具和第三方厂商都使用了ItemCF算法,这使得该算法在网上零售、旅行、新闻、广告等行业中开始广泛出现。在后面的几年中,根据微软研究院的估计,Amazon上大约30%的页面浏览来自于推荐系统。同样,Netflix也在广泛使用推荐系统,他们的首席产品官声称80%以上的电影观看来自于推荐系统,并宣称Netflix推荐系统的价值每年高达十亿美元,甚至是更多。
该文章中剩下的内容主要讲述了推荐系统时如何定义和评价相关性的,以及时间对于改进推荐系统质量的重要性。有需要的同学可以直接看原文了解一下,原文见参考文献5。
四、Amazon的相关页面
Amazon的官方白皮书:https://aws.amazon.com/whitepapers
Amazon的官方技术博客:https://aws.amazon.com/blogs
Amazon的客户案例成功页面:https://aws.amazon.com/solutions/case-studies/
Amazon业绩的相关报告:https://ir.aboutamazon.com/
五、推荐系统的未来是什么?
有人说推荐系统的未来是算法,但算法只是实现的方式。那推荐系统的最终表现形式会时怎么样的呢?
我们可以把未来的推荐系统想象成一种智能交互,使购物就像对话一样简单。
还记得第一章中提到的搜索和推荐的区别吗?有明确目的则使用搜索,没有明确目的则使用推荐。搜索更容易快速地购物,但推荐不一定,什么时候能刷出自己想要的商品那要看系统的质量以及自己的运气。而我希望未来的推荐系统像一个了解我的朋友,它了解我的爱好,陪我一起购物,比我更加清楚我的需求,能让我感受到科技无处不在。而我,只需要和他聊聊天,描述一下我此次的需求即可。而目前主流购物网站的推荐部分都还是会经常刷出一些用户不感兴趣的商品,很多人都会吐槽:“你怎么还不了解我呢”。
曾经我以为我想象中的推荐系统只会出现在很遥远的未来,但是自从OpenAI在2022年11月推出ChatGPT以后,我突然觉得未来并不遥远。我越来越觉得,人工智能会改变这个时代。
回看过去,从1998年开始,Amazon在百万级商品上构建了推荐系统,来帮助百万级用户,帮助人们发现自己无法找到的东西。看看现在,该领域仍然充满机会。千人千面的用户体验仍然是一个没有人能够完全做到的愿景。仍然有很多机会可以给系统的每个部分添加智能和个性化,制造一个懂你喜好、懂其他人喜好、同时也知道你有什么选择的老友般的体验。
参考文献
- AWS官方博客:推荐系统系列之推荐系统概览(上) https://aws.amazon.com/cn/blogs/china/recommended-system-overview-of-recommended-system-series-part-1/
- 推荐系统召回四模型之二:沉重的FFM模型 https://zhuanlan.zhihu.com/p/59528983
- AWS官方博客:推荐系统系列之推荐系统概览(下) https://aws.amazon.com/cn/blogs/china/recommended-system-overview-of-recommended-system-series-part-2/
- Netflix官方博客:System Architectures for Personalization and Recommendation https://netflixtechblog.com/system-architectures-for-personalization-and-recommendation-e081aa94b5d8
- ItemCF的发明人Brent Smith:Two Decades of Recommender Systems at Amazon.com https://assets.amazon.science/76/9e/7eac89c14a838746e91dde0a5e9f/two-decades-of-recommender-systems-at-amazon.pdf