一、概述
推荐系统已经成为互联网平台的流量分发中枢,其核心架构主要包含三层:
1) Recall层,负责从全量的item池里筛选出用户可能感兴趣的item;
2) Rank层,根据推荐系统的整体目标对Recall层召回的item进行排序后截取topN;
3) Rerank层,综合排序目标、用户体验和平台生态对Rank层选取的item做最终的展示布局。
召回模块决定了排序效果的上限,Bigo Live直播推荐早期的召回主要是基于两种方式:
1)主播热度,例如主播的观看人数、点赞人数、送礼人数、转发数、评论数等;
2)用户和主播的亲密度,例如用户对主播的历史观看时长、用户对主播的其他作品的观看数、用户对主播的关注等。
这样的召回方式能保证召回的主播的质量,一定程度保证了用户的体验,但是这也导致了马太效应,流量越来越集中在头部主播,长尾主播很难获得有效流量。针对这个痛点,我们在召回模块引入了基于邻域的协同过滤(ItemCF和UserCF)、基于隐向量的协同过滤(NCF)、YouTube DNN、DSSM双塔模型和Graph Embedding来丰富召回通道。这些召回策略的引入,显著提升了我们直播推荐系统的核心指标,其中Graph Embedding在直播召回中效果提升尤为亮眼。
Graph Embedding通过随机游走,既会生成多阶节点(主播或用户)构成的序列,也会生成局部节点构成的序列,再经过Word2Vec学习(上下文相近Embedding向量相似),不但可以挖掘到局部节点之间的关系,还可以挖掘多阶节点之间的关系,通过u2i、i2i、u2i2i和u2u2i可以有效拓展推荐的覆盖度和多样性。由DFS游走得到的序列,节点的上下文更倾向于包含多阶邻居节点,因此两个节点,只要它们的多阶邻居整体相近,即使不直接相连,它们的Embedding向量也比较相似,这增加节点间的同质性;由BFS游走得到的序列,节点的上下文至多包含邻居节点的1阶邻居,所以局部相连比较多的节点,它们的上下文比较相近,因此它们的Embedding向量比较相似,这增加节点间的同构性。综上所述,对于直播场景,Graph Embedding能有效学习到主播与主播之间、用户与用户之间及用户与主播之间的多阶关系,可以增强推荐主播的同质性和同构性,提升直播推荐的覆盖度和多样性。
本文将介绍Graph Embedding在我们直播推荐场景召回中的实践运用。
二、 Grap