推荐场景中召回模型的演化过程
一般的推荐系统主要包括召回、排序和后续的业务机制(重排序、多样性保证、用户体验保证等等)这三大模块,而其中召回模块主要负责根据用户和item的特征,从众多待推荐的候选item中初步筛选出用户可能感兴趣的item。一般而言召回模块都是多路并发的,各路的不同召回模型之间互不影响。本文主要关注于最近几年,特别是深度学习广泛用于推荐场景之后召回模型的一个演化过程。
一. 传统方法:基于协同过滤
协同过滤可分为基于用户的协同过滤、 基于物品的协同过滤,基于模型的协同过滤(比如MF矩阵分解等)。这部分不详细讲解,网上资料很多。这里说下基于item的协同过滤方法吧,主要思想是:根据两个item被同时点击的频率来计算这两个item之间的相似度,然后推荐用户历史行为中各个item的相似相关item。虽然基于用户的协同过滤召回方法具有简单、性能较高,因此在实际的推荐场景中用途十分广泛。不过也是有天然的缺陷:召回结果的候选集item限定在用户的历史行为类目中,并且难以结合候选item的Side Information(比如brand,品类一些id信息),导致其推荐结果存在发现性弱、对长尾商品的效果差等问题,容易导致推荐系统出现“越推越窄”的问题,制约了推荐系统的可持续发展。
二. 单embedding向量召回
这部分工作主要介绍单embedding向量召回(每个user和item在一个时刻只用一个embedding向量去表示)的一些经典方法,其主要思想为:将user和item通过DNN映射到同一个低维度向量空间中,然后通过高效的检索方法去做召回。
- Youtube DNN召回
使用特征:用户观看过视频的embedding向量、用户搜索词的embedding向量、用户画像特征、context上下文特征等。
训练方式:三层ReLU神经网络之后接softmax层,去预测用户下一个感兴趣的视频,输出是在所有候选视频集合上的概率分布。训练完成之后,最后一层Relu的输出作为user embedding,softmax的权重可当做当前预测item的embedding表示。
线上预测:通过userId找到相应的user embedding,然后使用KNN方法(比如faiss)找到相似度最高的top-N条候选结果返回。
2. 双塔模型召回
双塔模型基本是:两侧分别对user和item特征通过DNN输出向量,并在最后一层计算二个输出向量的内积。
例如YouTube今年刚发的一篇文章就应用了经典的双塔结构:
三. 多embedding向量召回-用户多兴趣表达
- Multi-Interest Network with Dynamic Routing模型
背景:电商场景下用户行为序列中的兴趣分布是多样的,如下图用户A和B的点击序列商品类别分布较广,因此如果只用一个embedding向量来表示用户的兴趣其表征能力是远远不够的。所以需要通过一种模型来建模出用户多个embedding的表示。
MIND模型通过引入capsule network的思想来解决输出多个向量embedding的问题,具体结构如下图:
如上图:
训练:Multi-Interest抽取层负责建模用户多个兴趣向量embedding,然后通过Label-aware Attention 结构对多个兴趣向量加权。这是因为多个兴趣embedding和待推荐的item的相关性肯定不同(这里的思想和DIN模型如出一辙)。其中上图中的K,V都表示用户多兴趣向量,Q表示待推荐item的embedding表示,最终用户的embedding表示为:
公式中的ei表示item embedding,Vu表示Multi-Interest抽取层输出的用户多个兴趣向量embedding。
然后使用Vu和待推荐item embedding,计算用户u和商品i交互的概率,计算方法和YouTube DNN一样:
线上serving:在线计算用户的多个兴趣向量后,每个兴趣向量embedding通过KNN检索得到最相似的Top-N候选商品集合。这里有个问题大家思考下?得到多个兴趣向量后通过权重将这些向量的embedding累加起来成为一个(表示为多个向量的加权和),然后只去线上检索这一个embedding的Top-N相似,大家觉得这样操作可以吗?不可以的原因又是什么呢?
四. Graph Embedding
- 阿里Graph Embedding with Side information
传统的graph embedding过程如下图:
其实就是通过 构图-随机游走得到序列-word2vec训练 三部曲得到每个item的embedding表示。但是这样训练出来的模型会存在冷启动问题。就是那些出现次数很少或者从来没在序列中出现过的item embedding无法精确的表征。本文通过添加side information(比如商品的种类、品牌、店铺id等)等辅助类信息来缓解该问题,如下图SI 1 - SI n表示n-1个辅助id特征的embedding表示。
该模型的亮点是考虑了不同的side information在最终的aggregated embeddings中所占的权重是不同的,最后aggregated embeddings计算公式如下,其中分母用来归一化。
2. GraphSAGE: Inductive representation learning on large graphs
经典的图卷积神经网络GCN有一个缺点:需要把所有节点都参与训练才能得到node的embedding,无法快速得到新node的embedding。这是因为添加一个新的node,意味着许多与之相关的节点的表示都应该调整。所以新的graph图会发生很大的变化,要想得到新的node的表示,需要对新的graph重新训练。
GraphSAGE的基本思想:学习一个node节点的信息是怎么通过其邻居节点的特征聚合而来的。 算法如下:
大致流程是:对于一个node需要聚合K次,每次都通过聚合函数aggregator将上一层中与当前node有邻接关系的多个nodes聚合一次,如此反复聚合K次,得到该node最后的特征。 最下面一层的node特征就是输入的node features。
五. 结合用户长期和短期兴趣建模
- SDM: Sequential Deep Matching Model for Online Large-scale Recommender System
背景:在电商场景中,用户都会有短期兴趣和长期兴趣,比如在当前的浏览session内的一个点击序列,用户的需求往往是明确的,这属于用户短期的兴趣。另外用户还有一些长期的兴趣表达,比如品牌、店铺的偏好。因此通过模型分别建模用户的长、短期兴趣是有意义的。
上图中 表示用户短期兴趣向量, 表示用户的长期兴趣向量,这里需要注意的是,在求长期和短期用户兴趣向量时都使用了Attention机制,Attention的Query向量 表示user 的embedding,用的是基本的用户画像,如年龄区间、性别、职业等。得到长期和短期用户向量后,通过gru中的gate机制去融合两者:
上面的公式输出表示用户的embedding表示,而item的embedding表示和YouTube DNN一样,可以拿softmax层的权重。其实也可用graph embedding先离线训练好item的embedding表示。
线上预测:通过user id找到相应的user embedding,然后使用KNN方法(比如faiss)找到相似度最高的top-N条候选结果返回。
2. Next Item Recommendation with Self-Attention
本文亮点是同时建模用户短期兴趣(由self-attention结构提取)和用户长期兴趣。其短期兴趣建模过程:使用用户最近的L条行为记录来计算短期兴趣。可使用X表示整个物品集合的embedding,那么,用户u在t时刻的前L条交互记录所对应的embedding表示如下:
其中每个item的embedding维度为d,将 作为transformer中一个block的输入:
这里需要注意和传统transformer的不同点:
- 计算softmax前先掩掉 矩阵的对角线值,因为对角线其实是item与本身的一个内积值,容易给该位置分配过大的权重。
- 没有将输入 乘以 得到 ,而是直接将输入 乘以softmax算出来的score。
- 直接将embedding在序列维度求平均,作为用户短期兴趣向量。
self-attention模块只使用用户最近的L个交互商品作为用户短期的兴趣。那么怎么建模用户的长期兴趣呢?可认为用户和物品同属于一个兴趣空间,用户的长期兴趣可表示成空间中的一个向量,而某物品也可表示为成该兴趣空间中的一个向量。那如果一个用户对一个物品的评分比较高,说明这两个兴趣是相近的,那么它们对应的向量在兴趣空间中距离就应该较近。这个距离可用平方距离表示:
其中U是用户的兴趣向量,V是物品的兴趣向量
综合短期兴趣和长期兴趣,可得到用户对于某个物品的推荐分,推荐分越低,代表用户和物品越相近,用户越可能与该物品进行交互。
六. TDM深度树匹配召回
详细讲解可以参考我之前的一篇文章: https://zhuanlan.zhihu.com/p/78941783
参考文献:
- https://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/45530.pdf
- https://dl.acm.org/citation.cfm?id=3346996
- https://arxiv.org/pdf/1904.08030.pdf
- [https://arxiv.org/pdf/1803.02349.pdf](https://zshipu.com/t?url=https%3A%2F%2Flink.zhihu.com%2F%3Ftarget%3Dhttps%253A%2F%2Farxiv
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%8E%A8%E8%8D%90%E5%9C%BA%E6%99%AF%E4%B8%AD%E5%8F%AC%E5%9B%9E%E6%A8%A1%E5%9E%8B%E7%9A%84%E6%BC%94%E5%8C%96%E8%BF%87%E7%A8%8B/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com