推荐系统之召回:基本原理和前沿研究(2023)

前言

对工业界和学术界(截止2023-09)的相关工作进行调研,并结合自身工作经验,总结常用的召回策略和前沿研究方向。具体内容报告请见:

GitHub - BinFuPKU/CTRRecommenderModels: I have surveyed the technology and papers of CTR & Recommender System, and implemented 25 common-used models with Pytorch for reusage. (对工业界学术界的CTR推荐调研并实现25个算法模型,2023)I have surveyed the technology and papers of CTR & Recommender System, and implemented 25 common-used models with Pytorch for reusage. (对工业界学术界的CTR推荐调研并实现25个算法模型,2023) - GitHub - BinFuPKU/CTRRecommenderModels: I have surveyed the technology and papers of CTR & Recommender System, and implemented 25 common-used models with Pytorch for reusage. (对工业界学术界的CTR推荐调研并实现25个算法模型,2023)icon-default.png?t=N7T8https://github.com/BinFuPKU/CTRRecommenderModels

​​​​​​​召回基本介绍

  • 从海量的候选集合中发现用户当前感兴趣或相关的物品集合(几百到几千),过滤掉绝大多数不喜欢的物品。

  • 考虑召回通道的多样性和高覆盖率,对时延有一定要求,低准确率要求(折中)。
  • 趋势:目前双塔模型占主流,近几年召回学习模型越来越复杂(复杂程度逼近排序模型),有召回+排序融合或联合训练趋势。

召回策略

  • 非个性化召回
    • 规则策略:地理召回、热门召回……
    • 过滤:疲劳降权、黑白名单过滤、内容低质量过滤……
  • 类目、标签、关键词召回(u2c2i):
    • 原理:用户画像 -> 类目/标签/关键词 -> 物品。(考虑时间)
    • 离线建立用户画像索引库和物品画像索引库。
    • 在线根据用户得到物品兴趣偏好列表。
  • 内容相似(聚类)召回(u2c2i):
    • 原理:用户最近喜欢的物品 -> 查找相似内容(类) -> 物品。
    • 离线训练内容相似度模型,如文本BERT、图像CNN (以及考虑跨模态检索),根据物品内容相似度对物品聚类,构建向量索引。
    • 在线获取用户近期感兴趣的n_1个物品,检索其内容相似物品(约n_1k 个),计算其兴趣分数。
    • 在线按照兴趣分数进行排序取top-n_2个物品召回。
  • Look-Alike和社交关系召回:
    • 原理:物品的种子用户 -> 相似用户。
    • 离线计算用户之间的相似度,建立“用户 -> (top-k相似)用户”索引。
    • 在线获取物品最近点击用户,根据这些种子用户获取其top-k相似用户集合。

  • 协同过滤:
    • ItemCF/Swing (u2i2i)[1]:
      • 原理:r_{ui} = \sum_{j\in I_u}{like(u,j)\times sim(j,i)}
      • 离线计算物品相似度,可采用Jaccard系数、余弦、Swing(sim(i,j) = \sum_{u_1,u_2\in V}{\frac{1}{\alpha + overlap(u_1,u_2)}})等相似度,建立“物品 -> (top-k相似)物品”索引。
      • 在线获取用户近期感兴趣的n_1个物品,检索其相似物品(约n_1k 个),计算其兴趣分数。
      • 在线按照兴趣分数进行排序取top-n_2个物品召回。

    • UserCF (u2u2i):
      • 原理:r_{ui} = \sum_{u'\in N_u} {sim(u,u') \times like(u',i) },在相似度计算中可进一步对热门物品降权1 \rightarrow \frac{1}{log(1+n)}
      • 离线建立“用户-> (最近交互过)物品”索引。
      • 离线计算用户之间的相似度,建立“用户 -> (top-k相似)用户”索引。
      • 在线获取用户的top-k相似用户集合,找到用户感兴趣的物品集合。
      • 在线按照兴趣分数进行排序取top-n_2个物品召回。

    • 矩阵填充:(u2i,实践中一般效果不好)
      • 原理:矩阵分解方法MF、PMF、NMF、SVD等。
      • 离线进行矩阵分解得到用户侧嵌入和物品侧嵌入,并建立向量索引(如Faiss)。
      • 在线通过用户嵌入进行最近邻查找找到用户感兴趣的物品集合。
      • 在线按照兴趣分数进行排序取top-n_2个物品召回。

  • 知识图谱召回(u2g2i)[2]:
    • 原理:基于知识图谱发现用户节点触达的物品。
    • 离线进行矩阵分解得到用户侧嵌入和物品侧嵌入,并建立向量索引(如Faiss)。
    • 在线通过用户嵌入进行最近邻查找找到用户感兴趣的物品集合。
    • 在线按照兴趣分数进行排序取top-n_2个物品召回。

  • 双塔匹配模型 (u2i):
    • 损失函数:点(交叉熵)、对(BPR loss / triplet hinge loss)、列表。
    • 正负样本:正样本为用户点击物品,负样本可为没有被召回和排序被淘汰掉的物品。
    • 离线训练得到用户侧嵌入和物品侧嵌入,并建立向量索引(如Faiss)。
    • 在线通过用户嵌入进行最近邻查找找到用户感兴趣的物品集合。
    • 在线按照兴趣分数进行排序取top-n_2个物品召回。

    • 自监督增强双塔模型:长尾物品的表征学的差。利用自监督学习来增强表征,随机mask部分特征进行预测。附加一个自监督损失。
    • 双塔模型魔改:特征交叉和模型集成等。

  • 多兴趣召回模型(u2i & i2i)[3~6]:
    • 原理:挖掘用户行为序列中存在多种兴趣偏好,召回走top-k路由通路(软聚类)。
    • MIND [3]:采用胶囊网络来建模多个兴趣点,采用其路由机制映射到对应兴趣点。

    • ComiRec [4]:通过自注意力机制从行为序列中得到用户的多个兴趣点。

    • SDM [7]:挖掘长短期兴趣偏好,七天行为和当前session内行为。

    • SIM [8]:从用户历史行为序列中检索与target item最相似top-k的历史物品。类似工作[9]。

    • 深度树匹配模型TDM[10]:用户兴趣度量进行层次化建模与beamsearch检索。

    • DemiNet [11]:用户行为序列存在噪音和稀疏问题(自监督)且多个兴趣点存在关系。
    • MISS [12]:用户行为序列上的特征(行)和兴趣(列,相邻行为CNN)级别自监督学习。

    • PDN [13]:集合双塔模型和i2i历史行为序列模型。

    • 其他召回策略:分层召回。
      • 物理维度:城市、业务等。
      • 用户分群:会员和非会员等。

负采样和去重

  • 负样本:
    • 简单负样本:未被召回的物品,占绝大多数,几乎为全体物品。(50%)
    • 困难负样本:排序淘汰的物品。(50%)
    • 极困难负样本:曝光未点击的物品,用户喜欢但未点击不能作为召回负样本,损害召回性能。
  • 负采样策略 [14]:
    • 热度采样:如p \propto pv^{0.75},采样概率可转化为权重。
    • Batch内负采样。
    • 其他策略:地域敏感进行地域采样(同城、商圈等)。
  • 曝光去重复:
    • Bloom 过滤器:多个哈希映射函数,没命中一定不在曝光集合。

训练流程

  • 数据特征预处理
    • 获取并过滤T+2天离线数据(spark/hive实现,根据业务特点设计T,如BOSS直聘采用7+2)。
    • 构建特征集(验证特征有效性)。
    • 构建正负样本集(不同采样比例)。
  • 模型分布式训练
    • 基于TF2.0或pytorch实现模型。
    • 在分布式集群或者多GPU卡训练(模型一般迭代2~3轮就会收敛,耗时几小时)。
    • 调优模型(特征工程+模型架构等,这部分耗时较长)并评估效果。
    • 保存模型训练过程日志和模型文件(包括嵌入表并利用Faiss/ES等ANN工具构建索引)。
  • 在线推理:
    • 利用RPC调用模型服务TF-serving。
    • 实时特征获取、拼接和推理。

未来探索方向

  • 随着算力暴力提升,召回模型越来越复杂,融合后续排序任务。
  • 深挖各种召回模式路径并进行有效组合,考虑多样性和相关性。
  • 模型结构探索,多目标多任务条件下探索等。
  • 用户历史行为序列中多兴趣挖掘和快速检索等。
  • 构建更高质量的负样本。
  • 长尾物品和新/低活用户冷启动问题。
  • B端和C端的优化目标、生态调控,深挖系统优化目标。
  • 基于大语言模型(LLM)的召回研究。

[1] Large Scale Product Graph Construction for Recommendation in E-commerce, 2020.

[2] KGAT: Knowledge Graph Attention Network for Recommendation, KDD 2019.

[3] Multi-Interest Network with Dynamic Routing for Recommendation at Tmall, 2019.

[4] Controllable Multi-Interest Framework for Recommendation, KDD 2019.

[5] Sparse-Interest Network for Sequential Recommendation, WSDM 2021.

[6] Multi-task Learning Model based on Multiple Characteristics and Multiple Interests for CTR prediction, 2022.

[7] SDM: Sequential Deep Matching Model for Online Large-scale Recommender System, CIKM 2019.

[8] Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click-Through Rate Prediction, 2020.

[9] End-to-End User Behavior Retrieval in Click-Through Rate Prediction Model, 2021.

[10] Learning Tree-based Deep Model for Recommender Systems, KDD 2019.

[11] DemiNet: Dependency-Aware Multi-Interest Network with Self-Supervised Graph Learning for Click-Through Rate Prediction, AAAI 2022.

[12] MISS: Multi-Interest Self-Supervised Learning Framework for Click-Through Rate Prediction, ICDE 2022.

[13] Path-based Deep Network for candidate item matching in recommenders, SIGIR 2021.

[14] Sampling-bias-corrected neural modeling for large corpus item recommendations, RS 2019.

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值