微信扫码
添加专属顾问
我要投稿
小红书的推荐系统技术揭秘,带你了解背后的生成式推荐排序GenRank。 核心内容: 1. 推荐系统pipeline各阶段功能与效率平衡 2. 生成式推荐排序与传统排序的区别及关键机制 3. 自回归方式在生成式排序中的作用与实验验证
问题设置
本文研究排序阶段的生成式推荐。目标是预估ctr或停留时长。离线实验数据集从小红书的信息流中收集了 15 天内数百亿条item曝光日志。有三种类型的输入特征:
分类特征:用户 ID、项目 ID、用户历史行为、标签等。
数值特征:用户年龄、item发布时间、作者粉丝数量等。
frozen embedding:多模态item embedding、基于图的user embedding等。
按照先前的工作,数值特征通过预定义的margin离散化为分类特征,而分类特征通过embedding表转换为dense embedding。由预训练模型提供的frozen embedding被视为辅助信息,提供与其相关特征的先验知识。
在小红书feed场景下,离线 AUC 绝对值增加 0.0010 被认为是显著的,因为它通常会在线上为数亿用户带来 0.5% 的top指标改进。
生成式推荐中的有效性来源
(1) 生成式范式中的关键机制
与从历史行为中学习复杂特征交互的传统范式不同,生成式推荐将排序重新表述为序列转换任务。在这种情况下,生成式排序在两个方面与传统排序有显著不同:序列交互的方式和训练样本的组织。 生成式排序中序列交互的方式是自回归的。需要注意的是,HSTU 只在对应候选item的位置计算损失,如图 2(a)所示。这种方法可以被视为监督式微调,其中用户信息和候选item作为输入提示。
小红书团队认为现代 LLM 在监督式微调中采用自回归方式的一个原因是保留预训练期间获得的能力。然而,生成式排序并不涉及预训练阶段。这就提出了一个问题:
自回归方式对于生成式排序是否真的必要?
(小编倒不这么觉得,next item prediction的范式推荐不也一直在用很久了嘛,跟保留预训练获得能力的关系不大,不过既然人家花时间和精力验证了,了解一下也无妨)
为了调查这个问题,进行两组实验。在第一组实验中,在历史行为的位置也计算损失。即使只包含少量历史位置,AUC 也会下降超过 0.0100。作者将此归因于 Zhang 等人描述的“one epoch”问题,其中模型从稀疏特征中学习错误的模式。在第二组实验中,将历史位置的因果掩码替换为完全可见掩码。这种修改类似于 T5 模型,其中注意力掩码最大化prompt中的特征交互。然而,这一变化导致 AUC 下降超过 0.0015,而且随着模型尺寸的增大,下降幅度更加显著。
这些结果支持自回归方式对于生成式排序的有效性是关键的结论。
传统范式中训练样本的组织通常是pointwise的;也就是说,每个训练样本对应于一条item曝光日志。相比之下,生成式排序将用户在时间上相邻的行为组合成一个单一的训练样本。
假设这种组织方式可能有两个好处:
首先,由于来自同一请求的两条曝光日志在特征(尤其是用户特征)上高度重叠,在同一batch中处理它们可以提高梯度估计的稳定性。
其次,从实际角度来看,在大规模在线分布式训练中,样本处理的顺序并不严格遵循实际的时间顺序,可能会导致信息泄露。在这种情况下,模型可以在观察到其曝光日志之前,从历史行为特征中推断出用户对item的偏好。生成式排序中的这种组织方式有助于减少在训练中先处理较晚发生的样本而后再处理较早发生的样本的风险。
然而,实证结果并不强烈支持这两个假设。具体来说,以逐点顺序训练生成式推荐器,而以分组训练样本的方式模拟传统训练,后者 AUC 只有轻微下降。
因此得出结论,生成式推荐的有效性主要来自于模型架构,而不是训练样本的组织方式。
(2) 两种范式下模块效应的比较
为了比较两种范式下模块的影响,团队测量了各种模块所实现的性能提升。结果表明,SIM、PPNet 和 PLE 在两种范式中都实现了相当的改进,这表明生成式范式与这些模块兼容。此外,在生成式范式下,内容embedding的 AUC 改进是原来的两倍多。主要是内容embedding的生成式训练与其在下游任务中的应用之间的架构一致性,使得它们的能力得到最佳利用。 还研究了特征工程的影响,HSTU 提议删除这些特征,因为生成式推荐器可以充分表达统计模式。实验表明,尽管大多数特征对生成式架构的好处微乎其微,但某些实时统计特征,尤其是基于窗口的特征,在增强性能方面仍然非常有效。推测这些特征为模型提供了直接信号,使得生成式架构能够学习复杂的模式。
工业场景中的高效生成式排序GenRank
(1) item - action组织
传统的序列推荐方法通常通过将单个item作为基本单位来构建模型,称为item导向架构。为了将这些方法适应于排序任务的action感知公式,HSTU 将action标记作为序列中的一个额外模态。如图 2(a)所示,它在单个序列中交错学习item和action,从而使模型能够根据上下文化序列预测item或action。尽管这些方法可以在统一框架内支持检索和排序任务,但它们为排序引入了大量开销,因为序列长度翻倍。 为解决这一限制,我们提出了一个新视角:将item视为位置信息,并专注于迭代预测与每个item相关的action,称为action导向组织。在这种范式中,action成为序列生成中的基本单位,而item作为上下文信号来指导生成过程,如图 2(b)所示。这种方法专注于action预测,并在效率方面具有显著优势。这种设计将注意力机制的输入序列长度减半,将注意力成本削减 75%,线性投影成本削减 50%。
对于用户历史序列中的每个位置,token embedding是通过item embedding和action embedding的和获得的,即,任务是预测用户对下一个候选item的action。为了实现这一点,候选item的tokenembedding由
给出,其中M是一个mask action embedding。需要注意的是,为了防止候选item之间的信息泄露,用了候选mask,如图 3(b)右侧所示。
(2) 位置 & 时间偏差
HSTU 利用可学习的相对注意力bias来编码位置和时间信息。尽管这种设计对于性能至关重要,但它引入了一个计算瓶颈:注意力bias的 I/O 操作随着序列长度呈二次方增长,随着上下文窗口的增大而带来重大开销。这种低效性促使设计新的位置 & 时间bias,显著降低系统成本--只需要线性 I/O 操作,包括:
position embedding:使用可学习的位置embedding来记录用户序列中item的index,表示为。为了确保训练和推理之间的一致性,同一请求中的候选item共享相同的位置。
request index embedding:在实践中,用户可以在单个请求中与多个item进行交互。我们将属于同一请求的所有item视为一个group,并定义request index embedding,
pre-request time embedding:这种embedding捕获每个item与前一个请求时间之间的分桶时间差,反映了用户的活跃程度。具体来说,它定义为
上述设计在引入最小训练开销的同时保留了位置和时间信息。最后,输入到后续网络的输入表示为:
此外,上述位置和时间embedding的一个重要的局限性是缺乏时间和位置信息之间的交互。为了解决这个问题,用ALiBi 作为注意力机制中的相对位置 & 时间偏差。ALiBi 有两个主要优点:
对距离较远的query-key对之间的注意力分数进行惩罚,随着key action token和query action token之间的距离增加,惩罚也随之增加,更符合用户兴趣建模的模式;
ALiBi 是无参数的,不需内存访问开销或梯度反向传播。通过将 ALiBi 融入flash attention中,产生最小的计算成本。
上述两个改进,相比HSTU,GenRank 在训练期间实现了 94.8% 的总加速,在测试集上的 AUC 略有提高。
6. 在线实验
ab实验 小红书feed流10%流量,持续15 天。GenRank在冷启动item上的改进特别显著。相比线上baseline模型,GenRank的训练成本更高,但推理和存储成本更低。此外,GenRank 在 P99 响应时间上比线上模型优化了 25% 以上。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-05-28
AI智能体,如何重构搜索战场
2025-05-27
抖音运营神器来了!我用Qwen3+抖音MCP打造了个24小时待命的抖音小秘
2025-05-27
Agent经济,要来了
2025-05-27
AI在To B销售领域的现状与未来:赋能而非替代
2025-05-27
AI Agent+房产经纪行业模型 | 第四范式发布银行业AI智能体解决方案
2025-05-27
若OpenAI所言非虚,AI虽非B2B专属,仍将走"后门"渗透企业市场
2025-05-26
Cursor + 12306 MCP,打造AI智能选票系统,超酷的!
2025-05-26
红杉资本为什么只敢押注“能落地”的AI公司?
2024-12-25
2024-07-20
2024-11-06
2024-08-13
2024-11-02
2024-07-18
2024-07-25
2024-12-25
2024-09-06
2024-07-24
2025-05-26
2025-05-22
2025-05-21
2025-05-18
2025-05-06
2025-04-27
2025-04-17
2025-04-11