← 论文沉淀 / 🎯 生成式推荐 · ·RecSys 2026

GenPage: Towards End-to-End Generative Homepage Construction at Netflix

Lequn Wang, Jiangwei Pan, Fengdi Che, Linas Baltrunas (4 人)

Netflix × University of Alberta

把「多阶段召回-排序-重排 + 行/实体分模型」的首页构建,换成一个问题:给定用户上下文这个 prompt,直接自回归生成整张多行首页(行 token + 实体 token,按布局顺序)。照搬 LLM 配方:在正反馈生产页上做 next-token 预训练,再用加权二分类(WBC,逐 token 价值估计)或页级 RL(奖励模型 + Dr. GRPO)后训练;~200M 模型线上核心指标 +0.24%,端到端延迟降 20%。

Whole-Page GenerationNetflix HomepageWeighted Binary ClassificationPage-Level RLConstrained Decoding
📝 我的备注
加载中…

核心思路

Netflix 首页是一个二维结构:若干行(Continue Watching、Korean TV Shows……),每行里若干影片/剧集。过去它由召回、排序、重排多阶段流水线拼出来,行和实体还各有专门模型。GenPage 换了个问法:

已知这个用户和这次请求的全部信息,应该生成怎样一张首页,才能让用户最满意?

做法是把用户历史、画像和请求上下文 token 化当作 prompt,用一个 decoder-only Transformer 按布局顺序(从左到右、从上到下)自回归生成整页的「行 token + 实体 token」。训练照搬 LLM 配方:先在生产中拿到正反馈的首页上做 next-token 预训练,学会首页的「语言」;再做后训练,二选一:

  • WBC(加权二分类):把生成拆成逐 token 的价值预测,已上线;
  • 页级 RL:页级奖励模型 + Dr. GRPO + KL 约束,目前只有离线结果。

线上用约 200M 参数的 WBC 模型,对成熟的多阶段生产栈拿到核心指标 +0.24%(95% CI [0.17%, 0.30%],p<0.001),端到端延迟 -20%。

与以往工作的区别:TIGER / HSTU / OneRec 等生成式推荐生成的是扁平 item 列表;以往的页级推荐(WWW15、WSDM16、RecSys18、KDD19)不是 LLM 式端到端生成。GenPage 把两者结合到工业级首页上。

整体实现思路

  1. 样本:一次首页曝光 = Context(行为历史、画像、请求上下文)+ Page(按布局顺序的行和实体)+ Feedback(播放、点赞、放弃等)。Feedback 不作为输入,只经奖励系统转成监督信号。
  2. 自定义 tokenizer:一个实体、一个行各占 1 个 token;行为事件拆成 4 个 token。
  3. 模型:标准 decoder-only Transformer,输入 embedding 与输出投影解绑,线上约 200M 参数。
  4. 训练:预训练(next-token,模仿生产正反馈页)→ 后训练(WBC 或 RL)。周期性全量重训 + 每日增量后训练。
  5. 推理:自回归贪心解码 + 逐请求动态 mask 的约束解码 + 混合行解码;分页时把已生成行和最新会话交互追加进 prompt。

子模块实现(可复现细节)

1. Context tokens

  • 行为历史:每个动作抽取 [Entity ID][Action Type][Action Time Bucket][Action Duration Bucket]。论文的例子:「30 天前看了 Orange Is the New Black 50 分钟」,GPT-5 tokenizer 要 16 个 token,这里只要 4 个。动作包括显式信号(播放、加入 My List、点赞)和隐式信号(看预告片、访问详情页)。
  • 画像:语言、profile 类型(Kids / Adult)等。
  • 请求上下文:时段、星期、设备。
  • 连续值(时间戳、时长)分桶,保证词表有限;每个数据源前插入段起始特殊 token,帮助模型区分来源。
  • 过长的数据源(如完整曝光历史)用手工摘要版本代替。作者承认这仍是一种 prompt 工程,端到端压缩长数据源留作后续工作。

2. Page tokens 与分页

  • 每个行、每个实体各 1 个 token,按布局顺序排列;实体和行词表每日更新。
  • 仍未入词表的实体靠语义 embedding 融合和 fallback token 处理。
  • 分页推荐:首页按几行一批增量生成。每次分页请求前,把已生成行的 page token 以及用户在这些行上的最新交互(来自实时事件日志)追加进 prompt,再生成下一批。

3. 奖励系统

沿用 Netflix 内部奖励系统(RecSys 2023 “Reward innovation for long-term member satisfaction”),通过线上 A/B 调到与长期满意度对齐。每个曝光实体得到一个标量奖励:一晚刷完的剧 > 看了 10 分钟的电影;曝光后放弃为负。页级奖励 = 页内所有曝光实体奖励之和。

4. 模型结构

  • 标准 decoder-only Transformer(GPT-2 式)。
  • 解绑输入 embedding 和输出投影:预训练是 softmax over vocabulary,WBC 是逐 token sigmoid,两者最优 logit 尺度差别很大,解绑后更灵活。
  • 线上首轮 A/B 用约 200M 参数以满足延迟预算。论文未披露层数、宽度、词表大小。

5. 预训练(next-token prediction)

  • 从零训练,给定 context 和 page 前缀预测下一个 page token。
  • 数据:生产中获得正反馈的首页曝光。形式上更像 LLM 的 SFT,但因为是从零训练,所以叫预训练。
  • 局限:只学会模仿生产系统,没有直接优化奖励大小;GenPage 进入生产后再用自己生成的页面训练,有模型退化(model collapse)风险,因此需要后训练。

6. WBC 后训练(已上线)

  • 对每个曝光实体:标签 = 奖励符号(正向互动 vs 放弃),权重 = 奖励绝对值(刷剧权重大于短播放)。
  • 对每个曝光行:行奖励 = 行内实体奖励聚合。
  • 在对应 token 的 logit 上优化加权二元交叉熵,logit 解释为「在该位置生成该 token 的价值」。逐 token 目标天然完成信用分配,比页级 RL 好优化。
  • 随机负样本:每个曝光目标额外采随机 token 作负例。冷门 token 被采作负例的次数远多于成为正例,相当于注入温和的悲观(流行度先验),防止噪声导致冷门实体被自信地推上来。
  • 解码:每步算所有候选 token 的价值(logit),贪心取最大,追加到前缀,直到整页生成完毕。
  • 在生产排序模型的标准评估集上,WBC 模型的 weighted AUC 等实体级指标超过生产排序器(未给数字)。

7. RL 后训练(离线探索中)

  • 类比 RLHF 两步:先训页级奖励模型,再对其优化策略。奖励模型与第 3 节的奖励系统不同:奖励系统只能给真实展示过的页面打分,奖励模型可对任意生成页预测页级奖励。
  • 奖励模型:Transformer,从预训练 ckpt 初始化,以实体奖励之和为监督目标;另加规则奖励(页面要像行的列表;关键行/实体不能太靠下)。
  • 算法:Dr. GRPO;框架 verl + vLLM;prompt = 生产用户请求的 context tokens;策略与参考模型都从预训练 ckpt 初始化。
  • KL 惩罚把策略约束在预训练(即模仿生产策略)附近,使生成页落在奖励模型可靠的覆盖区内,减少 reward hacking;与基于日志 propensity 的 off-policy 修正相比避免了高方差。
  • 采用 RL 的其他动机(测试时推理、多 token 实体如 [Show ID]+[Episode #] 或多层 SID)本文未实现。作者明确指出:实体用多 token 表示时,WBC 的逐 token 标签会变得含混。

8. 冷启动

  • 上下文注入:把新实体或时效实体(如 Live Now 直播)的元数据直接写进 context tokens。
  • 语义 embedding 融合:实体输入 embedding = ID embedding ⊕ 内容 embedding(简介、演员、字幕、类型、视频内容),融合方式未说明。训练时以小概率把实体 ID token 替换为通用 fallback token,让模型学会只靠内容 embedding 推荐;新实体一有内容元数据就在同一隐空间里有表示。

9. 多节奏增量训练

  • 按可调周期(图 2 示意为每周)在大历史窗口上做一次完整预训练 + 后训练。
  • 期间每天从前一天 ckpt 继续后训练,数据 = 当天数据 + 采样的历史子集,保持新鲜同时防灾难性遗忘。
  • 新 token 用同类 fallback token([Row Fallback Token] / [Entity Fallback Token])初始化;训练中随机把一小部分已知 token 换成 fallback,让模型能平稳处理未知 token。

10. 约束解码执行业务规则

  • 规则包括结构约束(页面必须是行的列表)和产品逻辑(去重、行置顶、类目一致:Comedy 行只能放喜剧)。
  • 每步按适用规则算可用 token mask 作用于 logits。因为 1 实体 / 1 行 = 1 token,规则直接映射为 token 级 mask,不需要文本词表上的多 token 记账。例:要把「热门游戏」行钉在第 2 行,就在该位置 mask 掉其他所有 token。
  • 难点:规则逐请求、逐位置变化,不能复用固定约束集,需对推理引擎做定制才能守住延迟。

11. 混合行解码

  • 每行只自回归生成前几个实体(它们最受注意,决定该行观感与主题)。
  • 以这个前缀为条件,一次前向得到所有合规实体的 logits,取 top 补齐该行其余位置(仍受业务规则约束)。论文未给前缀长度。

实验设置与结果

所有离线实验基于 Netflix 内部数据;因系统迭代开发,各消融用不同配置和数据快照,只报相对比较;默认约 200M 模型。

预训练是否有用(表 1)

指标有预训练无预训练
Loss(加权 BCE)0.3210.333
Row AUC0.8840.879
Entity AUC0.9200.910

Entity AUC 0.91 → 0.92 意味着(忽略样本加权)随机正负曝光对的误排率从 9% 降到 8%,作者称这在成熟生产系统上单次改动很少见。

模型规模 vs 上下文丰富度

维度设置WBC loss 下降
模型规模120M → 200M → 450M → 900M(约 7.5×)约 1.3%
上下文丰富固定模型规模,6 步逐步加数据源 / 改 tokenize约 6.9%(累计)
  • 预训练 loss 和 WBC loss 都随规模近似幂律下降。
  • 若干单次上下文改动的收益就超过整个 7.5 倍扩参。作者判断当前个性化先受限于输入信息与表示,其次才是容量;上下文饱和后容量才会成为主驱动。
  • 注意:上下文曲线是逐步相对提升复合出来的(不同快照),并非对同一基线直接测量。

RL 后训练(离线,图 5)

  • 页级奖励随训练步数稳步上升,但评估用的就是被优化的奖励模型,作者自己也说「基本是确认性的」。
  • 多样性(页内实体成对 embedding 距离)也明显上升,尽管目标里没有多样性项。作者据此认为策略在整页层面优化,而不是逐 token 短视优化。

线上 A/B(14 天,图 6)

项目结果
模型~200M,WBC 后训练
候选在现有生产行 / 实体候选集上解码(候选集已处理资格等规则)
变体5 个(随机负样本数量、训练曝光过滤不同)
核心参与度指标5 个变体全部显著(p<0.001),最佳 +0.24%,95% CI [0.17%, 0.30%]
端到端服务延迟-20%(替代多级排序和重特征计算;自定义 tokenizer 与混合行解码减少解码步数;还有优化余量)

其他观察:

  • 曝光结构偏移:新片 vs 老片、剧 vs 电影、高 vs 低质量互动的曝光占比发生了未预期的变化。作者推测是个性化更精准、曝光效率提高(用户用更少曝光就找到想看的),这把继承自旧栈、尚未适配生成范式的组件(如奖励系统)的问题暴露出来,计划进一步分析和调整。
  • 会话内响应:最新会话行为能迅速影响后续推荐,并在一两天后回落到长期偏好,说明模型确实利用了行为时间戳 token,无需旧栈那样的手工特征。

思考与可参考价值

值得借鉴的点

  1. 整页序列化:电商首页 / 频道页的「楼层 × 商品」和 Netflix 的「行 × 实体」同构。把楼层 token 与商品 token 按布局展开,由一个模型同时决定楼层和楼层内商品,可替代楼层排序 + 商品排序两套模型,并天然支持整页多样性。
  2. WBC 是从生成式推荐落地的稳妥第一步:它沿用现有精排的标签和权重体系(奖励符号作标签、幅度作权重),信用分配干净,线上收益可以先拿到;页级 RL 作为第二阶段。前提是 item 是单 token。用多层 SID 的团队要注意作者的提醒:多 token 实体会让逐 token 标签变得含混。
  3. 先做 prompt,再加参数:6.9% vs 1.3% 的对比对资源有限的团队很有用。行为 token 化为「ID + 行为类型 + 时间桶 + 时长桶」4 个 token,简单可直接借用。
  4. 随机 token 负例 = 流行度先验,抑制长尾噪声高分;fallback token 随机替换 + 内容 embedding 融合是新品冷启动和日更词表的低成本方案。
  5. 约束解码 + 混合行解码:前几个位置自回归、其余一次前向取 top,是延迟与质量的实用折中。

采用前要核对

  • 商品库规模:电商商品通常是千万到亿级,远大于 Netflix 片库,1 item = 1 token 的输出层(softmax 或价值头)难以直接照搬,需依赖候选集限制或 SID(推断)。
  • 线上 GenPage 仍在生产候选集上解码,召回与资格过滤没被替换。「一个模型替代整栈」只完成了排序 / 页面组装这一段。
  • 预训练只模仿生产正反馈页面,会继承旧系统偏差;上线后再用自己产生的页面训练,要监控退化。
  • 奖励系统必须与新范式对齐:Netflix 线上已出现曝光结构偏移。
  • 页级 RL 的离线评估不能用训练用的奖励模型自评,需要独立奖励模型、规则评估或反事实估计(作者列为开放问题)。
  • 论文未公开数据规模、超参和关键模块消融(语义融合、混合行解码前缀长度、解绑 embedding),复现只能参考思路。