前言
对工业界和学术界(截止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)https://github.com/BinFuPKU/CTRRecommenderModels
召回基本介绍
- 从海量的候选集合中发现用户当前感兴趣或相关的物品集合(几百到几千),过滤掉绝大多数不喜欢的物品。
- 考虑召回通道的多样性和高覆盖率,对时延有一定要求,低准确率要求(折中)。
- 趋势:目前双塔模型占主流,近几年召回学习模型越来越复杂(复杂程度逼近排序模型),有召回+排序融合或联合训练趋势。
召回策略
- 非个性化召回
- 规则策略:地理召回、热门召回……
- 过滤:疲劳降权、黑白名单过滤、内容低质量过滤……
- 类目、标签、关键词召回(u2c2i):
- 原理:用户画像 -> 类目/标签/关键词 -> 物品。(考虑时间)
- 离线建立用户画像索引库和物品画像索引库。
- 在线根据用户得到物品兴趣偏好列表。
- 内容相似(聚类)召回(u2c2i):
- 原理:用户最近喜欢的物品 -> 查找相似内容(类) -> 物品。
- 离线训练内容相似度模型,如文本BERT、图像CNN (以及考虑跨模态检索),根据物品内容相似度对物品聚类,构建向量索引。
- 在线获取用户近期感兴趣的个物品,检索其内容相似物品(约 个),计算其兴趣分数。
- 在线按照兴趣分数进行排序取top-个物品召回。
- Look-Alike和社交关系召回:
- 原理:物品的种子用户 -> 相似用户。
- 离线计算用户之间的相似度,建立“用户 -> (top-k相似)用户”索引。
- 在线获取物品最近点击用户,根据这些种子用户获取其top-k相似用户集合。
- 协同过滤:
- ItemCF/Swing (u2i2i)[1]:
- 原理:
- 离线计算物品相似度,可采用Jaccard系数、余弦、Swing()等相似度,建立“物品 -> (top-k相似)物品”索引。
- 在线获取用户近期感兴趣的个物品,检索其相似物品(约 个),计算其兴趣分数。
- 在线按照兴趣分数进行排序取top-个物品召回。
-
- UserCF (u2u2i):
- 原理:,在相似度计算中可进一步对热门物品降权。
- 离线建立“用户-> (最近交互过)物品”索引。
- 离线计算用户之间的相似度,建立“用户 -> (top-k相似)用户”索引。
- 在线获取用户的top-k相似用户集合,找到用户感兴趣的物品集合。
- 在线按照兴趣分数进行排序取top-个物品召回。
-
- 矩阵填充:(u2i,实践中一般效果不好)
- 原理:矩阵分解方法MF、PMF、NMF、SVD等。
- 离线进行矩阵分解得到用户侧嵌入和物品侧嵌入,并建立向量索引(如Faiss)。
- 在线通过用户嵌入进行最近邻查找找到用户感兴趣的物品集合。
- 在线按照兴趣分数进行排序取top-个物品召回。
- 知识图谱召回(u2g2i)[2]:
- 原理:基于知识图谱发现用户节点触达的物品。
- 离线进行矩阵分解得到用户侧嵌入和物品侧嵌入,并建立向量索引(如Faiss)。
- 在线通过用户嵌入进行最近邻查找找到用户感兴趣的物品集合。
- 在线按照兴趣分数进行排序取top-个物品召回。
- 双塔匹配模型 (u2i):
- 损失函数:点(交叉熵)、对(BPR loss / triplet hinge loss)、列表。
- 正负样本:正样本为用户点击物品,负样本可为没有被召回和排序被淘汰掉的物品。
- 离线训练得到用户侧嵌入和物品侧嵌入,并建立向量索引(如Faiss)。
- 在线通过用户嵌入进行最近邻查找找到用户感兴趣的物品集合。
- 在线按照兴趣分数进行排序取top-个物品召回。
-
- 自监督增强双塔模型:长尾物品的表征学的差。利用自监督学习来增强表征,随机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]:
- 热度采样:如,采样概率可转化为权重。
- 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.