天天看点

推荐系统召回算法及架构说明

课程地址: https://developer.aliyun.com/course/2052

一、召回模块在推荐系统中的位置

在如何构建企业级推荐系统系列课程的第一课中,我们介绍了整个推荐系统的架构应该是什么样的,大体有哪些模块,在云上的产品的每个模块需要用什么样的一个应用。在这一节课,我们会重点针对推荐系统中的召回算法做一个具体的说明,以及这个架构是怎么搭建的。先来回顾一下召回模块在整个推荐系统中的一个位置。召回模块主要做的一件事就是初筛。用户A进到平台中,从潜在的超大规模的item中筛选A可能喜欢的较小比例的item。比如说平台上有10万个item,用户进来之后筛选出500个他可能会喜欢的。接下来通过排序模块根据他的喜好程度对item进行排序。

推荐系统召回算法及架构说明

二、推荐场景-召回算法介绍

今天我们就介绍一下在这个召回模块究竟会用到哪些算法。我把目前比较流行的4个算法放到这里。右侧的是协同过滤算法,左侧的可以叫做向量召回相关的算法。协同过滤算法类似于基于统计的算法,它会找出兴趣相同的一些人,或者说一些可以被同时购买的商品。比如说啤酒和尿布的故事,我们发现在超市里啤酒和尿布经常被一起购买,这是基于大量的数据统计得到的一个结果。向量召回更偏机器学习的一些深层的模型。比如说ALS是一个经典的矩阵分解方法,可以基于行为数据表,产出user embedding表和item embedding表。这是向量召回的一个基本方法。其实FM也是类似的一个逻辑,通过内积方式增强特征表现力。这里面我要单独介绍一下 GraphSage算法。它其实是一种图神经网络的召回算法,这种算法在整个的互联网领域应用的还不是特别多。但是在一些比较大的互联网公司,比如说淘宝的推荐场景会应用得比较多。GraphSage是基于深度学习框架构建的图算法。可以基于用户和商品特征及行为产出user embedding和item embedding。GraphSage算法也经常被用于电商的召回场景。

推荐系统召回算法及架构说明

三、什么是协同过滤

协同过滤可能是比较好理解的一个算法,我这里会用一个篇幅给大家介绍一下。比如说我们有用户A、B、C,他们的偏好如下图所示。你会发现A和C有一些相似的口味。A和C都喜欢Rice、Milk。除此之外,A还喜欢Lamb。就是说A和C有相似的口味,并且A还喜欢某个C没有尝试过的东西。我们就假设C也喜欢它,可以把它作为C的一个召回结果。这就是一个基于数据统计的标准的协同过滤的方式。这张图可以帮大家很好地去理解协同过滤算法的原理。

推荐系统召回算法及架构说明

四、向量召回架构说明

接下来再介绍一下刚才的三种向量召回的算法。它的一个输入的数据大体是这样的,你有一些用户的ID,然后有一些物品的ID,然后有一些行为的数据。如下图所示,这是一个用户行为的数据表,进来之后你通过向量召回算法,最终拿到的是两个向量表。这些向量表在实际的生产中是一个K、V形式的。就是一个用户ID对应一个向量,可以在Redis里去暂存一下。实际的使用过程中需要把这些东西全存到Faiss的服务器里。Faiss是Facebook的AI团队开源的专门针对向量检索的一个引擎。它的一个好处就是非常快,可以提供很多的向量检索的模式,甚至可以在一毫秒之内返回一个几百万级别的向量检索,它的性能非常好,常用到推荐召回的领域里。具体召回的时候,比如说我们想给一个用户推荐一个物品,我们拿着用户的ID和它的向量进入到Faiss引擎里去查哪些物料向量和用户向量的欧式距离最近。比如说,把Top10个拿出来,作为这名用户的召回结果。这是整个的方案,会用到Redis,也会用到Faiss这样的一个引擎。这就是整个的向量召回的架构。

推荐系统召回算法及架构说明

五、参考资料

最后,介绍一下我们给大家准备的一些资料。这第一个link它对应的是PAI团队结合自身过去几年在推荐领域的一些探索,总结了140页的推荐业务的动手实践文档。没有机器学习背景的人基于我们这些文档,也可以在一周之内搭建一套企业级的推荐系统,大家如果感兴趣可以去用一下。另外这一个是PAI的产品地址。

推荐系统召回算法及架构说明

继续阅读