产品推荐系统架构初探

我是创始人李岩:很抱歉!给自己产品做个广告,点击进来看看。  

想象一下,站在推荐引擎面前的你被抽离出一个数字的躯体。你找到一面镜子,却惊诧的发现自己的身体被无数数据所填充,许是:科技10%、篮球4%、热火队2.3%、历史1%、自然0.3%。你仔细观察,甚至发现了很多连你自己都没有注意到的细节:虽然热爱旅游,但你喜欢博物馆远多过自然景观。当然,你也会发现自己的身体上仍然有一团团的迷雾,那是尚未被系统所发掘的兴趣点。

专门为你适配的内容如一群萤火虫般朝你涌来,你伸手点击了一条内容将它点亮。就在点击的那一瞬间、你身上的迷雾有一丝散去了,同时显示出了新的兴趣点:“极限运动:0.01%”,那些原本就存在的密密麻麻的数字也有一些发生了变化:有的权重上升、有的权重下降。每一次选择与反馈,你都在进化着自己的数字躯体。

现在,你生出了双翅、原地飞翔了起来,能够从高处俯瞰整个推荐系统。你看到了一个又一个数字拟态的人,在不同的信息流中畅游。每个人身边围绕着许许多多的信息光点、又同其他人之间有着若隐若现的连接。一个个信息被阅读的点亮、被忽略的变暗。每一个被点亮的光点就像被延续了生命一样,得以被分裂成更多光点、顺着人和人之间的连接,飞舞到更多的人身边。此起彼伏的光点明灭,共同照亮了整座系统,让它仿佛有生命一般慢慢扩张。

产品推荐系统架构初探
图片制作:https://wordart.com/create

这个过程听起来或许科幻,但用来描绘推荐系统,怕是再恰当不过了。
推荐是一个协作与进化的过程:

  • 对于内容而言,每一个用户既是消费者又是决策者,被认可的内容得以进一步扩散,不被认可的内容被纠偏、不至于影响更多的人。
  • 对于用户而言,每一次行为反馈都在不断完善自己的用户画像;而系统的兴趣探索行为,也在进一步给这幅画像补充了更多维度。

大致了解推荐系统的架构,能够帮助我们认知到:信息是如何匹配给用户的,而用户的选择又是如何影响后续的信息分发的。

作为一个工程问题,推荐系统的架构与搜索系统的架构具有一定的相似度:都做的是信息与用户意图之间的匹配。

搜索系统是将海量内容与用户表意明确的查询相关联,推荐系统则是将海量内容与用户没有明确表达的偏好相关联。

如果我们将推荐问题极度简化:用户只有一个爱好“NBA”时,那么推荐引擎给用户的结果就可以近似搜索引擎在“NBA”这个搜索词下的结果。

那么,一个简化的搜索架构是什么?

产品推荐系统架构初探

离线部分,专注在内容的搜集和处理上。

搜索引擎的爬虫系统会从海量网站上抓取原始内容,针对搜索体系的不同要求建立索引体系。在上图中,为了新内容能够更好的被用户看到,就专门建立了时效性索引数据用于存储几个小时之内的新内容。这是一个基于关键词的倒排索引,每一个关键词对应一长串提及该关键字的文章。比如,“教育”这个词命中文章1、2、3;“NBA”命中了另外一批文章1、2、4。

在线部分,负责响应用户的搜索,完成文章的筛选、排序并最终返回给用户。

用户输入一个搜索词“NBA”,这个词汇会首先经过搜索词的处理(会经过分词、搜索词变换等步骤),例如“NBA”和“美职篮”是同义词,那么在两个词都可以应用在索引的查询。

经历完搜索词处理后,进入召回环节。系统会通过多种召回方式,从索引数据里获得候选集合。在图中,就分别查询了全量的索引数据和时效性索引数据,获得了8篇文章的集合。

在召回的候选集之上,会进行排序的步骤,通过进一步计算获得最终结果反馈给用户,如图中的文章10和文章1。

用户的点击反馈也会影响排序环节的模型。在上图中,用户在展示给他的两篇文章中只点击了文章10,这一特征会被模型记录以统计文章10和文章1在搜索词 “NBA”下的表现情况。

借由搜索系统为参考,可以更好的理解推荐系统。

产品推荐系统架构初探

离线部分,同样需要通过各种方式来获取待推荐的内容(用户提交、协议同步、数据库导入等)。并依据推荐引擎处理的不同维度对这些内容进行索引处理,如话题、类目、实体词等。在上图中展示了两个维度:分类维度和实体词维度。

在线部分,其理亦然:量化用户的请求,完成文章的筛选和排序。
推荐与搜索最大的差异,在于用户表意的不明确性,故而,需要尽可能的完善用户的长期画像(对哪些类目、实体词、话题感兴趣)和短期场景(时间、地点),以此获得用户的意图,从而进行意图和内容的匹配。

  • 当用户打开内容推荐软件时,提交给系统的信息如:时间、地理位置、网络环境、手机设备型号、登陆用户ID等。
  • 基于用户ID,推荐系统会取出用户的画像数据(User Profile)。在分类维度,用户对体育和科技的内容感兴趣;在实体词维度,对于NBA感兴趣。
  • 根据用户的画像信息,发起不同的召回过程(类目查询和实体词查询),获取各种类型的内容构成候选集合。
  • 按照特定预估目标(如点击导向、互动导向)对候选集统一排序,并反馈给用户。

值得注意的是:对于推荐系统而言,用户的行为不仅具有针对内容价值评估的群体投票意义(如:某篇关于NBA的文章,偏好NBA的用户都不点击,那么其在“NBA”这个实体词下应该权重降低)同样具有针对自身画像的个体进化意义(如:用户总是点击有关于热火队的NBA文章,那么这个用户的画像中会补充“热火”这个实体词,影响后续他自己的推荐内容流。)

本文被转载1次

首发媒体 产品壹佰 | 转发媒体

随意打赏

推荐系统实践推荐系统架构产品系统设计产品的架构系统架构
提交建议
微信扫一扫,分享给好友吧。