使用ShareGPT训练奖励模型需将对话转为(prompt, chosen, rejected)三元组:一、筛选高质量多轮对话,剔除短于3轮、无质量差异、含敏感内容或格式错误样本;二、提取最后user消息为prompt,选取同一prompt下质量显著差异的两条assistant响应分别标为chosen与rejected;三、标准化清洗文本,统一角色、清理乱码与HTML,添加分隔符并序列化为指定字典结构;四、通过同义改写、关键信息屏蔽补全及主题过采样增强多样性;五、按对话ID哈希划分70%/15%/15%数据集,并人工校验偏好一致性与长度均衡性。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您计划使用ShareGPT数据集训练奖励模型(Reward Model),需将原始对话数据转化为适合偏好学习的三元组格式(prompt, chosen, rejected)。以下是构建奖励模型所需对话数据的具体操作步骤:
一、筛选高质量多轮对话样本
ShareGPT数据集包含大量用户与模型交互的真实对话,但并非所有对话都适用于奖励建模。需剔除短于3轮、无明确回复差异、含敏感内容或严重格式错误的会话,保留具有清晰意图和可比响应质量的样本。
1、下载原始ShareGPT JSONL文件,逐行解析每条对话记录。
2、过滤掉conversations字段中from为"user"的轮次少于2次的对话。
3、排除conversations中任意一条value长度小于10字符或含大量乱码、URL、非UTF-8编码的条目。
4、保留至少包含一对由同一prompt触发、由不同模型或不同温度参数生成的响应,并标注为“好”与“差”的对话片段。
二、构造prompt-chosen-rejected三元组
奖励模型训练依赖成对比较信号,必须从原始对话中人工或半自动识别出同一输入下两个质量可判别的输出,并明确指定哪个更优。ShareGPT未自带偏好标签,需借助启发式规则或轻量标注辅助生成。
1、对每个满足长度与格式要求的对话,提取最后一个user消息作为prompt。
2、若该对话后续存在两条及以上assistant回复(例如来自不同模型版本或重采样结果),且其中一条被社区评分较高或被用户显式点赞,则将其设为chosen。
3、在同一prompt下选取另一条响应,要求其在事实性、连贯性或安全性方面存在明显缺陷,设为rejected。
4、确保chosen与rejected长度差异不超过30%,避免因长度偏差干扰模型对质量的判断。
三、标准化文本清洗与格式对齐
原始ShareGPT数据存在角色混用、换行符嵌套、HTML残留及Markdown符号未转义等问题,需统一清理以保障训练稳定性与tokenization一致性。
1、将所有conversations中的from字段映射为标准角色标识:仅保留"user"与"assistant",删除"system"、"observation"等非常规角色条目。
2、对每条value内容执行:去除首尾空白、合并连续换行符为单个"\n"、将"
"及" "替换为空格、解码HTML实体(如& → &)。
3、在prompt末尾添加特定分隔符,如"\n\nAssistant:",确保模型能明确区分指令与响应边界。
4、将清洗后的三元组序列化为Hugging Face datasets.Dataset支持的字典结构,字段名为"prompt"、"chosen"、"rejected"。
四、引入多样性增强策略
单一来源数据易导致奖励模型过拟合于特定表达风格或领域分布,需通过可控扰动扩充prompt覆盖范围与响应对比维度。
1、对原始prompt进行同义句改写,使用预训练T5-small模型生成3种语义一致但措辞不同的变体,每种变体分别配对原chosen/rejected响应。
2、在chosen响应中随机屏蔽1–2个关键名词或动词,再用BERT-MaskedLM补全,生成弱化版作为新rejected样本,前提是补全结果在逻辑上成立但信息量下降。
3、按主题聚类(如科技、教育、生活),对低频主题类别下的三元组执行过采样,使各主题在最终数据集中占比不低于5%。
五、划分训练/验证/测试子集并校验偏好一致性
为防止数据泄露与评估失真,需严格隔离不同阶段的数据,并验证每个三元组中chosen确实在人工抽样评估中显著优于rejected。
1、按对话ID哈希值划分:70%用于训练,15%用于验证,15%用于测试,确保同一原始对话的所有衍生三元组归属同一子集。
2、从测试集中随机抽取200个prompt,交由3名标注员独立判断chosen是否优于rejected,要求一致率不低于85%,否则回溯清洗逻辑。
3、检查验证集中chosen与rejected的平均token长度差,若绝对值超过15,则对超长样本进行截断并重加说明性后缀,如"[截断,原文更完整]"。

















