表1:主流推荐算法的问题与优势
上面列举的是一般推荐系统可能存在的问题,对于单个推荐算法,由于所利用的数据不一样,算法自身模型不一样,可能会面临上述问题中的一些。不同的产品形态和业务场景,由于跟用户的交互方式不一样,能够获取到的数据也不一样,对选择具体的推荐算法也存在一定的限制。既然单个算法或多或少存在一些问题,自然的想法就是结合多个算法的优势来避免单个算法存在的问题,这就是下面一节我们要讲的混合推荐算法,混合推荐期望融合多个算法,博采众长,有效缓解上述单个算法存在的居多问题。
三、混合推荐系统的实现方案
我们在第二节讲解了混合推荐算法的价值,那么多种算法怎么混合来构建新的算法呢?根据多种算法混合的方式不同一般可以分为如下3种混合范式,其中每种范式都有两到三种具体的实现方案,一共有7中不同的混合方案,我们在下面分别介绍(该分类参考了参考文献5的具体分类方法)。
1.单体的(Monolithic)混合范式
单体的混合范式整合多种推荐算法到同一个算法体系中,由这个整合的推荐算法统一提供推荐服务,具体的实现流程参考下面的图1。
图2:并行的混合推荐范式
并行混合范式利用多个推荐算法密切配合,利用特殊的混合机制聚合各个算法的结果,根据混合方案的不同主要有如下3中具体的实现方式。
(3) 掺杂(Mixed)混合
掺杂方法将多个推荐算法的结果混合起来,最终推荐给某个用户,见下面公式,其中,k是第k个推荐算法。
这里同样要保证不同的推荐算法输出的得分要在同一个范围,否则加权是没有意义的。
(5) 分支(Switching)混合
分支混合根据某个判别规则来决定在某种情况发生时,利用某个推荐算法的推荐结果。具体的公式可以用下式简单表示。
图3:流水线混合推荐范式
流水线混合是一个分阶段的过程,多个推荐算法一个接一个,最后的一个算法产出最终的推荐结果。根据一个算法的输出以怎样的方式给到下一个算法使用,具体可以分为如下2种实现方案。
(6) 级联(Cascade)混合
在级联方式中,一个算法的推荐结果作为输出给到下一个算法作为输入之一,下一个算法只会调整上一个算法的推荐结果的排序或者剔除掉部分结果,而不会新增推荐标的物。如果用数学语言来描述,级联混合就满足下面两个条件的混合推荐,其中n是级联的算法个数,
是第k个推荐算法的推荐结果。
注意,排在级联混合第一个算法后面的算法的输入除了前面一个算法的输出外,可能还会利用其它的数据来训练推荐算法模型,级联的目的是优化上一个算法的排序结果或者剔除不合适的推荐,通过级联会减少最终推荐结果的数量。
(7) 元级别(Meta-level)混合
在元级别的混合中一个推荐算法构建的模型会被流水线后面的算法使用,用于生成推荐结果,下面的公式很好地说明了这种情况。由于这种混合直接将模型作为另一个算法的输入,类似函数式编程中函数作为另一个函数的输入,所以比较复杂,在现实业务场景中一般n=2,即只做两层的混合。
图4:工业级推荐系统3阶段pipeline架构
这个三阶段的pipeline结构类似混合推荐中的流水线混合范式,下面我们分别对这三个阶段的功能进行简单介绍,同时会说明每个阶段的算法是怎么利用到混合推荐的思路的。
召回阶段的目的是通过利用不同的推荐算法将用户可能喜欢的标的物从海量标的物库(千万级或者上亿)中筛选出一个足够小的子集(几百上千)。作者在《基于标签的实时短视频推荐系统》这篇文章第四节“个性化推荐的召回与排序策略”中对多种召回策略进行了介绍(参考下面图5,感兴趣的读者可以阅读这篇文章的相关章节),这其中的每一种召回策略可以看成是一个推荐算法,不同召回算法的结果是通过掺杂混合的方式(也就是前面提到的第三种混合推荐算法)进行合并的,混合后的推荐结果作为数据输入给后续的排序推荐算法阶段进行进一步精细化处理。
图6:用户从刚注册到老用户过程中的可行推荐策略
除了上面的分支混合策略外,还可以采用掺杂加权的策略,就是将上面3中方案计算出来的推荐结果(如果有的话)混合推荐,这里不再赘述。
五、对混合推荐系统的思考
混合推荐算法提出的目的主要是希望通过多个算法的有效配合避免单个算法存在的问题,提升推荐的整体质量,前面第三节中提到的几种混合方式是从算法的角度来说明几种可行的混合方案,这7种混合方案是在2002年提出来的,历史比较久远了,虽然现在还很有代表性,但是这几年整个推荐系统在算法、工程实践、应用场景上都有较大发展和变化,有很多情况可能是这7种混合方式没有覆盖到的,另外,这7种混合方式只是从算法的角度来进行介绍的,而从更广义的角度来看,推荐系统的混合不光有算法的混合,还有数据源的混合、多类别标的物的混合、应用场景的混合等等,在本节我根据自己对推荐系统的未来发展的理解,试图对混合推荐系统可能的重点发展方向进行简单介绍,给大家提供一些新的思考问题的视角。
1.整合实时推荐中用户短期和长期兴趣
实时个性化推荐可以快速响应用户请求,让用户实时获得优质推荐服务,帮助用户及时获取信息对用户来说是非常有价值的事情。
怎么整合用户实时兴趣和长期兴趣对提升用户体验是非常关键的,前面一节已经提到了一些简单的整合用户实时兴趣的方法,这个方法还非常简单粗暴,更好更加有效的方法还需要算法和工程上的突破。
实时个性化推荐一定是未来的重点方向,特别是随着5G时代的到来,网速有极大的提升,谁能更快更好地服务用户,谁就能拥有用户。
2.利用单个复杂模型建模多源信息
传统的基于内容的推荐、协同过滤等算法一般只利用部分相关数据来构建推荐模型,由于利用的数据有限,模型相对简单,因此单个算法可能存在一些问题(我们在第二节中已经对各个算法可能存在的问题进行过简单介绍),利用我们第四部分介绍的混合推荐策略可以避免部分相关问题。那是否可以利用其它的方案来解决这些基础模型存在的问题呢?确实是可以的。现在随着深度学习等复杂模型的流行,有很多学术研究和工业实践利用深度学习、强化学习等技术整合多种信息来获得更好的推荐效果,这种从模型层面整合多种信息的方法,可以更好地学习多数据源之间的内在关系,所以一定是未来的一个重要的研究和实践方向。
目前的数据源按照数据承载的载体不同有文本、图像、视频、音频等数据,从数据的来源,有用户相关数据、标的物相关数据、用户行为数据、上下文数据等,利用深度学习、异构信息网络等复杂算法来整合多源数据提供更优质的推荐服务是很有前途的一个方向。
3.多源的标的物混合
现在很多APP都是朝着提供综合性服务的方向发展,比如美团(吃、住、行、生活等)等APP提供多种不同性质和类别的服务,未来推荐算法可能会提供综合性的推荐服务,在同一个推荐列表中存在多种不同类别差异性极大的标的物。
另外,互联网产品做广告变现是非常重要的一种商业化手段,随着新闻短视频等信息流产品的流行,信息流广告越来越受到互联网公司的重视(参加下面图7),信息流广告中将广告和标的物混合在一起推荐,这时广告也可以看成是一种标的物,因而也是一种标的物混合推荐的形态,只不过在信息流广告中,我们除了关注标的物的“消费”外,还会重点关注广告曝光、点击、购买等收益性指标。