偏好数据如何收集与建模?
数据收集、用户偏好建模与模型优化全流程
原题:设计一个用于训练偏好感知的对话系统的方案,说明如何收集数据、建模用户偏好并进行模型优化。
RAG基础 · 淘天真题
回答与解析
一、数据收集体系
显式反馈
- 对话结束后1-5星评分 + 标签选择("推荐精准""回复太慢"等)
- A/B测试中的成对偏好选择(同时展示两个回复让用户选)
隐式反馈(电商场景核心)
- 商品点击率、加购率、下单转化率
- 对话轮次深度(主动结束vs流失)
- 价格区间浏览分布、品牌停留时长
关键设计:构建Preference Event Graph,将用户行为序列建模为图结构,捕捉"问A→看B→买C"的跨域关联。
二、偏好建模架构
用户输入 → Context Encoder → [用户画像Embedding] + [实时会话状态]
↓
偏好融合网络(Attention-based)
↓
生成回复 / 商品推荐(多任务输出)
- 静态偏好:用户长期画像(价格敏感度、品牌偏好、风格标签)→ 存向量库
- 动态偏好:当前会话意图漂移检测(用KL散度监控话题转移)
- 群体先验:相似用户簇的偏好作为冷启动回退
三、训练优化流程
| 阶段 | 目标 | 方法 |
|---|---|---|
| SFT | 基础对话能力 | 高质量客服对话数据,加入<用户画像>特殊token |
| 奖励建模 | 偏好判别 | 训练Bradley-Terry模型,输入(用户画像,对话历史,回复A/B),输出偏好概率 |
| RL优化 | 对齐用户偏好 | DPO优先(训练稳定),大规模后用PPO+KL约束 |
电商特化技巧:
- 奖励函数加
GMV预估辅助任务,平衡"用户满意"与"商业目标" - 在线学习:每日增量更新偏好embedding,每周全量RL微调
四、难点处理
- 偏好冲突:用多目标Pareto优化,生成候选集后做约束解码
- 探索-利用:ε-greedy引入"惊喜推荐",防止信息茧房
- 稳定性:DPO的β参数动态调整(0.1→0.5),配合EMA平滑策略网络
学习建议
建议系统学习该知识点
口语版讲法(约4分钟)
- 一句话点题:偏好感知本质是让系统学会给不同人不同回应
- 数据收集:显式反馈和隐式反馈,电商场景侧重隐式,用图结构串联行为
- 建模架构:静态画像加动态意图,冷启动靠群体先验
- 训练优化:SFT到DPO/PPO,奖励函数加GMV,在线学习
- 落地风险:偏好冲突用Pareto,探索-利用用ε-greedy,稳定性靠动态β和EMA
这道题问的是偏好感知对话系统,说白了就是让机器学会给不同用户不一样的回应,而不是所有用户都看到千篇一律的东西。我会从数据、模型、训练三个环节讲,最后说说落地会踩哪些坑。
先说数据。用户偏好无非两种来源:显式的和隐式的。显式就是让用户打分、点标签,或者A/B测试里选更喜欢哪个回复。但真实业务里,用户很少主动给反馈,所以 隐式信号才是主力。比如电商场景,用户点了哪个商品、加了购物车、最终买了什么,甚至对话轮次,聊得多说明有兴趣,突然退出就是流失信号。这些行为本身就在说“我喜欢这个”“那个我不感冒”。关键是怎么把这些零散行为串起来?我会建一个 Preference Event Graph,把“问A→看B→买C”这种跨品类关联用图结构表示出来,这样就能捕捉到用户可能自己都没意识到的偏好链条。
再说建模。我把用户偏好分成三层。第一层是静态画像,比如价格敏感度、品牌偏好,这些相对稳定,存到向量库里当长期记忆。第二层是动态偏好,就是当前会话里用户意图有没有漂移。举个例子,用户本来问冰箱,聊着聊着开始问洗衣机,这时候我会用 KL散度 监控话题转移,及时更新会话状态。第三层是群体先验,新用户冷启动时,拿相似用户簇的偏好做回退,不至于完全盲猜。这三层通过一个注意力融合网络合并,再去做回复生成或商品推荐。
训练优化是重头戏。我分三步走。第一步是监督微调,用高质量客服对话数据,给模型注入基础对话能力,同时加入一个<用户画像 的特殊token,让模型学会看人下菜碟。第二步是奖励建模,训练一个 Bradley-Terry 模型来打分,输入是用户画像、对话历史和两个候选回复,输出偏好概率。第三步是强化学习,这里我会优先用 DPO,因为训练稳定、对超参数不敏感;如果规模很大,再切到 PPO 加 KL 约束。电商场景有个特化技巧:奖励函数里加一个GMV预估的辅助任务,这样模型既讨用户喜欢,又不会推荐一堆便宜货拉低客单价。另外,偏好是会变的,所以我会做在线学习,每天增量更新偏好embedding,每周全量做一次RL微调。
这里有个有意思的点:偏好冲突怎么处理?比如用户说“我要便宜的”,但历史行为显示他总买高端货。我倾向于用多目标 Pareto优化,先生成候选集,再通过约束解码选出平衡方案。另外探索-利用也得小心,纯迎合用户容易造成信息茧房,我会用ε-greedy随机插入一些“惊喜推荐”,同时把DPO的β参数从0.1动态调到0.5,配合EMA平滑策略网络,防止模型震荡。
说到底,偏好感知系统不是越大越好,前提是数据量够、用户行为有规律。如果数据稀疏,硬上RL反而会学偏。所以我会更看重数据闭环的及时性,而不是模型复杂度。
关键一句:偏好冲突时用多目标Pareto优化和约束解码,探索-利用用ε-greedy加动态β参数
面试官还可能这样问
- 问法 1 · 场景切入
假设你在做电商客服机器人,用户说“帮我找件夏天穿的连衣裙”,你推荐了A和B,用户没选但点了一款C。你怎么捕捉这种偏好?数据怎么收、模型怎么学用户到底喜欢什么?
- 问法 2 · 层层追问
做对话系统,用户偏好怎么建模?……你用什么数据?……那如果用户嘴上说好但就是不买呢,隐式信号怎么用?……最后怎么把偏好对齐到回复里,训练上怎么优化?
- 问法 3 · 直球架构
设计一个偏好感知的对话系统,给我完整方案:数据收集怎么搞?偏好建模用什么结构?训练怎么分阶段做对齐?重点说电商场景下怎么平衡用户满意度和商业目标。