真实世界中的综合推荐系统(例如微信看一看)通常需要从上百万异质物品中进行推荐。直接在百万候选集上使用复杂的推荐算法,往往会引入难以承受的时间成本。因此,工业级综合推荐系统一般由召回(matching)和排序(ranking)两个模块组成。召回模块负责快速从百万级数据中检索出百级别物品候选,排序模块负责准确对这些召回来的物品候选排序,得到最后的推荐结果。由于推荐物品来源多种多样,特征也不尽相同,同时也为了兼顾多样性,召回部分通常会使用多队列召回(multi-channel matching)策略。然而,在现实系统中,综合推荐系统经常会引入新的数据源,这部分冷启动的召回通道在行为稀疏时往往表现较差。为了解决这些问题,作者提出一种 Internal and contextual attention network (ICAN)模型,通过加强多队列之间特征域(feature field)交互和环境信息,得到更好的(冷启动)召回效果。作者在微信看一看系统上进行了离线和在线实验,均获得显著提升。目前 ICAN 已部署与看一看线上召回系统。
模型背景与简介
综合推荐系统(例如微信看一看)能够综合不同来源(例如公众号、新闻源、网页)和不同媒体形态(例如文章、微博、长视频、短视频等)的物品进行联合推荐,为用户提供便利的一站式的信息获取服务。随着信息的指数级爆炸增长,真实世界的综合推荐系统通常需要从千百万异质物品中进行筛选和推荐。一些复杂的 user-item pair-wise 的推荐算法,如 DIN、DeepFM、AutoInt 等,需要穷尽所有候选集进行计算。然而,在百万千万级的数据下,哪怕接近线性时间的计算复杂度也是系统难以接受的。于是,真实推荐系统往往会划分为召回(matching)和排序(ranking)两个串行的模块。召回模块负责从百万级数据中快速检索出一个小的物品候选子集(通常是几百的规模),排序模块负责准确对这些召回来的物品候选排序,得到最后的推荐结果。同时,由于综合推荐的物品来源多种多样,物品属性和特征也不尽相同,在召回部分通常会使用多队列召回(multi-channel matching)策略处理不同来源的物品。这种召回-排序结构是现在大规模推荐系统的主流架构。图 1 给出了看一看场景中综合推荐的示例,包含文章、长视频、短视频三种召回队列(channel)。
图 1:微信看一看综合推荐示例
在现实系统中,综合推荐系统经常会引入新的数据源。微信看一看中较主要的信息来源和召回队列就超过了几十个。这部分冷启动的召回通道在建立初期,用户行为往往比较稀疏,基于用户行为的 CTR 预估模型表现较差。需要注意的是,和针对冷启动用户的推荐算法不同,冷启动召回队列(新信息源的召回队列)中冷启动的是物品和物品所拥有的特征本身。一个直观的方法是使用用户在其它队列上的点击等行为,预测用户在新信息源上物品的偏好,但是不同队列包含的特征域(feature field)可能不一样。不同信息源可能会有特征域上的种类差异,即使是相同特征域(如 tag/topic/category),特征含义也很可能不相同(不同数据源的 tag/topic/category 体系和粒度不同,难以进行直接对应)。模型需要学习到不同特征域之间的映射关系,但是很少有召回工作关注冷启动队列的问题。
在这篇论文中,作者想要提升推荐系统在多队列召回,特别是冷启动召回上的表现。作者提出一种 Internal and contextual attention network (ICAN)模型,通过加强多队列之间特征域交互和环境信息,得到更好的(冷启动)召回效果。作者基于微信看一看综合推荐系统,在离线和在线上均进行了 CTR 预估实验,并在多个指标上取得了最好结果。这个工作的贡献点如下:
1、这篇工作第一次强调了推荐系统多队列冷启动召回的任务。这项任务在学术界暂时没有太多关注,但是在工业级推荐系统中是一个对结果影响重大的实际难题。
2、作者提出了一个 Internal and contextual attention network (ICAN)模型,是第一次结合了跨队列特征域之间的交互信息进行召回的工作。
3、模型在离线和在线的召回指标上均获得显著提升,并且目前成功部署于微信看一看系统,服务千万用户。
模型结构
这篇论文目的是使用多队列之间的特征域交互,辅助推荐系统在多队列(冷启动)召回上的效果。图 2 给出了 ICAN 模型的整体架构。
图 2:ICAN 的整体模型架构
如图 2 所示,ICAN 模型首先将成熟队列和冷启动队列中的用户行为序列同时作为输入,并按照特征域把每个队列中的行为序列拆分成不同的特征域序列。然后,ICAN 通过 Contextual Attention Layer 抽取多队列特征域和环境相关的特征。接下来,ICAN 通过 Internal Attention Layer 中的 field-level self-attention 挖掘不同队列的不同特征域之间的交互信息。最后,模型融合用户行为、用户基本属性、推荐上下文信息以及用户社交属性信息等,参考 RecSys2016 的 Youtube 召回模型的训练方式,离线使用 softmax 基于 CTR 预估进行训练,在线使用类似基于 FAISS 的快速召回工具进行召回。这样,线上 ICAN 召回的时间复杂度就控制在 O(log(n))。模型的核心创新点在于针对多队列冷启动召回问题提出的基于特征域的跨队列信息交互。
具体地,在第一步,模型首先将成熟队列和冷启动队列中的用户行为序列同时作为输入。和传统的 session-based recommendation 不同,ICAN 把所有队列中的每个 item 向量按照其特征域数目拆分成 n 份,并根据特征域组成 n 个新的序列。例如在 article 队列中,每个 article 的特征域由文章的[ID, tag, category]三个特征域组成,那在 ICAN 的输入中,用户在 article 队列上的点击行为即分为 ID, tag, category 三个序列。每个特征域序列经过 encoder 得到特征域的向量。
第二步,作者使用 Contextual Attention Layer,抽取前述特征域向量中和当前队列的环境(contexts)相关的特征。这里的环境主要有两个因素,其一是当前召回所在的队列,其二是推荐的上下文环境(包括网络状况等因素)。模型通过注意力机制,获得了环境特化的特征域向量:
第三步,作者使用 Internal Attention Layer,让环境特化后不同队列下的不同特征域之间进行充分的特征交互。这里,作者使用了 field-level self-attention 模型,进行不同特征域之间的特征交互:
和传统 self-attention 不同,这里输入的不是 item 矩阵,而是 item 按特征域拆分,并在队列内进行序列聚合后的特征域矩阵。这是因为 ICAN 主要目的是学习到不同队列特征之间的交互信息。这样在冷启动队列中进行推荐时,本队列用户行为不足或本队列特征学习不够充分的情况下,可以借助其他队列的信息学习到用户在冷启动队列中的偏好。另外,在使用其它成熟队列点击进行训练时,模型也可以对冷启动队列的特征进行更新。
第四步,模型融合用户行为、用户基本属性、推荐上下文信息以及用户社交属性信息,通过 MLP 得到了(环境特化后的)用户向量。模型基于用户向量,使用 softmax 进行 CTR 预估。Loss 如下:
此 loss 认为和用户向量相似的物品向量更可能被点击。因此,在线上进行实时召回时,ICAN 只需要使用一次前馈神经网络即可获得用户向量,然后基于类似 FAISS 的快速召回工具进行 K 近邻召回即可,相似度使用用户向量和物品向量之间的余弦相似度。这样,线上召回的时间复杂度就控制在 O(log(n))内,能够在线快速处理千万级物品候选。
实验结果
作者在微信看一看上进行了离线和线上实验。由于是召回模型,离线指标上 ICAN 更加关注用户可能点击的物品是否被召回,并不在意点击的物品具体排在第几位。因此,在离线指标上,作者没有使用 AUC /MAP 这类排序指标,而是使用了 hit rate 作为指标。由于线上实际使用 top500 作为召回结果,作者主要考虑了 100,200,500 三种情况。结果如下:
图 3:离线召回实验结果
在多种指标下,ICAN 模型在成熟队列和冷启动队列上都得到了最佳的效果,其中在冷启动队列上提升更为显著。ICAN 的消融实验也说明了 Contextual Attention Layer 和 Internal Attention Layer 的有效性。线上实验结果也说明 ICAN 能够提升 CTR、list-wise CTR、阅读时长和平均点击类别数(多样性指标)等多项指标,显著提升了线上效果。
除此之外,作者还进行了两种 attention 的可视化。以图 4 为例,我们可以发现在冷启动队列(短视频队列)中进行召回时,长视频的 tag 特征域似乎起到了很大的作用,甚至高于短视频自己的 category/tag 特征域的作用权重。图 5 也说明在 internal attention 中,不同特征域之间存在一定的交互范式。这样的结果说明两点:(1)使用成熟队列信息辅助冷启动队列是很有必要的。(2)把队列信息从物品级拆分成特征域级是很有必要,因为不同队列的不同特征域之间交互模式不同。
图 4:Contextual Attention 的 heatmap
图 5:Internal Attention 的 heatmap
总结
本文提出了一个 ICAN 模型,使用多队列之间的特征域交互,辅助提升推荐系统在多队列(冷启动)召回上的效果。模型针对任务进行了特征域级别的拆分,使得不同队列之间的交互变得更为精细。ICAN 使用了直观的模型,在工业级大规模推荐数据集和线上系统中均得到了成功的验证。未来,更复杂细致的交互方式和与多任务学习/迁移学习的融合可能会是潜在的研究方向。
本文提出了一个 ICAN 模型,使用多队列之间的特征域交互,辅助提升推荐系统在多队列(冷启动)召回上的效果。模型针对任务进行了特征域级别的拆分,使得不同队列之间的交互变得更为精细。ICAN 使用了直观的模型,在工业级大规模推荐数据集和线上系统中均得到了成功的验证。未来,更复杂细致的交互方式和与多任务学习/迁移学习的融合可能会是潜在的研究方向。
本文基于 IJCAI-2020 论文《Internal and Contextual Attention Network for Cold-start Multi-channel Matching in Recommendation》,论文作者是来自腾讯微信的谢若冰、丘志杰、饶君、刘毅、张博和林乐宇研究员。
评论