1.1 沉默用户(Dormant Users)
定义:在电商平台上保持活跃(浏览、点击),但在过去 30 天内没有任何购买行为的用户。
🔴 沉默用户的现状
快手电商平台数据:
- 占 DAU(日活)的 40%+
- 贡献 PV(页面浏览)的 35%+
- 但订单占比 <20%
高参与度,低转化率 → 巨大的潜在 GMV 增长空间
⚠️ 与冷启动用户的区别
冷启动用户:几乎没有交互历史($|S_u| \approx 0$)
沉默用户:
- 有中等程度的浏览行为
- 点击序列长度约为普通用户的 14%
- 存在严重的数据稀疏性
- 陷入自我强化反馈循环
- $\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 补全)
这些方法只关注单步、点级的物品推荐,即预测用户对某个物品的即时反应(immediate CTR)。
然而,这忽视了真实消费旅程中物品的工具性效应(instrumental effect):
- 某些物品即使不被购买,也能作为触发器改变用户的潜在意图
- 推动后续物品的转化
💎 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)
物品的价值不止于其直接转化概率(固有价值),更在于它如何塑造用户意图,推动转化路径上的后续决策。
场景:用户追求健康生活方式
- 用户点击了 "高端燕麦奶"(Premium Oat Milk)
- 用户点击了 "无糖蔬菜汁"(Sugar-free Vegetable Juice)—— 虽然没有购买
- 用户最终购买了 "高速榨汁机"(High-speed Blender)
关键洞察:
- 蔬菜汁虽然没有转化,但它触发了意图转变:自制鲜榨汁 → 更健康 + 更经济
- 这个意图转变直接促成了榨汁机的购买
- 蔬菜汁在转化路径中扮演的角色是互补品/触发器(Complementarity)
对比:传统方法只会关注蔬菜汁的 CTR(点击但未购买 = 负信号),完全忽视它的工具性作用。
图片结构:两个并列场景,展示同一物品(Sugar-free Vegetable Juice)在不同上下文中的不同功能角色。
场景 1:健康生活方式用户(Healthy-Lifestyle)
高端燕麦奶
互补关系
无糖蔬菜汁
高速榨汁机
虽然蔬菜汁没有购买,但它触发了意图转变,直接促成了榨汁机的购买。蔬菜汁的"工具性效应" > 直接转化价值。
场景 2:忙碌白领(Busy Office Worker)
无糖蔬菜汁
替代关系
鱼油
互补关系
褪黑素软糖
同一个物品(蔬菜汁)在不同用户群体中扮演不同角色:与鱼油是替代品(功能相似的营养补充),与褪黑素是互补品(共同服务"健康管理"场景)。
🔑 核心洞察:物品的功能角色不是静态的,而是动态依赖于:
1️⃣ 用户当前意图(健康生活 vs 工作压力管理)
2️⃣ 上下文(已浏览的其他物品)
3️⃣ 转化路径的阶段(探索期 vs 决策期)
2.2 功能角色轨迹(Functional Role Trajectory)
为了建模工具性效应,RoleGen 引入了功能角色轨迹的概念:
- $I^{\text{key}}_u$:从用户交互序列 $S_u$ 中提取的关键物品子序列
- $\tilde{i}_m$:第 $m$ 个关键物品(驱动用户决策的物品)
- $M_u$:关键物品的数量($M_u \leq N_u$)
将关键物品抽象为功能角色轨迹:
- $R_u$:用户 $u$ 的功能角色轨迹
- $\mathbf{r}_u(\tilde{i}_m) \in \mathcal{R}$:物品 $\tilde{i}_m$ 的上下文相关功能角色
- $\mathcal{R}$:功能角色空间(如 Complement, Substitute, Audience Overlap 等)
- 直觉可解释性:符合人类购买决策的推理方式
- 统计高效性:功能角色空间比物品空间小得多,模式复现率更高
- 可迁移性:跨用户和物品的决策模式可以抽象和迁移
原始点击序列:早餐牛奶 → 咖啡 → 咖啡机
功能角色轨迹:日常必需品 → 场景互补品 → 高价值延伸品
可迁移模式:虽然"牛奶"和"厨房纸巾"在视觉上完全不同,但它们在决策路径中都扮演"日常必需品"的功能角色。
3.1 整体框架
RoleGen 是一个双模块协同框架,由以下两部分组成:
(转化路径推理器)
(生成式行为骨干)
(闭环训练: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 推理的语义偏差
上半部分: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>):
- Step 1: 提取用户兴趣 Profile → $C_u$ = [化妆品, 护肤品, ...]
- Step 2: 识别关键物品 → $I^{\text{key}}_u$ = [面霜, 精华液, ...]
- Step 3: 标注功能角色 → 面霜: (Evergreen, Core, FMCG, Complementarity)
- Step 4: 推理目标角色 → $\hat{\mathbf{r}}^{\text{tgt}}_u$ = (Booming, Trial, ...)
③ Counterfactual Functional Role Inference(反事实推理)
逻辑:"如果用户想要 Trial 试用品 → 生成候选 A"
逻辑:"如果用户想要 Premium 高端品 → 生成候选 B"
输出:$\{\hat{y}^{\text{rea}}_u\}$ = 多样化候选物品 SID 列表
优势:在意图级别探索,比 token 级 Beam Search 更结构化
下半部分:Generative Behavioral Backbone(执行引擎)
① Reasoning Injection(推理注入)
形式:候选物品 SID 列表、层次化统计特征(SID₁, SID₂ 的位置分布)
作用:为 Backbone 提供语义导航,缓解沉默用户数据稀疏
② Lazy Cross-Attention + Autoregressive Generation
解码:每个 Decoder Block 包含 Lazy Cross-Attention(访问静态 cache)、Causal Self-Attention(自回归生成)、FFN(前馈网络)
生成:逐层生成 SID₁ → SID₂ → SID₃(从粗到细)
闭环机制:Reasoning → Execution → Feedback → Reflection
目的:让 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 Milk 或 Grocery > Beverages > Plant-based Milk
在 SID 对齐训练时,混入通用指令数据(如 Alpaca、ShareGPT),防止 LLM 失去通用语言能力。
核心问题:语义鸿沟
商品确实已经有 SID 了(通过 RQ-KMeans 生成),但 LLM 并不认识这些 SID。SID 本质上是平台特定的离散 token(如 <s_a_306>),对 LLM 来说只是陌生符号。
Alignment 的三大作用:
- 词表扩展:将 SID token 加入 LLM 词表(LLM 预训练时没见过这些 token)
- 建立语义连接:让 LLM 知道
<s_a_306>= "高端燕麦奶"(物品语义) - 支持推理:后续的功能角色推理需要 LLM 理解"燕麦奶"的语义(健康、植物基、饮品),才能推断它在健康场景中的作用
类比:就像教一个外国人中文。即使你告诉他"苹果"的拼音是 pingguo,他也不知道 pingguo 是什么。你需要:
1️⃣ 教他拼音系统(词表扩展)
2️⃣ 告诉他 pingguo = 红色的水果(语义连接)
3️⃣ 让他理解苹果的各种用法(支持推理)
3.3 功能角色建模(Functional Role Modeling)
动机
直接让 LLM 从稀疏交互序列预测目标物品对沉默用户来说非常困难。引入功能角色作为结构化推理中间层,提供两大优势:
- 可解释性:符合人类购买决策逻辑
- 统计高效:功能角色空间紧凑,模式复现率高
功能角色定义
物品 $i$ 在用户 $u$ 序列中的功能角色 $\mathbf{r}_u(i) \in \mathcal{R}$ 是一个多维离散向量:
- $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 会作为 LLM 的推理上下文,用于:
- 识别转化模式:看到 (Evergreen, Core, FMCG) → (Booming, Trial, FMCG) → (Evergreen, Premium, Durables),LLM 识别出 Core → Trial → Premium(价格递进)+ FMCG → Durables(品类跃迁)
- 捕捉意图演化:连续两个 Complementarity 表明用户在构建完整消费场景;Trial(蔬菜汁)没有购买,但作为"意图触发器"推动了 Premium(榨汁机)转化
- 推断下一步角色:基于轨迹模式,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: 反事实推理(多样化探索)
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)
- Reasoner 推理(近线,每周批量):
输入:用户序列 S_u
输出:{ŷ_rea} = [面膜_SID, 面霜_SID, 护肤套装_SID] ← 这不是最终推荐! - 特征注入(存储到 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, ...}
- Backbone 生成(在线,实时服务):
输入:用户实时序列 + Reasoning Guidance Features
解码:自回归生成,在每一层 SID 生成时,参考 Reasoner 的引导
输出:最终推荐 {ŷ_gr} = [面膜_A, 面膜_B, 精华液_C, 面霜_D, ...] ← 这才是用户看到的推荐!
- 方向引导:告诉 Backbone "应该往面部护理方向生成"(语义导航)
- 概率约束:在解码时提高 <s_a_4> 这个 SID₁ 的生成概率(软约束)
- 多样性探索:通过反事实推理提供多条路径,避免 Backbone 陷入单一模式
- 语义偏差:LLM 推理基于"世界知识",可能不符合平台的协同信号
- 延迟问题:LLM 推理慢(秒级),无法实时服务
- 精度不足: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$:
其中:
- $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$ 的行为加权兴趣分数
RoleGen 从大规模交互日志中构建了电商领域决策知识图谱,编码类目之间的三种关系:
- Complementarity(互补):场景完成所需的补充品(如 手机 → 手机支架)
- Substitution(替代):功能相似的替代品(如 牛奶 → 豆奶)
- Audience Overlap(受众重叠):吸引相似用户群体的物品(如 瑜伽垫 → 运动水杯)
3.4 FR-CoT 指令微调(Functional Role-guided Chain-of-Thought)
基于功能角色轨迹 $R_u$,设计FR-CoT 目标,将沉默用户转化建模为结构化推理问题。
FR-CoT 的三步推理逻辑
LLM 的输出被包裹在 <think> 标签中,遵循三步推理:
提炼用户兴趣 Profile $C_u$
识别关键物品 $I^{\text{key}}_u$ 及角色 $R_u$
推理目标物品角色 $\hat{\mathbf{r}}^{\text{tgt}}_u$
在生成物品 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$,而是施加反事实干预:
其中 $\mathbf{r}'$ 从候选角色集 $\tilde{\mathcal{R}}^{\text{tgt}}_u$ 中采样,该集合由两部分构成:
- 轨迹 $R_u$ 中已观察到的角色
- 全局频繁转化角色(从历史成功转化中挖掘)
然后重用 FR-CoT 的 Prompt,但将目标角色替换为反事实角色 $\mathbf{r}'$,让 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 被问:"如果用户意图是购买耐用高价品,最可能转化的物品是什么?"
- 输出候选:小家电(如空气炸锅、扫地机器人)
结果:打破了低价快消的循环,探索到了高价值升级路径。
- 逻辑约束的探索:在角色空间干预产生结构化多样性,保持与用户意图一致
- 高效多候选生成:在低基数角色空间操作,无需重新计算整个推理轨迹,可并行生成多个反事实候选
3.6 生成式行为骨干(Generative Behavioral Backbone)
虽然 Reasoner 能捕获用户意图,但仅依赖它进行在线服务是次优的:
- LLM 预测可能偏离隐式协同过滤模式(semantic bias)
- 推理延迟高,难以满足实时响应要求
- 缓存策略引入数据陈旧性
因此,RoleGen 使用生成式行为骨干作为执行引擎,Reasoner 作为知识引导的规划器。
架构设计
骨干采用decoder-only 生成架构,将物品表示为层次化 SID,转化为结构化 token 生成任务:
(Profile + History)
→ $\mathbf{T}$ → $(풌, 풗)$
(Lazy Cross-Attn + Self-Attn + FFN)
SID₁ → SID₂ → SID₃
为了优化推理效率,每个 decoder block 使用惰性交叉注意力:
- 用户上下文 $\mathbf{T}$ 被归一化为静态 KV 缓存 $(풌, 풗)$
- 所有 decoder 层共享该缓存,避免冗余投影
- 后接标准的 causal self-attention 和 position-wise FFN
3.7 闭环协同训练(Co-Training Strategy)
为了充分弥合语义推理与协同执行之间的 gap,RoleGen 建立了双向闭环:
推理候选 $\{\hat{i}^{\text{rea}}_u\}$
生成推荐 $\{\hat{i}^{\text{gr}}_u\}$
收集反馈 $i_{\text{gt}}$
校准 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\}$: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)
设计哲学:异步协同
📅 Near-line Reasoning(近线推理)
频率:每周批量更新
模块:Conversion Trajectory Reasoner
流程:
- 从日志收集并预处理数据
- 批量推理生成 Reasoning Guidance Features:
- 候选物品 SID 列表
- 层次化统计特征(SID₁, SID₂ 分布)
- 存储到特征服务(Feature Store)
特点:计算密集(LLM推理),但不在关键路径上
⚡ Online Serving(在线服务)
频率:实时响应每个推荐请求
模块:Generative Behavioral Backbone
流程:
- 接收用户推荐请求
- 读取 Reasoning Guidance Features
- 读取用户实时行为序列
- 自回归生成 SID₁ → SID₂ → SID₃
- 返回推荐结果(SID → Item)
- 曝光后收集反馈 → 下轮 Reflection
特点:低延迟(<50ms),支持流式更新
| 维度 | Reasoner(近线) | Backbone(在线) |
|---|---|---|
| 延迟要求 | 不敏感(批量处理) | 极低(<50ms) |
| 计算成本 | 高(LLM推理) | 中(生成模型) |
| 更新频率 | 周级 | 实时流式 |
| 作用 | 提供语义导航 | 执行精准召回 |
| 解耦方式 | 通过 Feature Store 异步通信 | |
🔑 关键优势:
1️⃣ Reasoner 不在关键路径:LLM 推理慢不影响线上延迟
2️⃣ Backbone 实时响应:利用最新协同信号,毫秒级返回
3️⃣ 解耦灵活:两者独立扩展,通过 Feature Store 解耦
4️⃣ 成本可控:Reasoner 周级推理节省大量 LLM 调用成本
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@1 | HI@10 | HI@100 | HI@500 | Loss |
|---|---|---|---|---|---|---|
| 离线 SeqRec | SASRec | 1.86% | 2.93% | 5.11% | 14.37% | - |
| TIGER | 4.73% | 7.88% | 14.86% | 19.53% | - | |
| 生产召回 | I2I | 4.38% | 8.12% | 17.82% | 21.68% | - |
| U2I | 3.19% | 4.26% | 6.95% | 15.74% | - | |
| Ours | w/o Rea | 5.11% | 10.26% | 20.54% | 31.26% | 3.2950 |
| RoleGen | 10.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₁@1 | HS₂@1 | HS₃@1 | MS₁@10 | MS₂@10 | MS₃@10 |
|---|---|---|---|---|---|---|
| TIGER | 19.83% | 33.47% | 50.24% | 27.35% | 46.59% | 60.16% |
| w/o Reasoner | 24.51% | 38.09% | 56.32% | 31.55% | 51.43% | 64.93% |
| RoleGen | 30.12% | 41.77% | 56.41% | 38.72% | 53.35% | 65.28% |
性能提升主要集中在 SID₁ 和 SID₂(粗粒度语义层),这与协同训练策略一致:
- Reasoning Injection 主要利用前两层 SID 的统计特征
- 粗粒度 SID 更能反映功能角色的高层语义(如类目、价格段)
4.2 消融实验(Ablation Study)
左图:Hit Item @1 性能曲线 - 展示了 5 个训练阶段的渐进提升:
- Item Align 1 (~5%):全局物品对齐,建立基础认知
- Item Align 2 (~10%):高质量物品精调,+5% 提升(课程学习效果)
- w/o Reasoning (~12%):标准行为预测(纯协同过滤),+2% 提升
- Reasoning (~18%):加入 FR-CoT 功能角色推理,+6% 巨大跳跃!
- Reflection (~19%):行为反思机制,+1% 提升(微调校准)
✨ 核心发现:FR-CoT 带来的提升最大(+6%),证明功能角色推理是核心创新,其价值远超标准协同过滤。
右图:BertScore F1(生成质量) - 验证模型没有灾难性遗忘:
- 通用语言能力(General)保持在 85-90,全程稳定
- 物品语义生成(Item Profiling)同步提升
- 证明:功能角色推理没有损害 LLM 的通用能力
4.3 泛化能力分析 & 案例研究
缓解马太效应(Matthew Effect Mitigation)
RoleGen 显著提升了长尾物品的曝光率:
图表类型:曲线图(曝光比率) + 直方图(物品分布)
• 左侧:头部爆款(高点击、高购买)
• 右侧:长尾物品(低曝光、低互动)
纵轴:曝光比率 = (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₁@10 | HS₁@20 | HS₂@10 | HS₂@20 |
|---|---|---|---|---|
| w/o Reasoner | 2.06% | 4.33% | 10.97% | 15.88% |
| RoleGen | 3.12% | 5.25% | 20.53% | 28.48% |
RoleGen 在 OOD 场景下泛化能力显著更强,尤其在 HS₂@10 上提升 87%(20.53% vs 10.97%)。
这证明功能角色抽象能有效迁移跨类目的决策模式。
案例研究(Case Study)
用户画像
历史行为:主要浏览 内衣、化妆品
兴趣 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 通过功能角色抽象,发现"化妆品"和"面膜"在受众群体和使用场景上的深层联系,实现意图级别的泛化推理。
关键推理步骤:
- 用户兴趣 Profile $C_u$:化妆品、内衣(女性个护类目)
- Reasoner 识别潜在意图转变:从"日常穿着"转向"自我护理"
- 推理目标物品功能角色:Audience Overlap(与化妆品用户群重叠)
- 生成候选:面膜(满足"自我护理"意图 + 受众重叠)
对比:w/o Reasoner 只看到"化妆品 → 内衣"的历史模式,无法跳出循环。
4.4 在线 A/B 测试(Online Evaluation)
测试规模:分配 10% 流量,持续数周
| 模型 | DAC(日活购买用户) | CTR(点击率) | CVR(转化率) | 订单量 |
|---|---|---|---|---|
| RoleGen | +5.57% | +5.38% | +6.71% | +7.3% |
- 日活购买用户(DAC)+5.57%
- 订单量 +7.3%
- 转化率(CVR)+6.71%
业务意义:显著唤醒沉默用户,推动 GMV 增长,同时改善推荐生态(缓解马太效应)。
5.1 核心贡献
- 功能角色轨迹(Functional Role Trajectory):首次显式建模物品的工具性效应,将推荐从"单步点级预测"提升到"转化路径推理"
- 反事实推理(Counterfactual Inference):在意图层级施加干预,打破自我强化循环,生成多样化候选
- 闭环协同训练(Closed-loop Co-Training):LLM Reasoner(语义推理)+ Generative Backbone(协同执行)+ Reflection(反馈校准)三位一体
- 工业落地验证:快手电商平台 700M+ MAU 在线部署,订单量 +7.3%
5.2 关键洞察
🔑 洞察 1:物品的双重价值
- 固有价值(Intrinsic Value):直接转化概率(传统 CTR)
- 工具价值(Instrumental Value):塑造意图、推动后续转化
对于沉默用户,工具价值可能比固有价值更重要。
🔑 洞察 2:功能角色的可迁移性
- 物品空间大、稀疏、噪声多
- 功能角色空间小、稠密、模式可复现
跨用户和物品的决策模式可以通过功能角色抽象和迁移。
🔑 洞察 3:LLM + CF 的协同必要性
- LLM:提供世界知识和语义推理,缓解数据稀疏
- CF:提供平台特定的协同信号,grounded 预测
- 闭环:通过反馈-反思机制持续对齐两者
5.3 与相关工作的区别
| 方法 | 核心思路 | 沉默用户问题 | 工具性效应 |
|---|---|---|---|
| RecGPT | LLM 生成 item tags | ❌ 只做静态 Profile 补全 | ❌ 只评估固有价值 |
| Align3GR | LLM-GNN 多层对齐 | ❌ 未专门针对沉默用户 | ❌ 未建模转化路径 |
| TIGER | 生成式推荐(SID) | ⚠️ 通用框架,无特殊处理 | ❌ 无功能角色推理 |
| ColdLLM | LLM 模拟冷启动交互 | ⚠️ 针对冷启动,非沉默用户 | ❌ 单步预测 |
| RoleGen | FR-CoT + 反事实推理 | ✅ 专门设计 | ✅ 显式建模 |
5.4 启发与展望
- 推荐不是单步任务:应建模完整的转化路径和意图演化
- 功能角色是有效的中间表示:在物品空间和意图空间之间架桥
- LLM 的价值不止于语义增强:可用于结构化推理和反事实探索
- 闭环机制至关重要:语义推理需要协同信号 grounding,反之协同执行需要语义引导
- 更细粒度的功能角色:扩展到情感、场景、季节等维度
- 多模态功能角色:结合图片、视频的视觉功能角色
- 用户级功能角色:建模用户在生态中的功能角色(KOL、跟随者、探索者等)
- 实时反事实推理:在线动态调整反事实干预策略
- 跨域迁移:功能角色能否在不同平台/场景间迁移?
- 功能角色定义的主观性:当前由人工设计,未来可否自动学习?
- 反事实采样策略:如何设计更优的候选角色集?
- 计算成本:LLM Reasoner 即使是近线推理,成本仍然较高
- 可解释性:虽然功能角色提升了可解释性,但 LLM 内部推理过程仍是黑盒