news 2026/8/15 7:58:28

推荐系统重排技术:从双阶段框架到生成式演进

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
推荐系统重排技术:从双阶段框架到生成式演进

1. 从“召回即终点”到“重排即战场”:推荐系统的范式转移

如果你在推荐系统领域摸爬滚打超过三年,大概会经历这样一个认知转变:早期,大家把80%的精力都花在召回和精排上,觉得只要召回得准、精排得准,结果就不会差。重排(Reranking)?那不就是把精排的结果按分数倒序排一下嘛,能有什么技术含量?但最近两年,但凡做过线上AB实验的团队,都会发现一个残酷的现实:在召回和精排模型已经高度内卷、优化空间日渐逼仄的今天,重排环节的微小改进,往往能带来远超预期的线上收益。这背后的逻辑其实很朴素:精排模型打分,是基于“单个物品 vs. 用户”的二元关系,它告诉你用户有多大概率喜欢这个视频、这篇文章、这件商品。但它回答不了另一个同样关键的问题:当这20个用户“都喜欢”的物品被放在一起,组成一个列表呈现给用户时,它们之间的排列组合,是否能让用户的整体体验和平台的核心指标(如停留时长、点击率、转化率)最大化?

这就是重排技术的核心价值所在。它处理的不是一个孤立的点,而是一个序列的整体最优解问题。举个简单的例子,精排模型给三个美食视频都打了很高的分,但重排模型会发现,如果连续推荐三个“红烧肉”教程,用户大概率会审美疲劳并划走。更优的序列可能是“红烧肉教程 -> 厨房小技巧短视频 -> 新式甜品探店”,通过多样性来维持用户的兴趣。再比如电商场景,精排认为用户想买手机,于是把不同品牌的手机排在最前面。但重排模型可能会判断,用户此刻处于“决策前期”,更需要的是“手机选购指南”、“各品牌对比横评”这类内容来辅助决策,因此将这些内容插在商品列表的前部,反而能提升最终的购买转化。

所以,重排早已不是简单的“按分排序”。它需要建模列表内物品间的相互影响(如多样性、连贯性、互补性),以及列表整体与用户全局目标的匹配度。近年来,随着Transformer等序列建模能力的普及,以及业界对用户体验和生态健康(如打散、供给侧公平)的日益重视,重排技术从幕后走向台前,成为了推荐系统新的效能增长点和技术竞技场。而“双阶段框架”,正是在这种背景下,从学术界走向工业界,并被大规模实践验证的主流技术范式。

2. 双阶段重排框架:解耦“打分”与“排序”的工业级智慧

面对重排这个复杂的序列决策问题,最理想的方式当然是构建一个超级模型:输入用户特征、上下文和候选物品列表,直接输出一个最优的序列。这属于“端到端列表生成”的范畴,想法很美好,但在工业级流量和苛刻的线上延迟要求下,几乎不可行。计算复杂度太高,且难以处理复杂的业务规则约束。

因此,工业界普遍采用的是一种务实且高效的“双阶段框架”。这个框架的核心思想是将复杂的全局序列优化问题,拆解为两个相对独立的子问题,从而实现精度和效率的平衡。

2.1 第一阶段:精细化上下文感知打分

第一阶段的目标,是在精排输出的Top-N(例如200个)候选物品的基础上,进行更精细化的“再打分”。请注意,这里的“打分”已经不是精排阶段的CTR/CVR预估了,而是为第二阶段排序所服务的“效用分”

这个阶段的关键在于“上下文感知”。精排模型通常只考虑用户和物品的交叉特征,对列表上下文(List Context)的感知很弱。而一阶段重排模型,则需要显式地引入上下文信息。具体怎么做呢?

模型架构选型:Transformer Encoder 成为主流

目前的主流做法是采用Transformer Encoder结构。为什么是Encoder而不是完整的Seq2Seq?因为第一阶段的任务本质上是为列表中的每个物品计算一个“在当前位置上下文下的得分”,这是一个并行计算的任务,Encoder的并行化特性非常契合。

  1. 输入构建:我们将候选列表中的每个物品,表示为一个特征向量(融合了用户特征、物品特征、用户-物品交叉特征)。同时,我们会注入一些“位置信号”,例如该物品在精排列表中的原始序位,或者一个可学习的位置编码,为模型提供初步的序列信息。
  2. 上下文融合:这N个物品的特征向量,被作为序列输入Transformer Encoder。通过Encoder内部的多头自注意力(Multi-Head Self-Attention)机制,每个物品的特征都能与列表中的所有其他物品进行交互。举个例子,物品A(一款高端游戏本)的特征,会“注意到”物品B(一款廉价办公本)和物品C(一个电脑散热器)的存在。模型能学习到:“当游戏本和办公本同时出现时,用户可能是在进行对比”;“当游戏本和散热器同时出现时,后者是前者的互补品”。
  3. 得分输出:经过若干层Transformer Block的交互后,每个物品都得到了一个融合了全局列表信息的“上下文增强表征”。我们在这个表征上接一个简单的MLP层,输出一个标量分数。这个分数,反映了在当前这个特定列表环境下,该物品对于达成全局目标(如用户体验)的即时价值

这个阶段的输出,是一个带有“上下文效用分”的候选列表。它比精排分数更“聪明”,因为它知道了同伴们都是谁。

2.2 第二阶段:基于全局目标的序列优化

有了第一阶段提供的、经过上下文信息增强的候选物品和分数,第二阶段的使命就是:找到一个最优的排列顺序。这个“最优”的定义,直接指向我们最关心的线上业务指标,例如:用户在整个列表的浏览时长、列表的整体点击率、转化率,或者多样性、新颖性等生态指标。

第二阶段不再使用复杂的深度模型进行端到端生成,而是通常转化为一个排序优化问题,并使用更轻量、更可控的方法求解。

主流技术:基于强化学习(RL)或启发式搜索的排序器

  1. 强化学习(RL)方法

    • 思路:将重排过程视为一个序列决策问题。智能体(Agent)从左到右依次选择物品放入列表的每个位置,每放入一个物品,环境(Environment)会给出一个即时奖励(Reward),最终列表生成后,会得到一个与整体业务指标相关的最终奖励。
    • 实践:通常使用Policy Gradient(如REINFORCE)或Actor-Critic算法。状态(State)是已排序的部分列表和剩余候选集,动作(Action)是选择下一个物品,策略网络(Policy Network)则基于当前状态输出选择每个剩余物品的概率。奖励的设计是关键,可以是预估的点击率累加、模拟的用户滑动行为(如跳过、停留)等。
    • 优势:能够直接优化长期、整体的收益,理论上非常强大。
    • 挑战:训练不稳定、收敛慢、奖励函数设计困难,且线上推理需要逐步决策,延迟可能较高。
  2. 启发式搜索与打分重加权方法

    • 思路:这是一种更实用、更流行的方式。它不试图“生成”序列,而是对第一阶段输出的“上下文效用分”进行全局视角下的重加权,然后根据加权后的分数进行排序。
    • 具体操作:我们定义一系列全局目标函数。例如:
      • 多样性目标:惩罚列表中物品的相似性。如果两个物品的类别、标签非常接近,那么同时排在前面就会受到惩罚。
      • 打散目标:确保来自同一作者、同一品牌、同一供应商的物品不会过于密集。
      • 商业目标:提升某些战略品类或广告物品的曝光机会。
    • 求解:我们可以将这些问题形式化为一个优化问题:Maximize: Sum(Item_Score_i * Position_Decay_i) + λ * Diversity(List) - β * Concentration(List),其中Position_Decay_i是位置衰减因子(如1/log(1+i))。然后使用贪心算法波束搜索(Beam Search)或更高效的重打分算法(如DPP,行列式点过程)来快速找到一个近似最优解。
    • 优势:直观、可控、高效。业务方可以方便地调整不同目标的权重(λ, β),线上推理速度快,几乎无额外延迟。
    • 实践细节:在实际系统中,第二阶段往往是一个多目标融合的排序服务。它接收一阶段的结果,加载多种业务规则和模型(多样性模型、打散模型、商业价值模型),进行快速的加权计算与排序调整,最终输出Top-K的结果给前端展示。这个过程通常在10毫秒内完成。

双阶段框架的精妙之处在于,它通过第一阶段强大的深度学习模型(如Transformer)捕获复杂的、非线性的列表内物品交互效应,并将这些效应沉淀为每个物品的“潜力分”;再通过第二阶段灵活、高效的优化器,将业务全局目标直接“翻译”为最终的排列顺序。两者各司其职,实现了效果与性能的完美妥协。

3. 从Transformer到生成式模型:重排技术的演进前沿

双阶段框架是目前工业界的稳定基石,但技术演进从未停止。随着生成式AI的爆发,重排领域也在探索新的可能性,主要沿着两个方向演进:模型架构的升级问题范式的变革

3.1 模型架构演进:Transformer的深化与定制化

尽管Transformer Encoder在一阶段重排中已是主流,但其应用方式仍在不断优化:

  • 长序列建模优化:候选列表长度N可能达到几百,传统的Transformer计算复杂度是O(N²),成为瓶颈。因此,线性注意力(Linear Attention)LongformerBigBird等能够处理更长序列的变体开始被引入,在保证效果的同时大幅降低计算成本。
  • 特征交互的精细化:不再简单地将所有特征拼接后输入。而是采用“多塔结构”,让用户侧特征、物品侧特征先在各自的塔内进行高层抽象,再在交叉层进行精细交互,最后送入Transformer进行列表上下文融合。这更符合“用户-物品”匹配的本质。
  • 引入预训练知识:对于文本、视频等内容丰富的场景,可以引入BERT、CLIP等预训练模型作为特征提取器,获取更深度的语义表征,再送入重排模型。这相当于为模型注入了通用的世界知识,对于处理冷启动、长尾内容特别有效。

3.2 范式演进:生成式重排(Generative Reranking)的兴起

这是目前最前沿、也最具想象力的方向。其核心思想是:为什么不直接让模型生成最优的序列ID呢?这听起来像是回到了“端到端生成”的老路,但得益于像GPT这样的自回归生成式大模型的成功,这条路径有了新的实现方式。

生成式重排通常将重排任务构造成一个序列到序列(Seq2Seq)的问题:

  • 输入:用户特征、上下文、以及精排候选列表的物品ID序列或特征序列。
  • 输出:一个重新排列后的物品ID序列。

一种实践思路是“检索增强生成(RAG)架构在推荐重排中的映射”。虽然RAG最初用于问答,但其思想可以借鉴:

  1. 召回:精排输出的列表,可以看作是一个“相关但粗糙”的检索结果集。
  2. 重排:这里的“重排模型”就像一个生成器。它基于用户query(用户画像+实时上下文)和检索到的“知识”(候选列表),通过理解全局信息,直接生成一个最优的序列。这个生成器可以是微调后的Decoder-only模型(如较小规模的GPT),它通过自回归的方式,逐个预测下一个最应该出现的物品ID。

生成式重排的潜在优势

  • 更强的序列建模能力:自回归生成模型天生就是为序列建模设计的,可能捕获比“打分+排序”两阶段更复杂的序列模式和长期依赖。
  • 真正的端到端优化:可以直接以列表级的业务指标(如整个Session的转化率)作为训练目标。
  • 灵活性与创造性:理论上可以生成超出原始候选集的新序列组合模式,甚至插入一些引导性、解释性的“虚拟物品”(如“查看更多”或“分类标题”)。

然而,挑战巨大

  • 样本效率与训练难度:生成整个序列的训练数据稀疏,模型很难训练。
  • 可控性与安全性:如何确保生成的序列满足多样性、打散等硬性业务规则?如何防止模型生成不合理或重复的序列?
  • 推理延迟:自回归生成速度慢,难以满足线上毫秒级响应要求。
  • 评估困难:如何准确评估生成序列的整体质量,也是一个开放问题。

因此,当前生成式重排更多处于前沿探索和实验室阶段,距离大规模工业级应用还有一段路要走。双阶段框架因其稳定性、可控性和高效性,在未来很长一段时间内,仍将是主流选择。但生成式重排代表了一种“终极理想”,驱动着整个领域不断向前探索。

4. 工业实践:搭建双阶段重排系统的核心细节与避坑指南

理论很美好,但落地到每秒处理数十万请求的推荐系统里,全是细节。这里分享几个在构建双阶段重排系统时,必须关注的核心实践点和常见“坑”。

4.1 特征工程:比模型结构更重要的基石

重排模型的特征,是精排特征的超集,并特别强调“上下文特征”和“序位特征”。

  • 必须加入的特征
    • 精排分数与排名:这是最重要的特征之一,代表了精排阶段的置信度。
    • 物品间相似度特征:可以预先计算好候选列表中两两物品在类别、标签、Embedding向量上的相似度,作为模型感知多样性的直接输入。
    • 列表全局统计特征:例如列表前10个物品中,科技类目的占比、平均点击率预测值、价格方差等。这些特征帮助模型把握列表的整体调性。
    • 实时上下文序列:用户在当前Session内最近点击、曝光的物品序列,用于判断用户的即时兴趣和疲劳度。
  • 避坑指南
    • 特征穿越(Data Leakage):这是最容易犯也最致命的错误。例如,你不能使用“该物品在本次推荐中的最终点击状态”作为特征来训练模型。必须严格区分特征生成的时间点,确保所有特征在推理时刻都是可获取的、历史的。
    • 特征维度爆炸:列表级特征(如两两相似度)会带来O(N²)的特征增长。必须进行有效的特征筛选和降维,例如只计算Top-10物品与当前物品的相似度,或使用聚合函数(均值、最大值)来代表列表的多样性程度。

4.2 离线训练与在线推理:效率的生死线

  • 离线训练
    • 样本构造:训练样本不是单个<用户,物品>对,而是<用户,物品列表,列表反馈>。列表反馈可以是列表的整体点击率、平均观看时长等。更精细的做法是使用点击模拟(Click Simulation)位置偏差(Position Bias)纠偏后的数据,来构建每个物品在列表中的“真实效用”标签。
    • 负采样:列表中的未点击物品自然成为负样本。但为了提升模型区分度,通常还会加入一些“批次内负采样”或“全局负采样”的困难负例。
  • 在线推理
    • 性能瓶颈:Transformer Encoder对长度为N的列表进行前向传播,是主要的耗时操作。必须进行深度优化:
      1. 模型轻量化:使用知识蒸馏、模型剪枝、量化(INT8)等技术压缩模型。
      2. 计算优化:利用GPU/TensorRT进行推理加速,对于Attention计算使用优化后的内核。
      3. 缓存策略:对于用户特征等变化频率低的部分,可以进行缓存,避免重复计算。
    • 服务化部署:重排服务通常是一个独立的微服务。它接收精排服务传来的候选列表,调用一阶段模型打分,再经过二阶段排序器,最终返回结果。整个pipeline的延迟必须严格控制在几十毫秒以内。

4.3 评估体系:如何证明你的重排模型真的有效?

重排模型的评估分为离线评估和在线AB测试。

  • 离线评估

    • 列表级指标:这是重排的核心。常用指标包括:
      • NDCG@K, MAP@K:衡量列表前K个位置的相关性排序质量。
      • 多样性指标:如ILS(Intra-List Similarity),列表内物品相似度的倒数,值越大越多样。
      • 覆盖率(Coverage):重排后的列表覆盖了多少不同的作者、类别,用于衡量生态健康。
      • 用户模拟指标:构建简单的用户模拟器(如点击模型),评估生成列表的模拟点击率、观看时长等。
    • 避坑指南:离线指标与线上收益经常不一致。一个离线NDCG很高的模型,线上可能毫无效果。因为离线评估无法完全模拟用户的真实浏览行为(如滑动速度、注意力分配)。因此,离线指标更多用于模型迭代和筛选,决不可作为上线的唯一依据。
  • 在线AB测试

    • 核心指标:必须关注与业务终极目标紧密相关的宏观指标,如人均时长、人均点击、留存率、转化率等。
    • 观察指标:同时要监控重排相关的过程指标,如:列表前3条/前10条的有效曝光点击率、用户滑动深度、列表内不同类别/作者的曝光分布变化等。这些指标能帮你诊断模型是如何起作用的。
    • 实验设计:重排实验的影响范围广,需要足够的流量和实验周期,以观察对用户长期行为的影响。

4.4 常见陷阱与应对策略

  1. “重排不动”陷阱:上线后,发现重排模型输出的顺序和精排几乎没变化。可能原因:一阶段模型没有学到有效的上下文信息,分数差异很小;二阶段排序器的目标权重设置不当,没有发挥调整作用。对策:检查一阶段模型的特征和训练样本,确保上下文信号足够强;在二阶段大胆调整目标权重,先做出“肉眼可见”的排序变化,再通过AB实验校准。
  2. “多样性过度”陷阱:为了提升多样性指标,把毫不相关、质量很差的物品排到了前面,导致核心用户体验指标暴跌。对策:在二阶段优化目标中,必须将“相关性”(如一阶段分数)作为强约束的基础项。多样性、打散等是“收益项”,需要在相关性损失和多样性收益之间寻找帕累托最优,而不是无限制追求单一指标。
  3. “线上线下不一致”陷阱:离线评估大涨,线上AB实验不显著甚至负向。除了评估本身的问题,还可能是因为线上特征不一致(如实时特征计算逻辑不同)、服务延迟导致特征截断(线上为了保延迟,使用的特征版本更老或更少)。对策:建立完善的线上特征监控和数据一致性校验管道,确保离线训练和线上推理的特征空间完全对齐。

重排系统的构建,是一个典型的“系统工程”。它要求算法工程师不仅要有模型能力,还要有扎实的特征工程功底、深刻的业务理解、强大的工程实现和严谨的实验评估能力。每一个环节的疏忽,都可能导致前功尽弃。但正因为其复杂,一旦突破,带来的收益也是持久和显著的。它让推荐系统从“推荐好的单个内容”,进化到了“编织一段好的浏览体验”,这无疑是推荐技术走向成熟和深水区的重要标志。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/15 7:58:24

Docker镜像拉取失败:invalid tar header错误深度解析与修复指南

1. 问题现象与核心场景剖析 如果你在构建或拉取 Docker 镜像时&#xff0c;突然在终端看到 failed to register layer: Error processing tar file(exit status 1): archive/tar: invalid tar header 这个错误&#xff0c;心里多半会“咯噔”一下。这个错误信息直白地指向了 …

作者头像 李华
网站建设 2026/8/15 7:58:20

程序员必备:Typora Markdown编辑器从入门到精通实战指南

1. 从“所见即所得”到“所想即所得”&#xff1a;为什么程序员绕不开Typora 如果你是一个经常需要写文档的程序员&#xff0c;无论是写技术博客、项目README、学习笔记&#xff0c;还是整理会议纪要&#xff0c;你一定经历过在“编辑器”和“预览器”之间反复切换的割裂感。一…

作者头像 李华
网站建设 2026/8/15 7:55:54

科颜氏同款贴牌定制,源头大厂为什么先甩你一份58℃耐烘测试单?

同样的配方表&#xff0c;三家厂打出来的样品是三个肤感&#xff1b;样品用着挺好&#xff0c;大货灌装三天韩系宫廷配方膏体塌成水——这种返工事故十有八九出在只谈配方、不谈工艺公差的老板身上。今天拿美系K家经典绿色架位体系开刀&#xff0c;把高保湿角鲨烷架构、亚马逊白…

作者头像 李华
网站建设 2026/8/15 7:53:13

学术论文AIGC率控制策略与工具链优化方案

1. 论文AIGC率控制的核心挑战 去年帮导师审阅研究生论文时发现一个现象&#xff1a;超过60%的投稿都存在AIGC&#xff08;AI生成内容&#xff09;率过高的问题。最夸张的一篇文献综述部分&#xff0c;Turnitin的AI检测指数竟然高达89%。这让我意识到&#xff0c;在AI写作工具普…

作者头像 李华
网站建设 2026/8/15 7:51:00

Vim编辑器从入门到精通:核心模式、高效操作与插件配置全解析

1. 项目概述&#xff1a;为什么Vim值得你投入时间&#xff1f;如果你在Linux世界里待过一段时间&#xff0c;无论你是系统管理员、后端开发还是运维工程师&#xff0c;Vim这个名字一定如雷贯耳。它可能给你留下过两种截然不同的印象&#xff1a;一种是“编辑器之神”&#xff0…

作者头像 李华