11 | 召回层:如何快速又准确地筛选掉不相关物品?
该思维导图由 AI 生成,仅供参考
召回层和排序层的功能特点
- 深入了解
- 翻译
- 解释
- 总结
推荐系统中的召回层是如何快速又准确地筛选掉不相关物品的?本文介绍了推荐系统中召回层的重要性以及其功能特点。召回层通过快速、准确地过滤出相关物品,缩小候选集,为排序层提供精准的推荐列表排序。文章从单策略召回方法入手,介绍了通过制定一条规则或利用简单模型来快速召回可能的相关物品。虽然单策略召回简单直观且计算速度快,但其局限性在于难以满足用户多元的兴趣需求。文章还提到了召回层和排序层的功能特点,以及召回层设计中需要平衡计算速度和召回率的矛盾。文章还介绍了多路召回策略和基于Embedding的召回方法。多路召回策略通过采用不同的策略、特征或简单模型,分别召回一部分候选集,然后混合候选集供后续排序模型使用,权衡了计算速度和召回率。而基于Embedding的召回方法利用物品和用户Embedding相似性来构建召回层,融合了多种策略,具有连续性评分和简单的在线服务计算。整体而言,本文通过介绍召回层的功能特点和不同的召回方法,帮助读者了解了推荐系统中召回层的重要性和工作原理。
《深度学习推荐系统实战》,新⼈⾸单¥68
全部留言(47)
- 最新
- 精选
- 邓生关于使用embedding进行召回,其实我搞不懂为什么是用户和物品的embedding计算相似度,不应该是物品跟物品进行相似度计算,用户跟用户之间进行相似度计算吗?为什么物品和人之间可以直接进行embedding相似度计算,这在逻辑上想不通。
作者回复: 因为这里user的embedding是通过把历史观看物品进行average得到的,所以他们在一个向量空间内,可以直接进行相似度计算。
2020-11-26657 - Geek_63ee39请教老师一个问题,文中提到: “多路召回中使用的“兴趣标签”“热门度”“流行趋势”“物品属性”等信息都可以作为 Embedding 方法中的附加信息(Side information),融合进最终的 Embedding 向量中” 我想有两种实现方式: 1. 对于用户高评分(大于3.5)的电影序列,通过item2vec得到每个物品的embedding向量(假设长度为10),并在向量第11位添加物品的兴趣标签,第12位添加物品热门度,依次类推。 2. 不采用item2vec,而是其他某种方式将物品所有维度的信息(包括“兴趣标签”“热门度”“流行趋势”“物品属性”等)统一地进行embedding。 对于第一种方式,每一个维度的附加信息权重相同,这是否合理?另外对于电影类型这种类别型特征,采用multi-hot编码附加到embedding向量后面,是否合理。 对于第二种方式,我还不知道怎样实现。 请问老师,实际生产中较好的实现方式是怎样的呢?
作者回复: 生产环境中一般不使用第一种方法。第二种方法可以参考阿里的EGES,大致的思路是把这些原始特征作为输入向量,用隐层的输出作为物品的embedding。 有兴趣的话可以阅读下面的论文原文。 https://github.com/wzhe06/Reco-papers/blob/master/Embedding/%5BAlibaba%20Embedding%5D%20Billion-scale%20Commodity%20Embedding%20for%20E-commerce%20Recommendation%20in%20Alibaba%20%28Alibaba%202018%29.pdf
2020-10-2834 - gallup请问老师,多路召回中,topk除了根据经验值确定,业界通用的是怎么确定k得大小呢
作者回复: 在系统延迟允许的情况下,其实k取的越大越好。 一般来说,如果最后的推荐结果需要n条,k取5-10n是比较合适的。
2020-11-12229 - 萬里長空老师,关于EGES的训练,试了下,由于电商领域商品维度非常大,即使hash后也很大,这导致训练非常慢,这个一般怎么解决啊?
作者回复: 非常好的业界实践的问题。其实方法无非是我们提到过的几种。 1、把商品embedding进行预训练,再跟其他side information特征一起输入EGES。 2、像你说的hash方法 3、商品的聚类后输入,比如非常类似的商品,可以用一个商品id替代,当作一个商品来处理。这个方法airbnb embedding的论文讲的非常好。
2020-10-2923 - Geek_seven请问老师,在业界中,通常的做法是会将embedding召回替换掉多路召回,还是会将embedding召回作为多路召回中一路召回呢?谢谢~
作者回复: 后者
2021-08-14215 - Jerome请问下老师,在生成用户embedding的过程中我看你的逻辑是将该用户所有观看电影的embedding通过拉链进行叠加后最终生成,请问这种方法有什么根据吗或者说是原理呢,还是说这个是基于经验呢?
作者回复: 这是最常用最简单的user embedding生成方法。之前我们说过embedding之间是可以进行运算的。所以用用户喜欢的物品的embedding平均去代表这个用户是非常直观且实用的。
2020-11-17414 - 王宁老师,你好,我看了您推荐给其他同学的阿里的EGES算法的论文,那个论文里面的EGES模型图的最底层是Sparse feature,论文中是说这一层是比较倾向于用one- hot编码的,不管side information的one-hot编码,一般item的数量会很多很多,对item本身的向量表示直接用one-hot的话,那embedding matrix是不是会很大,这样是合适的吗?我不确定自己是不是看懂了,希望老师可以帮我解答一下,谢谢老师!
作者回复: 是的,one-hot特征肯定会让embedding matrix很大,但就是这样使用的,因为我们就是想求解每一个维度上对应item的embedding。 这也就是为什么说embedding层是神经网络中最耗时的部分的原因。
2020-11-1010 - Geek_e0d66a请问老师,如果基于兴趣标签做召回,同一个物品,有多个标签,而用户也计算了出了多个兴趣标签,那么怎么做用户的多兴趣标签与物品的最优匹配呢?还有物品的标签有多层,那么怎么利用上一层的标签呢?
作者回复: 这是个好问题。简单的做法是把兴趣标签转换成multihot向量,然后就可以计算出用户和物品的相似度了。 复杂一点也可以计算每个兴趣标签的tfidf,为标签分配权重后,再转换成multihot向量。 如果标签有多层,也不妨碍把多层标签全部放到multihot向量中,高层标签的权重可以适当降低。这也是思路之一。 希望你自己也能有类似的思考。
2020-10-29510 - Geek_63ee39课后思考1: 1. 在类SimilarMovieProcess中实例化一个线程池ThreadPoolExecutor作为静态成员变量 2. 方法multipleRetrievalCandidates中的候选集candidateMap使用ConcurrentHashMap替代HashMap 3. 风格类型、高分评价、最新上映三种召回的过程使用线程池实例(共三个线程)去执行 4. 判断三个线程执行完后返回结果 不知道这种方式有没有不足?
作者回复: 基本就是这样的思路,生产环境中要做好线程池的维护和一些参数的调优。 可以的话欢迎提交多线程版本的pull request到SparrowRecsys项目
2020-10-299 - 大钰儿如果新item特别多(每秒可能几十到上百)对item展示的实时性要求较高(小于五分钟就需要曝光)这些item的embedding该如何更新呢?
作者回复: 这还是冷启动问题,我之前有过类似的回复,可以参考。 另外其实我不建议如此多的新item还采用embedding的方案,没有必要,可以考虑在重排层加入这些新鲜的item。用一些基本的特征参与重排,简单模型虽然传统,但在特殊的场景下也经常采用。
2020-11-028