← 返回论文列表
🎯 推荐系统 · 生成式推荐 · LLM 增强

RoleGen: 唤醒沉默用户的生成式推荐

Awakening Dormant Users: Generative Recommendation with Counterfactual Functional Role Reasoning

作者单位
北航 + 快手科技
会议/年份
Under Review / 2025
核心亮点
功能角色推理 + 反事实推断
在线效果
订单量 +7.3%
🎯
§1 问题与背景

1.1 沉默用户(Dormant Users)

定义:在电商平台上保持活跃(浏览、点击),但在过去 30 天内没有任何购买行为的用户。

🔴 沉默用户的现状

快手电商平台数据:

  • 占 DAU(日活)的 40%+
  • 贡献 PV(页面浏览)的 35%+
  • 但订单占比 <20%

高参与度,低转化率 → 巨大的潜在 GMV 增长空间

⚠️ 与冷启动用户的区别

冷启动用户:几乎没有交互历史($|S_u| \approx 0$)

沉默用户

  • 有中等程度的浏览行为
  • 点击序列长度约为普通用户的 14%
  • 存在严重的数据稀疏性
  • 陷入自我强化反馈循环
$$\mathcal{U}_0 = \left\{ u \in \mathcal{U} \mid \nexists (i_k, b_k, t_k) \in S_u : b_k = \text{purchase} \land t_k \in [t_{\text{now}} - \Delta T, t_{\text{now}}] \right\}$$
符号说明
  • $\mathcal{U}_0$:沉默用户集合($\mathcal{U}_0 \subset \mathcal{U}$)
  • $S_u$:用户 $u$ 的历史交互序列,$S_u = [(i_1, b_1, t_1), (i_2, b_2, t_2), \ldots, (i_{N_u}, b_{N_u}, t_{N_u})]$
  • $i_k$:物品 ID;$b_k$:行为类型(view/click/purchase);$t_k$:时间戳
  • $\Delta T = 30$ 天:定义沉默用户的时间窗口

1.2 现有方法的局限

传统方法通常将沉默用户唤醒问题当作冷启动推荐的变体,采用以下策略:

  • 基于内容的特征丰富
  • 知识迁移(元学习、领域自适应)
  • LLM 语义增强(生成伪交互、静态 Profile 补全)
⚠️ 根本问题:只建模单步物品的固有价值(intrinsic value)

这些方法只关注单步、点级的物品推荐,即预测用户对某个物品的即时反应(immediate CTR)。

然而,这忽视了真实消费旅程中物品的工具性效应(instrumental effect):

  • 某些物品即使不被购买,也能作为触发器改变用户的潜在意图
  • 推动后续物品的转化
💡
§2 核心洞察:物品的工具性效应

💎 RoleGen 核心创新:不是「提取兴趣」,而是「推理决策模式」

❌ 常见误解

"LLM 提取用户兴趣 → 生成可能购买的 SID → 作为特征注入生成模型"
→ 这样理解会误认为 LLM 只是在做「兴趣标签提取」

✅ 精确理解(本文核心)

1. LLM 推理「功能角色演化轨迹」(不只是兴趣)
   • 不是推理"用户喜欢健康食品"
   • 而是推理"用户正在从 Core(燕麦奶)→ Trial(蔬菜汁)→ Premium(榨汁机)升级"
   • 关键:捕捉的是决策模式(升级路径、场景构建),不只是静态兴趣

2. 基于角色推理生成「方向性候选 SID」(不只是可能购买)
   • 不是简单预测"用户可能买面膜"
   • 而是推理"基于 Audience Overlap 角色,应该探索面部护理方向"
   • 关键:输出的是推理方向(语义导航),不是最终推荐

3. 将候选转为「引导特征」注入生成模型(软约束)
   • 不是硬性规定"必须推荐面膜"
   • 而是在解码时提高面部护理方向的生成概率
   • 关键:LLM 提供语义引导,生成模型结合协同信号做最终决策

4. 融合 LLM 泛化能力 + 生成模型精度
   • LLM:理解"化妆品 → 面膜"的语义联系(世界知识)
   • 生成模型:知道哪个品牌、哪个价位的面膜最符合协同信号(平台数据)
   • 关键:不是用 LLM 替代推荐,而是协同工作

🎯 类比理解

传统方法 RoleGen
LLM做什么 提取兴趣标签 推理决策模式
输出性质 可能购买的物品 推理方向(引导信号)
使用方式 硬约束(召回) 软约束(引导解码)
最终推荐 直接使用LLM输出 生成模型融合后输出

🌟 本质突破:从"LLM 做推荐"进化到"LLM 引导推荐"
不是让 LLM 直接告诉你买什么,而是让 LLM 理解你的决策逻辑(从试用到投资、从单品到场景),然后用这个逻辑引导协同过滤模型生成更精准、更泛化的推荐。

2.1 工具性效应(Instrumental Effect)

物品的价值不止于其直接转化概率(固有价值),更在于它如何塑造用户意图,推动转化路径上的后续决策。
💡 举例:健康生活方式的转化路径(Figure 1)

场景:用户追求健康生活方式

  1. 用户点击了 "高端燕麦奶"(Premium Oat Milk)
  2. 用户点击了 "无糖蔬菜汁"(Sugar-free Vegetable Juice)—— 虽然没有购买
  3. 用户最终购买了 "高速榨汁机"(High-speed Blender)

关键洞察

  • 蔬菜汁虽然没有转化,但它触发了意图转变:自制鲜榨汁 → 更健康 + 更经济
  • 这个意图转变直接促成了榨汁机的购买
  • 蔬菜汁在转化路径中扮演的角色是互补品/触发器(Complementarity)

对比:传统方法只会关注蔬菜汁的 CTR(点击但未购买 = 负信号),完全忽视它的工具性作用。

Figure 1: 转化路径中的工具性效应
Figure 1:物品的工具性效应示意图。展示了健康生活方式用户的转化路径和不同物品的功能角色(Substitution, Complementarity, Audience Overlap)。
📊 Figure 1 详细图解

图片结构:两个并列场景,展示同一物品(Sugar-free Vegetable Juice)在不同上下文中的不同功能角色。

场景 1:健康生活方式用户(Healthy-Lifestyle)

Premium Oat Milk
高端燕麦奶
Complementarity
互补关系
Sugar-free Vegetable Juice
无糖蔬菜汁
触发意图转变:自制鲜榨汁 → 更健康 + 更经济
High-speed Blender
高速榨汁机
✅ 购买

虽然蔬菜汁没有购买,但它触发了意图转变,直接促成了榨汁机的购买。蔬菜汁的"工具性效应" > 直接转化价值。

场景 2:忙碌白领(Busy Office Worker)

Sugar-free Vegetable Juice
无糖蔬菜汁
Substitution
替代关系
Fish Oil
鱼油
Complementarity
互补关系
Melatonin Gummies
褪黑素软糖

同一个物品(蔬菜汁)在不同用户群体中扮演不同角色:与鱼油是替代品(功能相似的营养补充),与褪黑素是互补品(共同服务"健康管理"场景)。

🔑 核心洞察:物品的功能角色不是静态的,而是动态依赖于:
1️⃣ 用户当前意图(健康生活 vs 工作压力管理)
2️⃣ 上下文(已浏览的其他物品)
3️⃣ 转化路径的阶段(探索期 vs 决策期)

2.2 功能角色轨迹(Functional Role Trajectory)

为了建模工具性效应,RoleGen 引入了功能角色轨迹的概念:

$$I^{\text{key}}_u = [\tilde{i}_1, \tilde{i}_2, \ldots, \tilde{i}_{M_u}]$$
符号说明
  • $I^{\text{key}}_u$:从用户交互序列 $S_u$ 中提取的关键物品子序列
  • $\tilde{i}_m$:第 $m$ 个关键物品(驱动用户决策的物品)
  • $M_u$:关键物品的数量($M_u \leq N_u$)

将关键物品抽象为功能角色轨迹:

$$R_u = [\mathbf{r}_u(\tilde{i}_m)]_{m=1}^{M_u}$$
符号说明
  • $R_u$:用户 $u$ 的功能角色轨迹
  • $\mathbf{r}_u(\tilde{i}_m) \in \mathcal{R}$:物品 $\tilde{i}_m$ 的上下文相关功能角色
  • $\mathcal{R}$:功能角色空间(如 Complement, Substitute, Audience Overlap 等)
💡 为什么功能角色轨迹有效?
  1. 直觉可解释性:符合人类购买决策的推理方式
  2. 统计高效性:功能角色空间比物品空间小得多,模式复现率更高
  3. 可迁移性:跨用户和物品的决策模式可以抽象和迁移
💡 举例:功能角色的抽象与迁移

原始点击序列:早餐牛奶 → 咖啡 → 咖啡机

功能角色轨迹:日常必需品 → 场景互补品 → 高价值延伸品

可迁移模式:虽然"牛奶"和"厨房纸巾"在视觉上完全不同,但它们在决策路径中都扮演"日常必需品"的功能角色。

🛠️
§3 方法详解

3.1 整体框架

RoleGen 是一个双模块协同框架,由以下两部分组成:

RoleGen 整体架构
Conversion Trajectory Reasoner
(转化路径推理器)
Generative Behavioral Backbone
(生成式行为骨干)
Closed-loop Training
(闭环训练:Reasoning → Execution → Feedback → Reflection)

① Conversion Trajectory Reasoner

角色:意图规划器(Intent Planner)

基础:基于 LLM 的多任务 SFT

核心能力

  • 建模物品的功能角色(Functional Role)
  • 反事实推理(Counterfactual Inference)探索多样化转化路径
  • 生成候选物品的 Semantic ID(SID)

② Generative Behavioral Backbone

角色:执行引擎(Execution Engine)

基础:纯交互日志训练的 decoder-only 生成模型

核心能力

  • 将 Reasoner 的语义预测grounded 到协同信号
  • 接收 Reasoner 的 SID 级输出作为显式引导
  • 缓解 LLM 推理的语义偏差
Figure 2: RoleGen 整体架构
Figure 2:RoleGen 整体架构图。展示了 Conversion Trajectory Reasoner(Item Semantic-ID Alignment + FR-CoT + Counterfactual Inference)和 Generative Behavioral Backbone(Reasoning Injection + Lazy Cross-Attention)的协同机制及闭环训练流程(Reasoning → Execution → Feedback → Reflection)。
🏗️ Figure 2 详细架构图解

上半部分:Conversion Trajectory Reasoner(推理器)

① Item Semantic-ID Alignment(物品-SID 对齐)

输入:物品元数据(标题、价格、类目)
输出:三层 SID <s_a_*><s_b_*><s_c_*>
训练任务:Item Indexing(元数据 → SID)、Item Profiling(SID → 标题/类目)
作用:让 LLM 理解 SID 代表的物品语义

② Functional Role-guided Chain-of-Thought(FR-CoT)

推理流程<think> ... </think>):
  1. Step 1: 提取用户兴趣 Profile → $C_u$ = [化妆品, 护肤品, ...]
  2. Step 2: 识别关键物品 → $I^{\text{key}}_u$ = [面霜, 精华液, ...]
  3. Step 3: 标注功能角色 → 面霜: (Evergreen, Core, FMCG, Complementarity)
  4. Step 4: 推理目标角色 → $\hat{\mathbf{r}}^{\text{tgt}}_u$ = (Booming, Trial, ...)
输出:Target SID(符合推理角色的候选物品)

③ Counterfactual Functional Role Inference(反事实推理)

干预操作:$\text{do}(\mathbf{r}^{\text{tgt}}_u = \mathbf{r}')$
逻辑:"如果用户想要 Trial 试用品 → 生成候选 A"
逻辑:"如果用户想要 Premium 高端品 → 生成候选 B"
输出:$\{\hat{y}^{\text{rea}}_u\}$ = 多样化候选物品 SID 列表
优势:在意图级别探索,比 token 级 Beam Search 更结构化

下半部分:Generative Behavioral Backbone(执行引擎)

① Reasoning Injection(推理注入)

输入特征:用户 Profile + 历史序列 + Reasoning Guidance Features(Reasoner 的预测)
形式:候选物品 SID 列表、层次化统计特征(SID₁, SID₂ 的位置分布)
作用:为 Backbone 提供语义导航,缓解沉默用户数据稀疏

② Lazy Cross-Attention + Autoregressive Generation

编码:Context → RMSNorm → Static (k, v) cache
解码:每个 Decoder Block 包含 Lazy Cross-Attention(访问静态 cache)、Causal Self-Attention(自回归生成)、FFN(前馈网络)
生成:逐层生成 SID₁ → SID₂ → SID₃(从粗到细)

闭环机制:Reasoning → Execution → Feedback → Reflection

1. Reasoning:Reasoner 预测 $\{\hat{y}^{\text{rea}}\}$
2. Execution:Backbone 生成推荐 $\{\hat{y}^{\text{gr}}\}$
3. Feedback:用户点击/购买 → $i_{\text{gt}}$ (ground-truth item)
4. Reflection:用 $(S_u, \{\hat{y}^{\text{rea}}\}, \{\hat{y}^{\text{gr}}\}, i_{\text{gt}})$ 微调 Reasoner

目的:让 Reasoner 从协同信号中学习,校准语义推理的准确性

🔑 图的核心信息
1️⃣ 双模块协同:Reasoner 提供语义导航,Backbone 执行协同过滤
2️⃣ 显式引导:Reasoner 的 SID 级输出直接注入 Backbone 输入
3️⃣ 闭环学习:在线反馈持续优化 Reasoner 的推理质量
4️⃣ 异步解耦:Reasoner(周级更新)和 Backbone(实时服务)通过特征服务解耦

3.2 Item Semantic-ID Alignment

LLM-based 推荐的前提:让 LLM 能够识别平台物品,即将 LLM 的通用语义空间与平台的离散 ID 空间对齐。

Step 1: 词表扩展

采用快手生产环境的 RQ-KMeans 生成的 Semantic ID(SID) 作为物品唯一表示:

  • SID 编码了多模态特征(标题、图片)+ 协同信号
  • 通过 RQ-KMeans 得到三层层次化编码<s_a_306><s_b_24><s_c_730>

Step 2: 多任务指令微调

构建双向对齐任务,使用物品元数据(标题、价格、类目路径):

Task 1: Item Indexing

物品元数据 → SID

输入:[Brand] Barista Edition Oat Milk, Unsweetened & Gluten-Free, Non-GMO, 1L (Pack of 6)
输出:<s_a_306><s_b_24><s_c_730>

Task 2: Item Profiling

SID → 物品标题 / 类目

输入:<s_a_306><s_b_24><s_c_730>
输出:Barista Edition Oat MilkGrocery > Beverages > Plant-based Milk

⚠️ 防止灾难性遗忘

在 SID 对齐训练时,混入通用指令数据(如 Alpaca、ShareGPT),防止 LLM 失去通用语言能力。

🤔 为什么需要 Item Semantic-ID Alignment?

核心问题:语义鸿沟

商品确实已经有 SID 了(通过 RQ-KMeans 生成),但 LLM 并不认识这些 SID。SID 本质上是平台特定的离散 token(如 <s_a_306>),对 LLM 来说只是陌生符号。

Alignment 的三大作用:

  1. 词表扩展:将 SID token 加入 LLM 词表(LLM 预训练时没见过这些 token)
  2. 建立语义连接:让 LLM 知道 <s_a_306> = "高端燕麦奶"(物品语义)
  3. 支持推理:后续的功能角色推理需要 LLM 理解"燕麦奶"的语义(健康、植物基、饮品),才能推断它在健康场景中的作用

类比:就像教一个外国人中文。即使你告诉他"苹果"的拼音是 pingguo,他也不知道 pingguo 是什么。你需要:
1️⃣ 教他拼音系统(词表扩展)
2️⃣ 告诉他 pingguo = 红色的水果(语义连接)
3️⃣ 让他理解苹果的各种用法(支持推理)

3.3 功能角色建模(Functional Role Modeling)

动机

直接让 LLM 从稀疏交互序列预测目标物品对沉默用户来说非常困难。引入功能角色作为结构化推理中间层,提供两大优势:

  1. 可解释性:符合人类购买决策逻辑
  2. 统计高效:功能角色空间紧凑,模式复现率高

功能角色定义

物品 $i$ 在用户 $u$ 序列中的功能角色 $\mathbf{r}_u(i) \in \mathcal{R}$ 是一个多维离散向量

$$\mathbf{r}_u(i) = \left( r^{\text{pop}}(i), r^{\text{cost}}(i), r^{\text{repl}}(i), r^{\text{rel}}(i; C_u) \right)$$
四个维度
  • $r^{\text{pop}}(i)$:市场热度(Market Popularity)—— Booming / Evergreen / Long-tail
  • $r^{\text{cost}}(i)$:决策成本(Decision Cost)—— Trial(试用)/ Core(标品)/ Premium(高价)
  • $r^{\text{repl}}(i)$:复购性质(Replenishment Nature)—— FMCG(快消品)/ Durables(耐用品)
  • $r^{\text{rel}}(i; C_u)$:上下文意图角色(Contextual Intent Role)—— Complementarity / Substitution / Audience Overlap
💡 举例:空气炸锅的功能角色

假设一个用户最近浏览了健康食品类目,然后点击了空气炸锅:

  • $r^{\text{pop}} = \text{Booming}$(当前热门品类)
  • $r^{\text{cost}} = \text{Premium}$(价格较高,需要决策考量)
  • $r^{\text{repl}} = \text{Durables}$(耐用品,非快消)
  • $r^{\text{rel}} = \text{Complementarity}$(与用户兴趣 Profile 中的"健康饮食"类目互补)
🎯 功能角色建模:完整输入输出示例

Example 1: 健康生活方式用户

输入:用户交互序列

S_u = [(燕麦奶, click, t₁), (蔬菜汁, click, t₂), (榨汁机, purchase, t₃)]

Step 1: 提取用户兴趣 Profile

从历史行为聚合:
C_u = [("Plant-based Milk", 0.8), ("Healthy Beverages", 0.7), ("Kitchen Appliances", 0.3)]

Step 2: 标注关键物品的功能角色

物品 $r^{\text{pop}}$ $r^{\text{cost}}$ $r^{\text{repl}}$ $r^{\text{rel}}(i; C_u)$
燕麦奶 Evergreen Core FMCG (Plant-based Milk, -)
蔬菜汁 Booming Trial FMCG (Healthy Beverages, Complementarity)
榨汁机 Evergreen Premium Durables (Kitchen Appliances, Complementarity)

Step 3: 构建功能角色轨迹

R_u = [
  (Evergreen, Core, FMCG, -),                     # 燕麦奶
  (Booming, Trial, FMCG, Complementarity),   # 蔬菜汁
  (Evergreen, Premium, Durables, Complementarity) # 榨汁机
]
🔗 R_u 如何在 Step 4 中使用?

功能角色轨迹 R_u 会作为 LLM 的推理上下文,用于:

  1. 识别转化模式:看到 (Evergreen, Core, FMCG) → (Booming, Trial, FMCG) → (Evergreen, Premium, Durables),LLM 识别出 Core → Trial → Premium(价格递进)+ FMCG → Durables(品类跃迁)
  2. 捕捉意图演化:连续两个 Complementarity 表明用户在构建完整消费场景;Trial(蔬菜汁)没有购买,但作为"意图触发器"推动了 Premium(榨汁机)转化
  3. 推断下一步角色:基于轨迹模式,LLM 推理"下一个物品应该也是 (*, Premium, Durables, Complementarity)",或者反事实"如果用户想要 Trial 试用品呢?→ (*, Trial, *, Complementarity)"

类比:R_u 就像一个决策路径的"脚本"。LLM 看到这个脚本后,能理解:
"用户正在从日常消费(燕麦奶)→ 场景探索(蔬菜汁)→ 设备投资(榨汁机)的升级路径"
然后预测:"下一步可能继续这个场景(如水果刀、保鲜盒)或升级到更高端设备"

Step 4: FR-CoT 推理(Reasoner 内部思考)

<think>
输入轨迹: R_u = [(Evergreen,Core,FMCG,-), (Booming,Trial,FMCG,Comp), (Evergreen,Premium,Durables,Comp)]
用户兴趣: Plant-based Milk, Healthy Beverages

轨迹解读:
  • 燕麦奶 (Evergreen, Core, FMCG) → 日常必需品,建立基础需求
  • 蔬菜汁 (Booming, Trial, FMCG, Complementarity) → 健康场景互补品,触发"自制更健康"意图
  • 榨汁机 (Evergreen, Premium, Durables, Complementarity) → 高价值延伸,实现自制场景

模式识别:
  ✓ 价格路径:Core → Trial → Premium(用户愿意为场景投资)
  ✓ 连续 Complementarity → 构建完整"自制健康饮品"场景
  ✓ FMCG → Durables → 从消费品到设备投资

推理逻辑:
  基于 R_u 的模式,用户下一步可能:
  方案 A: 继续 Premium + Complementarity → 高端榨汁机配件
  方案 B: 回到 Trial → 新的健康食材试用装
  方案 C: 保持 Durables + Complementarity → 其他厨房设备

选择方案 A: r_tgt = (Evergreen, Premium, Durables, Complementarity)
</think>

→ 预测: 高速榨汁机配件 <s_a_4><s_b_259><s_c_758>

Example 2: 沉默用户跨类目推荐

输入:稀疏交互序列

S_u = [(粉底液, click), (口红, click), (内衣, click), (精华液, click)]
C_u = [("Cosmetics", 0.9), ("Intimate Apparel", 0.6), ("Skin Care", 0.4)]
Ground Truth: 用户实际购买了面膜(新类目!)

对比:w/o Reasoner vs RoleGen

❌ w/o Reasoner

方法:协同过滤
逻辑:找相似用户,推荐重复类目
预测:内衣(重复历史)
问题:陷入自我强化循环

✅ RoleGen

推理
化妆品 + 精华液 → 女性护肤人群
意图转变:日常化妆 → 深度自我护理
目标角色:(Booming, Trial, FMCG, Audience Overlap)
预测:面膜 ✅
关键:与 Cosmetics 有受众重叠

Step 5: 反事实推理(多样化探索)

路径 1: do(r_tgt = (*, Trial, *, Audience Overlap))
  → 候选:面膜(9.9元试用装)

路径 2: do(r_tgt = (*, Premium, *, Complementarity))
  → 候选:高端面霜

路径 3: do(r_tgt = (*, *, *, Complementarity to Skin Care))
  → 候选:护肤套装

最终输出: {ŷ_rea} = [面膜, 面霜, 护肤套装]

🔑 关键问题:Reasoner 输出的 SID 有什么用?

❌ 常见误解:Reasoner 的输出 = 最终推荐结果

✅ 正确理解:Reasoner 的输出是给 Generative Behavioral Backbone 的引导信号(Reasoning Guidance Features)

完整流程(双模块协同):
  1. Reasoner 推理(近线,每周批量):
    输入:用户序列 S_u
    输出:{ŷ_rea} = [面膜_SID, 面霜_SID, 护肤套装_SID] ← 这不是最终推荐!
  2. 特征注入(存储到 Feature Store):
    将 {ŷ_rea} 转换为 Reasoning Guidance Features
    • 候选 SID 列表:[<s_a_4>, <s_a_179>, <s_a_88>]
    • 层次化统计:SID₁ 分布 {<s_a_4>: 0.6, <s_a_179>: 0.3, ...}
  3. Backbone 生成(在线,实时服务):
    输入:用户实时序列 + Reasoning Guidance Features
    解码:自回归生成,在每一层 SID 生成时,参考 Reasoner 的引导
    输出:最终推荐 {ŷ_gr} = [面膜_A, 面膜_B, 精华液_C, 面霜_D, ...] ← 这才是用户看到的推荐!
🎯 Reasoner 输出的三大作用:
  1. 方向引导:告诉 Backbone "应该往面部护理方向生成"(语义导航)
  2. 概率约束:在解码时提高 <s_a_4> 这个 SID₁ 的生成概率(软约束)
  3. 多样性探索:通过反事实推理提供多条路径,避免 Backbone 陷入单一模式
❓ 为什么不直接用 Reasoner 的输出作为推荐?
  1. 语义偏差:LLM 推理基于"世界知识",可能不符合平台的协同信号
  2. 延迟问题:LLM 推理慢(秒级),无法实时服务
  3. 精度不足:Reasoner 只推理"大方向"(面部护理),Backbone 结合协同信号给出精准 SKU(哪个品牌的面膜)

💡 类比
Reasoner = GPS 导航,告诉你"往东走,去商场"(语义级引导)
Backbone = 真正开车的司机,结合实时路况(协同信号),决定具体走哪条路、在哪个路口转弯(精准 SKU 级推荐)

两者协同,才能又快又准地到达目的地!

🔑 为什么功能角色建模有效?
1️⃣ 抽象层次更高:物品空间(1000万 SKU)→ 功能角色空间(54 种组合),模式密集易泛化
2️⃣ 捕捉动态关系:物品在上下文中的"工具性作用",而非静态关联
3️⃣ 可迁移性:"牛奶"和"厨房纸巾"在物品空间无关,但都是 (Evergreen, Trial, FMCG, -),决策模式可迁移
4️⃣ 可解释性:推荐理由从"其他用户也买了"→"符合你从 Trial 到 Premium 的升级路径"

上下文意图角色的构建(Contextual Intent Role)

前三个维度是固有属性(intrinsic),第四个维度 $r^{\text{rel}}$ 是上下文相关的,需要结合用户的累积兴趣 Profile $C_u$:

$$r^{\text{rel}}(i; C_u) = (c^*, \text{Rel}_{c^* \to c(i)})$$

其中:

$$c^* = \arg\max_{c \in C_u} \left[ \text{Score}_u(c) \cdot \mathbb{I}[\exists \text{Rel}_{c \to c(i)}] \right]$$
符号说明
  • $C_u = [c_k]_{k=1}^{L_u}$:用户的兴趣 Profile(按行为权重排序的类目列表)
  • $c(i)$:物品 $i$ 的类目
  • $\text{Rel}_{c \to c(i)}$:从类目 $c$ 到 $c(i)$ 的关系类型(Complementarity / Substitution / Audience Overlap)
  • $\text{Score}_u(c)$:用户对类目 $c$ 的行为加权兴趣分数
💡 决策知识图谱(Decision Knowledge Graph)

RoleGen 从大规模交互日志中构建了电商领域决策知识图谱,编码类目之间的三种关系:

  • Complementarity(互补):场景完成所需的补充品(如 手机 → 手机支架)
  • Substitution(替代):功能相似的替代品(如 牛奶 → 豆奶)
  • Audience Overlap(受众重叠):吸引相似用户群体的物品(如 瑜伽垫 → 运动水杯)

3.4 FR-CoT 指令微调(Functional Role-guided Chain-of-Thought)

基于功能角色轨迹 $R_u$,设计FR-CoT 目标,将沉默用户转化建模为结构化推理问题。

FR-CoT 的三步推理逻辑

LLM 的输出被包裹在 <think> 标签中,遵循三步推理:

FR-CoT 推理流程
Step 1
提炼用户兴趣 Profile $C_u$
Step 2
识别关键物品 $I^{\text{key}}_u$ 及角色 $R_u$
Step 3
推理目标物品角色 $\hat{\mathbf{r}}^{\text{tgt}}_u$
输出 SID
🔑 关键设计:角色先行(Role-first Decoding)

在生成物品 ID 之前,先预测目标物品的功能角色 $\hat{\mathbf{r}}^{\text{tgt}}_u$。

作用

  • 作为意图锚点(Intent Anchor),剪枝搜索空间
  • 约束生成的物品与推理逻辑一致(如 Trial → Premium 升级)

联合辅助任务

为了增强推理鲁棒性,FR-CoT 与以下辅助任务联合优化:

① 标准行为预测

$S_u \to \text{target SID}$

$S_u \to \text{target title}$

保留直接协同过滤能力

② 逐步推理子任务

$S_u \to I^{\text{key}}_u$(定位关键物品)

$(S_u, I^{\text{key}}_u) \to R_u$(重建角色轨迹)

$(S_u, R_u, \mathbf{r}^{\text{tgt}}) \to \text{SID}$(基于角色生成)

③ 语义对齐回放

重放 Item Indexing 和 Item Profiling 任务,防止灾难性遗忘。

3.5 反事实功能角色推理(Counterfactual Functional Role Inference)

动机:打破自我强化循环

即使有 FR-CoT,沉默用户的预测角色 $\hat{\mathbf{r}}^{\text{tgt}}_u$ 仍可能陷入自我强化循环

  • 稀疏交互 → MLE 倾向于拟合主导但可能过时的兴趣
  • 导致兴趣坍塌(Interest Collapse)和马太效应
  • 标准 Beam Search 只在 token 级操作,一旦高层意图锚点确定,多样性就结构性受限
⚠️ 关键洞察

探索必须发生在意图层级(intent level),而非物品层级(item level)。

解决方案:反事实干预

不直接使用 FR-CoT 预测的 $\hat{\mathbf{r}}^{\text{tgt}}_u$,而是施加反事实干预

$$\text{do}(\mathbf{r}^{\text{tgt}}_u = \mathbf{r}')$$

其中 $\mathbf{r}'$ 从候选角色集 $\tilde{\mathcal{R}}^{\text{tgt}}_u$ 中采样,该集合由两部分构成:

  1. 轨迹 $R_u$ 中已观察到的角色
  2. 全局频繁转化角色(从历史成功转化中挖掘)

然后重用 FR-CoT 的 Prompt,但将目标角色替换为反事实角色 $\mathbf{r}'$,让 Reasoner 预测对应的物品 $\hat{i}^{\text{rea}}_u$:

$$(u, S_u), \langle\text{think}\rangle C_u, R_u, \mathbf{r}' \sim P(\tilde{\mathcal{R}}^{\text{tgt}}_u), \langle/\text{think}\rangle \xrightarrow{\text{Reasoner}} \hat{i}^{\text{rea}}_u$$
符号说明
  • $(u, S_u)$:用户上下文
  • $C_u$:用户兴趣 Profile
  • $R_u$:功能角色轨迹
  • $\mathbf{r}' \sim P(\tilde{\mathcal{R}}^{\text{tgt}}_u)$:从候选角色集中采样的反事实角色
  • $\hat{i}^{\text{rea}}_u$:Reasoner 预测的候选物品
💡 举例:反事实推理如何打破循环

场景:用户历史主要浏览低价快消品(如纸巾、清洁剂),FR-CoT 预测目标角色为 FMCG + Trial(快消 + 试用)。

问题:这会导致推荐系统持续推荐低价快消品,陷入自我强化循环。

反事实干预

  • 候选角色集 $\tilde{\mathcal{R}}^{\text{tgt}}_u$ 包含:(FMCG, Trial)(Durables, Premium)(Evergreen, Core)
  • 采样到 $\mathbf{r}' = \text{(Durables, Premium)}$(耐用品 + 高价)
  • Reasoner 被问:"如果用户意图是购买耐用高价品,最可能转化的物品是什么?"
  • 输出候选:小家电(如空气炸锅、扫地机器人)

结果:打破了低价快消的循环,探索到了高价值升级路径。

💡 反事实机制的两大优势
  1. 逻辑约束的探索:在角色空间干预产生结构化多样性,保持与用户意图一致
  2. 高效多候选生成:在低基数角色空间操作,无需重新计算整个推理轨迹,可并行生成多个反事实候选

3.6 生成式行为骨干(Generative Behavioral Backbone)

虽然 Reasoner 能捕获用户意图,但仅依赖它进行在线服务是次优的:

  • LLM 预测可能偏离隐式协同过滤模式(semantic bias)
  • 推理延迟高,难以满足实时响应要求
  • 缓存策略引入数据陈旧性

因此,RoleGen 使用生成式行为骨干作为执行引擎,Reasoner 作为知识引导的规划器。

架构设计

骨干采用decoder-only 生成架构,将物品表示为层次化 SID,转化为结构化 token 生成任务:

Backbone 前向传播
用户特征
(Profile + History)
Linear + RMSNorm
→ $\mathbf{T}$ → $(풌, 풗)$
Decoder Blocks
(Lazy Cross-Attn + Self-Attn + FFN)
自回归生成
SID₁ → SID₂ → SID₃
🔧 Lazy Cross-Attention 机制

为了优化推理效率,每个 decoder block 使用惰性交叉注意力

  • 用户上下文 $\mathbf{T}$ 被归一化为静态 KV 缓存 $(풌, 풗)$
  • 所有 decoder 层共享该缓存,避免冗余投影
  • 后接标准的 causal self-attention 和 position-wise FFN

3.7 闭环协同训练(Co-Training Strategy)

为了充分弥合语义推理与协同执行之间的 gap,RoleGen 建立了双向闭环

Reasoning–Execution–Feedback–Reflection 闭环
Reasoner
推理候选 $\{\hat{i}^{\text{rea}}_u\}$
Backbone
生成推荐 $\{\hat{i}^{\text{gr}}_u\}$
在线曝光
收集反馈 $i_{\text{gt}}$
Reflection
校准 Reasoner

① 前向引导:推理注入(Reasoning Injection)

将 Reasoner 的反事实推理注入到生成骨干中,缓解沉默用户的信号稀疏性:

  • 编码 Reasoner 的预测 $\{\hat{i}^{\text{rea}}_u\}$ 为推理引导特征(Reasoning Guidance Features)
  • 包含:原始候选物品列表 + 层次化语义统计(如粗粒度 SID 的位置模式)
  • 拼接到 Backbone 的输入上下文,提供显式语义导航线索

② 后向对齐:行为反思(Behavioral Reflection)

利用 Backbone 作为协同镜像来校准 Reasoner,构建后验指令微调任务:

$$(S_u, \{\hat{i}^{\text{rea}}_u\}, \{\hat{i}^{\text{gr}}_u\}) \xrightarrow{\text{Reasoner Reflection}} i_{\text{gt}}$$
符号说明
  • $S_u$:原始用户交互序列
  • $\{\hat{i}^{\text{rea}}_u\}$:Reasoner 的推荐
  • $\{\hat{i}^{\text{gr}}_u\}$:Backbone 的推荐
  • $i_{\text{gt}}$:在线曝光后的真实反馈物品(ground-truth)

机制:通过反思过程,Reasoner 迭代地将其语义逻辑与实际协同证据对齐,形成良性循环。

💡 举例:反思机制如何工作

场景

  • Reasoner 基于功能角色推理,预测用户会购买"高端咖啡机"(Premium, Durables)
  • Backbone 基于协同过滤,推荐了"咖啡豆"(Trial, FMCG)
  • 在线曝光后,用户实际点击并购买了"咖啡豆"($i_{\text{gt}} = \text{咖啡豆}$)

反思阶段

  • 将 $(S_u, \{\text{咖啡机}\}, \{\text{咖啡豆}\})$ 作为新的训练样本
  • Reasoner 学习到:在该用户当前阶段,Trial 类快消品比 Premium 耐用品更容易转化
  • 下次遇到类似用户时,Reasoner 会调整其推理逻辑

系统部署(System Deployment)

RoleGen 已部署在快手电商平台(700M+ MAU),采用异步协同架构

Reasoner:近线推理

  • 每周更新和推理
  • 生成候选物品的 SID
  • 作为引导特征注入 Backbone

Backbone:在线服务

  • 支持流式更新
  • 实时响应用户请求
  • 低延迟(P99 < 50ms)
Figure 3: 在线部署架构
Figure 3:RoleGen 在线部署框架。Near-line Reasoning:Conversion Trajectory Reasoner 每周批量推理,生成 Reasoning Guidance Features;Online Serving:Generative Behavioral Backbone 实时读取引导特征,自回归生成推荐结果,收集反馈供下一轮 Reflection。
🏭 Figure 3 在线部署架构详解

设计哲学:异步协同

📅 Near-line Reasoning(近线推理)

频率:每周批量更新

模块:Conversion Trajectory Reasoner

流程

  1. 从日志收集并预处理数据
  2. 批量推理生成 Reasoning Guidance Features:
    • 候选物品 SID 列表
    • 层次化统计特征(SID₁, SID₂ 分布)
  3. 存储到特征服务(Feature Store)

特点:计算密集(LLM推理),但不在关键路径上

⚡ Online Serving(在线服务)

频率:实时响应每个推荐请求

模块:Generative Behavioral Backbone

流程

  1. 接收用户推荐请求
  2. 读取 Reasoning Guidance Features
  3. 读取用户实时行为序列
  4. 自回归生成 SID₁ → SID₂ → SID₃
  5. 返回推荐结果(SID → Item)
  6. 曝光后收集反馈 → 下轮 Reflection

特点:低延迟(<50ms),支持流式更新

维度 Reasoner(近线) Backbone(在线)
延迟要求不敏感(批量处理)极低(<50ms)
计算成本高(LLM推理)中(生成模型)
更新频率周级实时流式
作用提供语义导航执行精准召回
解耦方式通过 Feature Store 异步通信

🔑 关键优势
1️⃣ Reasoner 不在关键路径:LLM 推理慢不影响线上延迟
2️⃣ Backbone 实时响应:利用最新协同信号,毫秒级返回
3️⃣ 解耦灵活:两者独立扩展,通过 Feature Store 解耦
4️⃣ 成本可控:Reasoner 周级推理节省大量 LLM 调用成本

📊
§4 实验结果

4.1 离线实验(Offline Evaluation)

数据集:快手电商平台大规模真实数据

  • 训练:2200 万沉默转活跃用户(过去 3 个月),涉及 2800 万物品
  • 反事实推理:1400 万沉默用户
  • 测试:700 万正样本 user-item 交互对

对比模型

  • SASRec:SOTA 序列推荐模型(self-attention)
  • TIGER:生成式推荐先驱(RQ-VAE + 自回归生成)
  • U2I & I2I:快手电商在线召回主力(占 80% 订单)
  • w/o Rea:RoleGen 的生成骨干(无 Reasoner 干预)
  • RoleGen:完整框架

物品召回指标(Item Hitrate)

类别模型HI@1HI@10HI@100HI@500Loss
离线 SeqRecSASRec1.86%2.93%5.11%14.37%-
TIGER4.73%7.88%14.86%19.53%-
生产召回I2I4.38%8.12%17.82%21.68%-
U2I3.19%4.26%6.95%15.74%-
Oursw/o Rea5.11%10.26%20.54%31.26%3.2950
RoleGen10.93%14.89%24.07%33.98%3.0443
✅ 关键发现
  • RoleGen 在 HI@1 上比 TIGER 提升 6.2%(10.93% vs 4.73%)
  • 相比生产召回主力 I2I,HI@1 提升 149%(10.93% vs 4.38%)
  • w/o Rea 已超过所有 baseline,说明生成式范式本身有效
  • 加入 Reasoner 后在小 K 值上提升显著,证明功能角色推理的价值

语义 ID 指标(SID Hitrate & MRR)

模型HS₁@1HS₂@1HS₃@1MS₁@10MS₂@10MS₃@10
TIGER19.83%33.47%50.24%27.35%46.59%60.16%
w/o Reasoner24.51%38.09%56.32%31.55%51.43%64.93%
RoleGen30.12%41.77%56.41%38.72%53.35%65.28%
💡 分析

性能提升主要集中在 SID₁ 和 SID₂(粗粒度语义层),这与协同训练策略一致:

  • Reasoning Injection 主要利用前两层 SID 的统计特征
  • 粗粒度 SID 更能反映功能角色的高层语义(如类目、价格段)

4.2 消融实验(Ablation Study)

Figure 4: 消融实验结果
Figure 4:消融实验。左图:物品召回 Hit Item @1 逐步提升(Item Align 1/2 → w/o Reasoning → Reasoning → Reflection,从~5%提升至~19%);右图:生成质量 BertScore F1 在各阶段保持稳定(85-90),证明各组件有效且不损害通用能力。
📈 Figure 4 消融实验详解

左图:Hit Item @1 性能曲线 - 展示了 5 个训练阶段的渐进提升:

  1. Item Align 1 (~5%):全局物品对齐,建立基础认知
  2. Item Align 2 (~10%):高质量物品精调,+5% 提升(课程学习效果)
  3. w/o Reasoning (~12%):标准行为预测(纯协同过滤),+2% 提升
  4. Reasoning (~18%):加入 FR-CoT 功能角色推理,+6% 巨大跳跃
  5. Reflection (~19%):行为反思机制,+1% 提升(微调校准)

✨ 核心发现:FR-CoT 带来的提升最大(+6%),证明功能角色推理是核心创新,其价值远超标准协同过滤。

右图:BertScore F1(生成质量) - 验证模型没有灾难性遗忘:

  • 通用语言能力(General)保持在 85-90,全程稳定
  • 物品语义生成(Item Profiling)同步提升
  • 证明:功能角色推理没有损害 LLM 的通用能力

4.3 泛化能力分析 & 案例研究

缓解马太效应(Matthew Effect Mitigation)

RoleGen 显著提升了长尾物品的曝光率:

Figure 5: 马太效应缓解分析
Figure 5:马太效应缓解分析。横轴为物品热度(高→低),纵轴为曝光比率(w/ Reasoner vs w/o Reasoner,基线 Ratio=1.0)。高热度物品 Ratio≈1.0,长尾物品 Ratio 显著 >1.0,最高达 2.2。Reasoner 通过功能角色推理打破"热门越热,冷门越冷"循环。
📊 Figure 5 马太效应缓解详解

图表类型:曲线图(曝光比率) + 直方图(物品分布)

横轴:物品热度(High Popularity → Low Popularity)
  • 左侧:头部爆款(高点击、高购买)
  • 右侧:长尾物品(低曝光、低互动)

纵轴:曝光比率 = (w/ Reasoner 曝光量) / (w/o Reasoner 曝光量)
  • Ratio = 1.0:基线,无差异
  • Ratio > 1.0:Reasoner 增加了曝光
  • Ratio < 1.0:Reasoner 减少了曝光

关键观察

  • 高热度区域(左侧):Ratio ≈ 1.0 → 头部爆款曝光不变
  • 长尾区域(右侧):Ratio 显著 > 1.0,最高达 2.2 → 长尾曝光翻倍!

💡 业务意义
传统推荐:沉默用户 → 冷启动 → 只敢推热门 → 更冷启动(恶性循环)
RoleGen:功能角色推理 → 发现长尾物品的"工具性价值" → 打破循环

举例:传统方法只敢推"燕麦奶"(爆款),RoleGen 能发现"有机奇亚籽"(长尾)在健康场景中的互补作用,给长尾物品曝光机会。

OOD 泛化测试(Out-of-Distribution)

OOD 定义:目标物品的 SID₁(粗粒度类目)从未在用户历史序列中出现。

模型HS₁@10HS₁@20HS₂@10HS₂@20
w/o Reasoner2.06%4.33%10.97%15.88%
RoleGen3.12%5.25%20.53%28.48%
✅ 关键发现

RoleGen 在 OOD 场景下泛化能力显著更强,尤其在 HS₂@10 上提升 87%(20.53% vs 10.97%)。

这证明功能角色抽象能有效迁移跨类目的决策模式。

案例研究(Case Study)

Figure 6: 意图泛化案例
Figure 6:意图泛化案例。用户历史集中在内衣和化妆品,Ground Truth 为面膜。w/o Reasoner 陷入自我强化循环,重复推荐内衣;RoleGen 通过"Audience Overlap"功能角色推理,成功预测面部护理产品,突破过滤气泡。
🎯 Figure 6 意图泛化案例详解

用户画像

历史行为:主要浏览 内衣、化妆品
兴趣 Profile:C_u = [化妆品 (0.9), 内衣 (0.6), 护肤品 (0.4)]
Ground Truth:用户实际购买了 面膜(面部护理类,新类目!)

❌ w/o Reasoner

预测 SID<s_a_1679><s_b_576><s_c_1481>

预测物品:内衣(重复历史类目)

推理方式:协同过滤
逻辑:只看到"化妆品 → 内衣"的历史模式
问题陷入自我强化循环,无法跳出已有类目

✅ RoleGen

预测 SID<s_a_4><s_b_259><s_c_758>

预测物品:面膜(面部护理)

推理方式:功能角色推理
识别意图转变:从"日常穿着"转向"深度自我护理"
关键角色Audience Overlap(与化妆品用户群重叠)
结果成功泛化到新类目,打破过滤气泡

🔍 关键推理链

化妆品(历史)
  ↓ [识别] 用户关注"自我护理 / 美容"
面膜(候选)
  ↓ [推理] 与化妆品有 Audience Overlap
  ↓ [决策] 虽然面膜从未出现在历史中,但符合潜在意图
✅ 成功跨类目推荐

🔑 图的核心信息
传统协同过滤只能推荐"相似用户也买了"的物品,无法跨类目泛化。
RoleGen 通过功能角色抽象,发现"化妆品"和"面膜"在受众群体使用场景上的深层联系,实现意图级别的泛化推理。

💡 案例分析:功能角色如何工作

关键推理步骤

  1. 用户兴趣 Profile $C_u$:化妆品、内衣(女性个护类目)
  2. Reasoner 识别潜在意图转变:从"日常穿着"转向"自我护理"
  3. 推理目标物品功能角色:Audience Overlap(与化妆品用户群重叠)
  4. 生成候选:面膜(满足"自我护理"意图 + 受众重叠)

对比:w/o Reasoner 只看到"化妆品 → 内衣"的历史模式,无法跳出循环。

4.4 在线 A/B 测试(Online Evaluation)

测试规模:分配 10% 流量,持续数周

模型DAC(日活购买用户)CTR(点击率)CVR(转化率)订单量
RoleGen+5.57%+5.38%+6.71%+7.3%
🎉 在线效果(相比生产 Baseline,p < 0.05)
  • 日活购买用户(DAC)+5.57%
  • 订单量 +7.3%
  • 转化率(CVR)+6.71%

业务意义:显著唤醒沉默用户,推动 GMV 增长,同时改善推荐生态(缓解马太效应)。

🎯
§5 总结与启发

5.1 核心贡献

  1. 功能角色轨迹(Functional Role Trajectory):首次显式建模物品的工具性效应,将推荐从"单步点级预测"提升到"转化路径推理"
  2. 反事实推理(Counterfactual Inference):在意图层级施加干预,打破自我强化循环,生成多样化候选
  3. 闭环协同训练(Closed-loop Co-Training):LLM Reasoner(语义推理)+ Generative Backbone(协同执行)+ Reflection(反馈校准)三位一体
  4. 工业落地验证:快手电商平台 700M+ MAU 在线部署,订单量 +7.3%

5.2 关键洞察

🔑 洞察 1:物品的双重价值

  • 固有价值(Intrinsic Value):直接转化概率(传统 CTR)
  • 工具价值(Instrumental Value):塑造意图、推动后续转化

对于沉默用户,工具价值可能比固有价值更重要。

🔑 洞察 2:功能角色的可迁移性

  • 物品空间大、稀疏、噪声多
  • 功能角色空间小、稠密、模式可复现

跨用户和物品的决策模式可以通过功能角色抽象和迁移。

🔑 洞察 3:LLM + CF 的协同必要性

  • LLM:提供世界知识和语义推理,缓解数据稀疏
  • CF:提供平台特定的协同信号,grounded 预测
  • 闭环:通过反馈-反思机制持续对齐两者

5.3 与相关工作的区别

方法核心思路沉默用户问题工具性效应
RecGPTLLM 生成 item tags❌ 只做静态 Profile 补全❌ 只评估固有价值
Align3GRLLM-GNN 多层对齐❌ 未专门针对沉默用户❌ 未建模转化路径
TIGER生成式推荐(SID)⚠️ 通用框架,无特殊处理❌ 无功能角色推理
ColdLLMLLM 模拟冷启动交互⚠️ 针对冷启动,非沉默用户❌ 单步预测
RoleGenFR-CoT + 反事实推理✅ 专门设计✅ 显式建模

5.4 启发与展望

💡 对推荐系统的启发
  1. 推荐不是单步任务:应建模完整的转化路径和意图演化
  2. 功能角色是有效的中间表示:在物品空间和意图空间之间架桥
  3. LLM 的价值不止于语义增强:可用于结构化推理和反事实探索
  4. 闭环机制至关重要:语义推理需要协同信号 grounding,反之协同执行需要语义引导
🚀 未来方向
  • 更细粒度的功能角色:扩展到情感、场景、季节等维度
  • 多模态功能角色:结合图片、视频的视觉功能角色
  • 用户级功能角色:建模用户在生态中的功能角色(KOL、跟随者、探索者等)
  • 实时反事实推理:在线动态调整反事实干预策略
  • 跨域迁移:功能角色能否在不同平台/场景间迁移?
⚠️ 局限与挑战
  • 功能角色定义的主观性:当前由人工设计,未来可否自动学习?
  • 反事实采样策略:如何设计更优的候选角色集?
  • 计算成本:LLM Reasoner 即使是近线推理,成本仍然较高
  • 可解释性:虽然功能角色提升了可解释性,但 LLM 内部推理过程仍是黑盒