背景
推荐系统在业界众多领域都有十分广泛的应用,如新闻、音乐、短视频、电商等领域。在O2O本地生活领域中,用户使用推荐服务包含了多种意图,比如到餐找店、找优惠、买团购券、定外卖等等。以阿里巴巴口碑APP首页的“为你定制”推荐Feed服务为例,理解用户所处的场景对给用户提供精准实时的推荐服务十分重要。这也代表了推荐领域的一个重要方向——场景化推荐(Context-Aware Recommendation)。场景化中场景指的是用户在何时、何地、什么环境、和什么人在一起使用本地生活的服务,这不仅包含时间、地点、距离等可以直接观测的显式场景信息(Explicit Context),还包含很多隐式的场景信息(Implicit Context),比如用户的实时意图偏好,状态(单人、多人),环境,价格和距离偏好等等,如(工作餐、多人聚会等等)。
问题和挑战
工业界的推荐系统大致分为召回(Match)、排序(Rank)和混排/重排序(Rerank)等几个阶段。其中召回(Match)阶段负责依据多个召回条件查询圈选一些用户感兴趣的备选物品列表;在排序阶段会预估用户对每个备选物品的打分,如点击率(CTR)、转化率(CVR)、偏好分score等等。在O2O领域推荐,场景化信息可以广泛应用于召回、排序、重排/混排阶段。我们研究的问题主要是如何在排序模型中理解用户场景的信息,尤其是隐式场景(Implicit Context)这个复杂且重要的问题。这对O2O本地生活领域的精准推荐是一个重要的挑战。
解决方案
问题建模
为了对用户的隐式场景进行建模,我们提出了Mixture Attentional Constrained Denoise AutoEncoder (MACDAE基于混合注意力约束的降噪自编码)模型,学习用户所处的复杂场景在多个隐式空间上的表达。同时,这部分隐式场景的表达也被加入到推荐系统排序阶段的CTR(点击率)或CVR(转化率)的深度学习打分模型中,来提升了模型打分的准确性(通过AUC/NDCG@K等指标评估)。我们的解决方案包括两部分:一、学习隐式场景Ci的向量表达。二、将隐式场景表达加入到最终端到端的打分模型中,预测用户U对某个商品I的打分(CTR/CVR/rating等等)。推测隐式场景CI的具体输入包括三元组<用户U, 商品I, 显示场景Ce>的特征。我们要建模的隐式场景Ci不是某个单一场景,而是多个复杂场景的组合。假设隐式场景包含K个不同的Component,由K个不同子空间上的投影构成。Cik代表隐式场景第K个空间上的投影,代表不同子空间上投影的重要性。(加权组合最终用concat的方式来表示),gk(.) 是我们要学习的第K个隐式向量表达的函数。
具体打分模型:
MACDAE模型结构
- MACDAE(基于混合注意力约束的降噪自编码)模型结合了AutoEncoder自编码模型的编码—解码的结构和多头注意力Multi-Head Attention机制。其中编码器的部分利用了K个并行的Encoder分别学习原始输入X(用户特征U,打分物品特征I以及他们的交互信息User-Item的Interaction)在不同子空间上的投影Ci,代表场景的不同组成部分。同时利用Attention注意力机制学习不同组成部分对最终隐式场景的重要性贡献Ce。完整的隐式场景的表达h为K个不同组成的加权拼接concatenation得到。
解码器Decoder部分从隐式场景表达h中复现原始输入,使得隐式场景表达h包含完整的信息。此外,在实际训练过程中,为了避免多头Encoder的结构学习到子空间过于相似,我们在最终的损失函数Loss(原始输入和复现输出的square loss)上加入了多头(Multi-Head)之间的Cosine相似度约束作为惩罚项。
- 为了对比不同结构的隐式场景建模的效果,我们同时对比了多头版本的降噪自编码DAE(Multi-Head DAE)和变分自编码VAE (Multi-Head VAE)模型作为Baseline模型。发现我们提出的MACDAE(基于混合注意力约束的降噪自编码)模型效果在口碑推荐数据集,Yelp数据集和点评数据集上离线指标效果更优。同时在“为你定制”栏目线上进行在线AB测试,发现引入隐式场景建模的排序模型获得了在线2.9%的CTR相对提升和5.6%的CVR相对提升。
实验数据和代码
代码库: https://github.com/rockingdingo/context_recommendation
数据集:Yelp公开数据集(Version7实验,现在更新到Version9了):
https://www.kaggle.com/yelp-dataset/yelp-dataset
老版本Yelp数据集 version 7下载:
链接:https://pan.baidu.com/s/1EUm05wn88bDru-LTxuCETw
密码:f1ej
模型结构图