news 2026/10/29 1:31:59

MASCOT奖励模型训练实战:Rubric打分构造偏好对,LoRA微调标量奖励模型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MASCOT奖励模型训练实战:Rubric打分构造偏好对,LoRA微调标量奖励模型

【免费下载链接】MASCOT

EMNLP 2026 Main Conference Paper: MASCOT: Towards Multi-Agent Socio-Collaborative Companion Systems (https://arxiv.org/abs/2601.14230)

项目地址:https://gitcode.com/gh_mirrors/masco/MASCOT
点击查看免费下载

MASCOT(EMNLP 2026 论文)是一个面向情感支持与会议场景的多智能体社交陪伴系统。本文聚焦它的核心一环:奖励模型(Reward Model)训练实战——先用 Rubric 评分为候选回答打分并构造偏好对,再用 LoRA 微调一个输出标量分数的奖励模型,为后续的 GRPO 强化学习提供"评委"。

为什么 Speaker 训练需要一个奖励模型

MASCOT 采用两阶段训练:阶段 1 让每个 Speaker 智能体保持独特人设(Persona),阶段 2 让 Director 智能体协调整组对话。阶段 1 中,Speaker 用GRPO做强化学习,而 GRPO 必须有一个能给出连续分数信号的奖励模型来评估每次回答的好坏。

Figure 1. MASCOT 整体架构:候选回答经 Rubric 打分形成偏好对(Preference Pairs),训练 Persona 奖励模型,再用于对齐 Speaker 策略

整个数据流可以概括为四步:

  1. 生成候选回答:让 LLM 按指定人设对同一情境生成多条候选回答;
  2. Rubric 打分:LLM 评审(judge)按 5 个维度逐条打分;
  3. 构造偏好对:按分差筛选出 chosen / rejected 配对;
  4. LoRA 训练奖励模型:用 TRL 的RewardTrainer微调出标量打分器。

第一步:用 vLLM 起好推理服务

数据生成阶段所有 LLM 调用都走 OpenAI 兼容的 vLLM 服务,先启动服务:

pip install -e ".[train]" # 奖励模型 / GRPO 训练依赖 pip install -e ".[serve]" # 本地 vLLM 服务依赖 CUDA_VISIBLE_DEVICES=0,1 python scripts/serve_vllm.py \ --model Qwen/Qwen3-8B --gpus 2 --port 8008

启动器 serve_vllm.py 会自动推断张量并行数,共享 GPU 时可加--gpu-memory-utilization 0.5控制显存占用。

第二步:Rubric 打分构造偏好对

生成候选回答并打分

python -m src.dataset.generate_and_annotate \ --mode individual --dataset ESConv \ --model-name Qwen/Qwen3-8B \ --num-agents-per-query 1 --score-margin 0.5 \ --vllm-server-url http://localhost:8008/v1 \ --output-dir data/rl

完整参数说明见 generate_preference_data.sh 与 generate_and_annotate.py。--mode individual会为每条 query 生成多条候选回答(--num-agents-per-query,默认 5),然后交给 Rubric 评审打分。

评审的 5 个维度

打分器实现于 rubric_evaluator.py,IndividualRubricEvaluator从 5 个维度各打 1-5 分,total_reward取平均值:

维度含义
persona_consistency人设一致性:是否体现角色独特的语气与词汇
perceived_empathy共情质量:是否准确解读用户情绪
emotional_expressiveness情绪表达:语气强度是否与情境匹配
relevance_coherence相关性:是否紧扣上下文、逻辑连贯
social_contribution社交贡献:是否提供新视角而非套话

值得注意的是评分哲学:judge 被明确要求**"严苛"**——3 分是"合格但平庸"的默认分,4-5 分属于稀有高分。这种校准能拉开候选回答之间的分差,让后续构造的偏好对更有区分度。

偏好对是怎么筛出来的

按分数对候选排序后采用全配对策略:任意一对候选,只有当分数差>= --score-margin(默认 0.5)时才组成一个偏好对(chosen = 高分回答,rejected = 低分回答)。相关逻辑见 data_utils.py 中的load_meeting_prompts_dataset:

  • 每条记录包含chosen/rejected两组消息及score_chosen/score_rejected两个分数列;
  • 分数保持 Rubric 原始的 [1, 5] 区间,不做缩放。

候选越多、分差越大,产出的偏好对越多——这也是--num-agents-per-query和--score-margin值得重点调参的原因。

第三步:LoRA 微调标量奖励模型

模型结构:序列分类头 + LoRA

奖励模型本质是一个带标量输出的分类器:train_reward_model.py 通过 model_utils.py 的create_lora_model加载基座模型(默认Qwen/Qwen3-0.6B),任务类型为SEQ_CLS、num_labels=1,即对"人设 + 评分标准 + 回答"的整段 prompt 输出一个实数奖励分。

关键细节:

  • LoRA 配置:--lora-r 16、--lora-alpha 32、--lora-dropout 0.1,只训练注意力投影层(q_proj/v_proj/k_proj/o_proj),可训练参数占比不到 0.2%;
  • 训练框架:TRL 的RewardTrainer,bf16 混合精度 + 梯度检查点;
  • 数据对齐:训练前会把回答包裹进统一的"人设 + 角色 + 标准"评估 prompt(prompt_reward_model.py 的get_prompt_persona_reward_model),保证训练分布与 GRPO 推理时的打分分布一致;
  • 数据集划分:默认 90% 训练 / 10% 评估,每 100 步评估并保存一次(save_total_limit=3)。

一条命令开始训练

python -m src.train.train_reward_model \ --dataset QMSum \ --model-name Qwen/Qwen3-0.6B

或用现成脚本 train_reward_model.sh,支持用环境变量覆盖:

DATASET=ESConv MODEL=Qwen/Qwen3-0.6B bash scripts/train_reward_model.sh

训练完成后,LoRA 适配器保存在outputs/reward_model/Individual_{数据集}_{模型名}目录(例如outputs/reward_model/Individual_QMSum_Qwen3-0.6B),只写适配器、不写全量权重,单个适配器仅约 10MB。

关键超参数调优清单

参数默认值作用与调优建议
--score-margin0.5偏好对最小分差;调低可扩量但引入噪声,调高则更干净但数据变少
--num-agents-per-query5每条 query 的候选数;候选越多,全配对产出的偏好对越多
--batch-size4单卡批大小,显存不足时调小并加大梯度累积
--gradient-accumulation-steps4等效批大小 = 4 × 4 = 16
--learning-rate1e-5奖励模型训练的常规量级
--num-epochs1数据量大时可保持 1 轮
--lora-r/--lora-alpha16 / 32alpha 取 rank 的 2 倍是常见搭配
--max-length4096超长对话会被截断,按数据长度调整

Figure 2. MASCOT 消融实验:完整模型(MASCOT)在 Persona 与 Collective 两组维度上均优于仅去掉单一优化目标的变体

如果验证集奖励准确率不理想,可以依次尝试:增大偏好对数量(调低--score-margin或增加候选数)、换更大的基座模型、把--num-epochs提到 2-3。

训练完成后:接入 Speaker GRPO

标量奖励模型就是阶段 1 强化学习的打分器,直接指向刚训出的适配器目录即可:

python -m src.train.train_rl --algorithm grpo --dataset QMSum \ --reward-model-path outputs/reward_model/Individual_QMSum_Qwen3-0.6B

Figure 3. MASCOT 目标:多个视角互补的智能体代替"回声室"式单智能体,给用户更平衡、更有洞察的陪伴

需要区分的是:本文训练的个人奖励模型只评估单个 Speaker 的回答;阶段 2 整段多轮对话的群体级奖励模型由 train_group.py 的--mode train-reward-model训练,数据来自generate_and_annotate --mode group的分支式 episode。两者共用同一套"Rubric 打分 → 偏好对 → 奖励模型"的范式,只是粒度从单条回答扩展到了整段协作对话。

小结

  • 偏好数据质量是成败关键:Rubric 的严苛评分校准 +--score-margin分差过滤,决定了奖励模型学到的是"深度与个性"而非表面差异;
  • 成本极低:LoRA r=16 只训练不到 0.2% 的参数,产出约 10MB 的适配器,小显存也能复现;
  • 闭环设计:训练时的评估 prompt 与 GRPO 推理时的打分 prompt 严格一致,避免奖励 hacking。

按"起 vLLM → 生成打分 → 构造偏好对 → LoRA 训练 → 接入 GRPO"五步走通,你就得到了 MASCOT 阶段 1 的核心组件——一个懂人设、懂共情的标量奖励模型。

【免费下载链接】MASCOT

EMNLP 2026 Main Conference Paper: MASCOT: Towards Multi-Agent Socio-Collaborative Companion Systems (https://arxiv.org/abs/2601.14230)

项目地址:https://gitcode.com/gh_mirrors/masco/MASCOT
点击查看免费下载

相关推荐

上一篇:桌面AI助手Witsy上手教程:5分钟连上你的第一个AI模型
下一篇:OpenNHP 零信任网络隐身协议:协议定位、架构与信创兼容性全景解析

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/29 1:20:02

关闭和打开wifi流程分析

一、背景: wifi流程分析基于高通8155,android 11进行分析。 二、关闭流程分析 WifiService->ActiveModeWarden->ClientModeManager->StateMachine->WifiNative->WifiVendorHal->HalDeviceManager>wifi_chip->wifi_legacy_hal->Wifi->wifi_mo…

作者头像 李华
网站建设 2026/10/29 1:19:27

Android fw DeviceStorageMonitorService

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/29 1:18:00

【GATT】规范精讲[10]: GATT 服务自述——服务变更与能力对账

GATT系列精讲前九篇把 GATT 的数据交换机制讲完了:发现、读写、推送、承载、连接。但有一个更根本的问题还没解决:客户端连上服务器后,怎么知道对方的服务表长什么样?怎么知道对方支持哪些高级特性?如果服务表变了,客户端怎么感知?这些问题的答案不在某个具体的业务服务…

作者头像 李华
网站建设 2026/10/29 1:16:15

RS485通信电路设计笔记

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华