[推荐]多路召回 && 融合排序

6,287 阅读11分钟

我们来详细拆解一下推荐系统中的多路召回融合排序,以及为什么需要多路召回。这是构建现代大规模推荐系统的核心架构模式(“召回+排序”)。

核心目标: 在百万、千万甚至亿级的物品库(Item Pool)中,为特定的用户(User)在特定的场景(Context)下,快速、精准地筛选出几十到几百个最相关的物品,并最终展示给用户少量(通常10-20个)最可能产生正反馈(点击、观看、购买等)的物品。

一、 多路召回

  1. 什么是召回?

    • 召回是推荐流程的第一阶段。
    • 它的任务是从海量的全量物品库中,快速地筛选出与当前用户可能相关的一个候选物品子集(Candidate Set)。
    • 这个子集的规模通常在几百到几千的量级(远小于全量库,但也远大于最终展示给用户的数量)。
    • 核心挑战: 如何在可接受的时间(通常是几十毫秒级别)内,从亿级物品中找到几千个相关的物品?直接使用复杂的排序模型遍历全库计算得分是完全不现实的(计算量太大,延迟太高)。
  2. 为什么需要“多路”?

    • 单一策略的局限性: 没有任何一种召回策略能完美覆盖用户所有可能的兴趣点。用户兴趣是多维度、复杂多变的:
      • 兴趣广度: 用户可能同时喜欢科技、体育、美食。
      • 兴趣深度: 用户可能对某个小众领域有深入兴趣。
      • 兴趣新鲜度: 用户可能有实时兴趣(刚搜索了“无人机”),也有长期兴趣(一直喜欢科幻电影)。
      • 物品特性: 物品本身也有多种属性(类别、标签、作者、地域、热度等)。
      • 冷启动: 新用户、新物品缺乏历史行为数据。
    • 覆盖率和多样性的需求: 单一策略(比如只基于用户最近点击)可能陷入信息茧房,或者遗漏重要的长尾、新颖、多样化的物品。
    • 性能与精度的权衡: 不同召回策略在计算效率召回精度上各有优劣。有些策略很快但较粗糙(如基于热门),有些策略较准但计算稍慢或覆盖有限(如基于复杂模型或深度兴趣)。
  3. 多路召回的定义:

    • 为了解决单一策略的局限性,推荐系统会并行运行多种不同的召回策略,每路策略都像一个独立的“捕手”,根据自己的规则和擅长领域去“捞取”一部分候选物品。
    • 每路召回策略专注于利用特定类型的数据特定的计算模型,从特定角度去理解用户或物品的相似性。
    • 最终,将各路召回的结果合并(去重),形成一个更全面、更多样化的候选集,交给后续的排序阶段处理。
  4. 常见的召回策略(“路”)举例:

    • 基于协同过滤的召回:
      • UserCF: 找到与目标用户兴趣相似的其他用户,把这些相似用户喜欢的物品(但目标用户没看过)召回。
      • ItemCF: 找到目标用户历史喜欢/交互过的物品,然后召回与这些物品相似的其他物品。
      • 矩阵分解: 通过隐因子模型(如ALS)得到用户向量和物品向量,用向量近邻搜索(如Faiss)召回用户向量最邻近的物品向量。
    • 基于内容的召回:
      • 利用物品本身的元信息(标题、描述、标签、类别、作者、关键词等)和用户的画像/历史行为(喜欢的标签、类别、关键词)。
      • 计算用户画像与物品内容的相似度(如TF-IDF + 余弦相似度、Embedding相似度),召回相似度高的物品。
      • 特别擅长解决冷启动问题(新物品可以被内容召回)。
    • 基于向量的召回(Embedding召回):
      • 使用深度学习模型(如DSSM, YouTube DNN, Graph Embedding)将用户和物品映射到同一低维向量空间。
      • 计算用户向量(基于用户历史行为、画像、上下文实时生成)与物品向量的相似度(内积、余弦),通过高效的向量近邻搜索召回最相似的物品。
      • 能捕捉复杂的非线性关系,是当前主流的强召回方式。
    • 基于实时行为的召回:
      • 捕捉用户最近几分钟或几秒内的点击、搜索、播放等行为。
      • 快速召回与这些实时行为直接相关(如相同物品ID、相同作者/发布者、相同搜索词、相似内容)的物品。
      • 满足用户的即时兴趣,提升推荐的时效性和相关性。
    • 基于热门的召回:
      • 召回当前全局热门、分区域热门、分品类热门的物品。
      • 保证推荐的时效性覆盖率,对新用户友好,也能作为其他策略失效时的保底。
    • 基于地理位置/社交关系的召回:
      • 召回用户附近地点相关的物品(如本地新闻、附近商家)。
      • 召回用户好友喜欢或分享的物品。
    • 基于特定业务规则的召回:
      • 满足特定业务目标,例如召回新品、召回促销商品、召回特定运营位要求的物品等。
    • 探索召回:
      • 故意召回一些用户不太可能接触到的、但有一定潜力的物品(如冷门、低曝光但质量不差的物品),用于打破信息茧房发现新兴趣。常用方法如Bandit算法。
  5. 多路召回的优势:

    • 提升召回覆盖率: 覆盖用户更广泛的兴趣点。
    • 保证多样性: 不同策略召回不同类型的物品,避免结果过于同质化。
    • 平衡精度与效率: 可以组合使用高效但较粗糙的策略(如热门)和较慢但更精准的策略(如深度向量召回),在整体延时可控的情况下达到更好的效果。
    • 模块化与可扩展: 新策略可以很容易地作为一路加入,旧策略可以下线或调整权重,系统灵活度高。
    • 鲁棒性: 某一两路召回失败或效果不佳时,其他路可以弥补,保证整体候选集的质量。
    • 解决冷启动: 内容召回、热门召回等策略能有效处理新用户和新物品。

二、 融合排序

  1. 什么是排序?

    • 排序是召回之后的第二阶段。
    • 它的任务是对多路召回产生的候选集(几百到几千个物品)进行精细化打分和排序
    • 目标是根据用户在当前场景下的真实兴趣和反馈概率,选出最可能产生正反馈(如点击、转化)的少量(如Top 10-100)物品,并按得分从高到低排列,最终呈现给用户。
  2. 为什么需要融合排序?

    • 候选集来源混杂: 候选集来自多路召回,每路策略的排序逻辑和目标不同(ItemCF按物品相似度,热门按热度,向量召回按向量距离),它们各自的排序结果无法直接比较。需要在一个统一的框架下重新评估所有候选物品。
    • 利用更丰富的特征: 排序阶段可以使用比召回阶段更全面、更精细的特征
      • 用户特征: 长期画像(性别、年龄、地域、职业)、历史行为统计(点击率、品类偏好)、实时行为序列(最近点击/搜索的物品ID序列)。
      • 物品特征: 内容特征(文本、图像Embedding)、统计特征(历史CTR、热度、点赞收藏数)、属性特征(类别、标签、价格)。
      • 上下文特征: 时间、地点、设备、网络环境、当前页面/场景。
      • 交叉特征: 用户与物品的交互特征(用户对该物品所属类别的历史偏好、用户历史对相似物品的行为)、物品与物品的关系(相似度)。
      • 召回源特征: 该物品是从哪一路(或多路)召回通道出来的(这本身就是一个重要的信号)。
    • 建模复杂目标: 排序模型(通常是复杂的机器学习模型,如GBDT、深度神经网络)可以学习用户行为(点击、转化、观看时长、点赞、分享等)背后复杂的非线性关系,预测更精准的反馈概率(如pCTR - 预估点击率, pCVR - 预估转化率)。
    • 业务目标融合: 排序阶段可以更容易地融合多个业务目标(如点击率、转化率、时长、多样性、新颖性、商业价值),通过模型结构(如多任务学习)或损失函数设计(如加权)来实现。
  3. 融合排序的关键技术:

    • 特征工程: 提取和组合高质量的特征是排序模型效果的基础。
    • 排序模型:
      • Pointwise: 将排序问题转化为分类(是否点击)或回归(点击概率)问题,为每个<用户, 物品>对单独打分。常用模型如LR, GBDT。
      • Pairwise: 学习物品对的相对顺序(物品A是否比物品B更相关)。常用模型如RankSVM, RankNet。
      • Listwise: 直接优化整个排序列表的效果(如NDCG)。常用模型如LambdaMART, ListNet, 以及集成Listwise Loss的深度模型。
      • 深度学习模型: 当前主流。能自动学习特征表示和高阶交叉特征,处理海量特征和序列信息。经典模型如:
        • Wide & Deep: 结合记忆(Wide部分)和泛化(Deep部分)。
        • DeepFM: 用FM层替代Wide部分,自动学习低阶和高阶特征交叉。
        • DIN: 引入注意力机制,对用户历史行为序列进行加权求和,捕捉与当前候选物品相关的兴趣。
        • DIEN: 在DIN基础上引入GRU模拟兴趣演化。
        • MMOE/ESMM/PLE: 处理多任务学习(如同时优化CTR和CVR)。
    • 在线预测: 训练好的模型需要部署到线上,对候选集进行毫秒级实时打分预测。

三、 为什么要多路召回?总结与升华

  1. 解决“大海捞针”的效率问题: 这是最根本的原因。全库遍历排序在工程上不可行。召回将问题规模从亿级降到千级,使得后续精细排序成为可能。
  2. 应对用户兴趣的复杂性: 单一策略无法捕捉用户多维度、多粒度的兴趣(广域兴趣、深度兴趣、实时兴趣、长尾兴趣)。多路召回像一个分工合作的团队,各自负责不同的兴趣领域。
  3. 保证覆盖率和多样性: 不同召回策略倾向于覆盖不同类型的物品(热门、相似、相关、新颖、长尾)。多路并行保证了候选集在整体上能覆盖更广的范围,并包含多样化的内容,避免推荐结果单一化。
  4. 平衡精度与效率: 系统可以灵活组合使用不同计算复杂度的召回策略(如快速的热门召回+较慢但精准的深度向量召回),在整体延时约束下达到最优或次优的召回效果。
  5. 提升系统鲁棒性和可扩展性: 多路召回模块化设计,易于增加新策略、下线效果差的策略或调整各路的配额。单一路失败不影响全局。为推荐系统的持续迭代优化提供了基础。
  6. 有效处理冷启动: 内容召回、热门召回等策略为新用户和新物品提供了曝光渠道。

形象比喻:

  • 多路召回: 就像一个大型选秀节目的海选阶段。节目组派出多支星探队伍(协同过滤队、内容队、热门队、向量队、实时队)奔赴全国各地(全量物品库)。每支队伍有自己的选人标准(策略)和擅长领域(兴趣维度)。他们各自从海量人群中挑选出一批有潜力的选手(候选物品),汇总到总导演那里。
  • 融合排序: 就是导师考核和最终排名阶段。所有海选上来的选手(候选集)聚集在一起。导师(排序模型)根据选手的才艺(物品特征)、观众反馈(统计特征)、与节目定位的契合度(用户特征)、选手来源(召回源特征)等全方位的精细评估标准,对选手进行打分和排名,最终决定谁晋级(进入最终推荐列表)以及出场顺序(排序位置)。

总结:

多路召回和融合排序是现代推荐系统应对海量数据、复杂用户兴趣和严苛性能要求的标准架构。多路召回的核心价值在于高效地从全库中筛选出一个全面且多样的候选子集,为后续精细排序奠定基础。融合排序则利用更丰富的特征和更复杂的模型,在这个候选集上精准预测用户反馈,进行最终排序。两者协同工作,共同决定了推荐系统的效果上限。理解它们的设计理念和实现方式,是构建高效推荐系统的关键。