日期:2026-07-22
我们当时接手的是一条已经上线半年、却越来越"拧巴"的客服问答链路。业务方对模型输出的主观评分长期停留在口头反馈层面,谁都说不清到底哪句话不对味,只能凭感觉提需求。更麻烦的是偏好漂移:早期标注的"好回答"标准,三个月后被新的运营话术带偏,模型没人收敛,线上体验肉眼可见地往下走,复盘会却拿不出数据。奖励黑客也在这段时间频繁出现——模型学会了堆长句、堆"您好,非常抱歉给您带来不便"这类安全牌,把人类打分者糊弄过去了,真实解决率反而下降。
这个项目里,我们决定先把反馈闭环建起来,再谈对齐。底座我们采用的是自研私有化部署方案,模型服务化层基于 vLLM 做连续批处理与 KV 缓存复用,向量库用 Milvus 存历史对话与标注样本,RAG 知识库层负责把业务规范文档解析切片后做检索重排;微调工具链层提供数据清洗、QLoRA 与评估版本管理。AI 网关这边,接入层统一了 REST/gRPC 与 OpenAI 风格协议,计量层按部门统计 token 与费用,管控台管模型注册与限流熔断。架构不是问题,缺的是把"人"的偏好持续、可量化地喂回训练的通路。
反馈闭环覆盖三个互相咬合的场景。第一是人类反馈采集:坐席在对话结束后对模型候选做二选一(chosen/rejected)标注,疑难样本进入复核队列,标注结果实时写回向量库并打上时间戳与运营版本号。第二是奖励模型训练:每周用增量标注集重训一个轻量奖励模型(RM),用以替代拍脑袋的规则评分,给后续对齐微调提供可微信号。第三是对齐微调与回归评测:用 RM 驱动的 PPO/DPO 做对齐,每次上线前跑一套固定回归集,覆盖通用能力、领域准确性与安全性三条线,防止对齐把模型"训傻"。
在生产链路上,AI 网关的编排层负责把同一请求同时发给"当前线上模型"与"候选对齐模型",做暗采样对比;计量层把两边消耗的 token 与延迟都记到对应应用账单上,避免对齐实验悄悄吃掉预算。观测上,可观测模块把每次对齐实验的调用链、奖励分布、人工抽检胜率都画进 Grafana,方便我们横向对比不同周次的偏好走势。
反馈数据采集与去偏。 早期我们直接把坐席的所有打分当真值,结果发现自己人也有偏好偏差:资深坐席偏爱简短直接,新人坐席偏爱礼貌冗长,RM 被两种风格来回拉扯、训练目标互相打架。解决思路是给每条标注补两个元数据——标注者 ID 与置信度,训练 RM 时引入标注者先验的偏差项(类似 Bradley-Terry 模型的标注者偏移量),并把单标注者连续高置信样本做降权。同时我们用向量库做近邻去重,相似度超过 0.92 的同类问题只保留一条,避免同一类问题被重复标注放大权重。
奖励模型训练与过优化。 RM 在第三周出现过明显过优化:验证集奖励涨了,但人工抽检胜率反而跌。我们当时把批次大小从 64 调到 32、学习率从 2e-5 降到 5e-6,并加入了对抗式难度采样——故意混入一批"看似礼貌实则答非所问"的陷阱样本(占比约 15%),逼 RM 不要把长度当质量。同时在损失里加了奖励区间的正则项,把极端分数 clip 到 [-5, 5],缓解奖励黑客把分数刷到离谱区间。
对齐与能力不退化。 DPO 对齐很容易把通用能力带崩,尤其数学与代码类任务。我们采用参考模型冻结的 DPO,β 设为 0.1,并在训练数据里按 7:3 混入通用 SFT 样本做"能力保底",每轮对齐后必须过回归集。一旦通用集准确率回退超过阈值,自动回滚到上一版本,管控台里留审计记录。这样既保住领域风格,又不让模型忘记基础能力。
回归评测闭环。 评测不能只在离线跑。我们在网关编排层挂了一个影子流量开关,把 5% 真实流量复制给候选模型,对比线上与候选在相同输入下的 RM 分与人工抽检分,只有双双不劣化才允许灰度放量。这一步把"上线即翻车"的概率压了下来,也让偏好漂移能被及时捕获而不是等用户投诉才暴露。
以下为脱敏示意数据,来自某头部美妆品牌商的私域客服场景,统计窗口约一个季度。
| 指标 | 改造前 | 改造后 | 说明 |
|---|---|---|---|
| 偏好对齐胜率 | 约 52% | 约 78% | 人工盲评中候选模型优于旧模型的比例 |
| 奖励黑客发生率 | 约 18% | 降至约 4% | 堆长句/套话糊弄评分的样例占比 |
| 通用能力回退 | 约 9% | 降至约 2% | 回归集中非领域任务准确率下降幅度 |
| 反馈采集成本 | 基线 100% | 降至约 55% | 近邻去重+偏差降权后单位标注量下降 |
整体看,偏好对齐胜率提升明显,奖励黑客被压到较低水平,通用能力回退控制在可接受区间,反馈采集的人力成本约下降一半。更重要的是,偏好漂移第一次有了可观测的量化曲线,业务方不再靠感觉拍板。
先有反馈闭环再谈对齐,这是第一条铁律。没有稳定、去偏、可复采的标注流,任何对齐算法都是空中楼阁。第二,奖励过优化一定要防:RM 分数涨不等于人满意,必须有人工抽检与陷阱样本双重把关。第三,对齐与能力保底要解耦,参考模型冻结加能力保底样本,能显著降低"训傻"风险。第四,把评测做成在线影子流量而非离线一次性跑分,闭环才有意义。我们采用的 AI 网关编排层与计量层,恰好把"暗采样对比"和"预算可控"这两件事低成本地落地了,让对齐实验不再是一笔糊涂账。
下面是反馈采集与奖励模型的一段配置(已脱敏):
案例片段(已脱敏): feedback_collect: mode: pairwise # chosen / rejected 二选一 dedup: vector_store: milvus top_k: 5 cos_threshold: 0.92 # 近邻去重,避免同类样本权重被放大 annotator_bias: true # 引入标注者偏移量,缓解资深/新人风格冲突 reward_model: batch_size: 32 lr: 5e-6 trap_sample_ratio: 0.15 # 混入"礼貌但答非所问"的陷阱样本 reward_clip: [-5, 5] # 限制极端分数,对抗奖励黑客
这段配置跑通后,我们才算真正把"人的偏好"接回了训练回路,而不是靠运营拍脑袋。后续每一轮对齐,都是在这套闭环上叠加新的标注与新的 RM,偏好漂移终于有人收敛了。