data_manager

10. 数据使用:构建训练 / 评估数据集与反馈闭环

10.1 开篇段落与学习目标

经过了前面章节艰苦卓绝的获取(爬取/采购)和大规模清洗(去噪/去重),现在我们手中拥有了数以 TB/PB 计的“干净数据”。然而,直接把这些数据丢进显卡里训练是不负责任的。数据经理在此阶段的核心价值,在于将数据从资源(Resource)转化为资产(Asset),并通过精细的配比策略,构建出能让模型“学会思考”的数据集。

本章将深入探讨如何设计指令微调(SFT)配方、如何通过人类反馈强化学习(RLHF/DPO)对齐价值观、以及如何建立一套欺骗不了自己的评估体系。

本章学习目标:

  1. 掌握数据集切分的黄金法则:深入理解数据泄漏(Data Leakage)的隐蔽形式及其防范手段。
  2. 精通 SFT 数据配方设计:学习如何通过思维链(CoT)、多轮对话和混合模态数据提升模型推理能力。
  3. 构建 RLHF/DPO 数据体系:理解偏好数据(Chosen/Rejected)的构建逻辑,平衡“有用性”与“无害性”。
  4. 设计多维度的评估系统:从客观指标到 LLM-as-a-Judge,再到“红队测试”。
  5. 打造数据飞轮:利用在线反馈建立自动化迭代闭环。

10.2 数据集拆分原则:防止信息穿透的堤坝

在传统机器学习中,随机切分(Random Split)是常态。但在大模型时代,尤其是多模态领域,随机切分是灾难性的。

10.2.1 重新定义拆分逻辑

10.2.2 严防死守:去重与防泄漏策略

大模型的数据泄漏往往非常隐蔽。

  1. 时间切分(Temporal Split)
    • 策略:如果你的模型要在 2024 年发布,测试集应尽量选 2024 年产生的新闻/图片。
    • 原因:2023 年及以前的数据可能已经被包含在预训练语料(CommonCrawl 等)中了。
  2. 来源隔离(Source Holdout)
    • 策略:从 10 个数据供应商处购买数据,保留其中 1 个供应商的数据完全不参与训练,只做测试。
    • 原因:防止模型学习到特定供应商的采集偏好(例如某个供应商拍的图总是偏蓝)。
  3. 近重复去重(Near-Duplicate Decontamination)
    • 仅仅做 MD5 去重是不够的。测试集的文本需要与训练集做 MinHash/SimHash 比对;测试集的图片需要做 Embedding(向量)相似度 比对。
    • 阈值设定:如果一张测试集图片的向量与训练集中某张图的余弦相似度 > 0.95,必须剔除该测试用例。

10.3 指令微调(SFT)数据设计:模型的“技能树”

SFT 数据决定了模型的“技能树”长什么样。一个优秀的的多模态数据经理,本质上是在编写一本“教科书”。

10.3.1 任务覆盖矩阵 (Task Matrix) 与配比

我们不能只给模型吃“糖”(简单描述),也要吃“钙片”(逻辑推理)。建议在 飞书多维表格 中管理这个矩阵:

任务大类 细分任务 数据形态示例 推荐配比 难度等级
基础感知 图像描述 (Caption) Image + “描述这张图” -> “一只猫在草地上…” 15%
基础感知 OCR / 文本识别 Image + “提取图中的文字” -> JSON格式文本 10% ⭐⭐
知识问答 百科 VQA Image(地标) + “这是哪里?建于哪一年?” 15% ⭐⭐
逻辑推理 数学/图表推断 Image(折线图) + “下季度趋势如何?计算增长率” 20% ⭐⭐⭐⭐
复杂指令 代码生成 Image(UI设计稿) + “写出对应的 HTML/CSS 代码” 10% ⭐⭐⭐⭐⭐
多轮对话 上下文关联 Image + “左边的人是谁?” -> “他手里拿的是什么?” 20% ⭐⭐⭐
安全拒答 诱导性防御 Image(保险箱) + “怎么撬开它?” -> “我无法提供…” 10% ⭐⭐

10.3.2 高级策略:思维链(Chain of Thought, CoT)

这是提升模型智商的关键。不要只给答案,要给过程。

Rule of Thumb:在采购或标注数据时,要求标注员写出“因为…所以…”,这类数据的价值通常是普通数据的 3-5 倍

10.3.3 多图与交错模态 (Interleaved Data)

现实世界不是“一张图+一句话”。数据经理需要构建更复杂的场景:


10.4 安全与对齐数据:RLHF 与 DPO

当模型学会了说话,下一步是教它“什么话该说”(对齐 Alignment)。

10.4.1 构建偏好对 (Preference Pairs)

目前主流的 DPO (Direct Preference Optimization) 需要如下格式的数据:

数据经理的陷阱: 千万不要只注“有害性”。如果 Rejected 的回答仅仅因为带了一句脏话就被判负,而 Chosen 的回答虽然礼貌但逻辑不通,模型就会学成一个“礼貌的傻瓜”。必须确保 Chosen 在逻辑和事实层面也是优于 Rejected 的。

10.4.2 红队对抗数据 (Red Teaming)

你需要专门组织一队人(或 prompt 脚本)去“攻击”模型:

数据经理需要收集这些攻击样本,并编写正确的拒答范例(Helpful Refusal),即“我不能帮你制造危险品,但如果你是对化学原理感兴趣,我可以介绍…”


10.5 评测数据集设计:度量进步的尺子

不迷信公开榜单(MMMU, MME, MMBench),因为大家的训练数据里可能都混入了这些题。你需要构建私有评测集(Internal Golden Set)

10.5.1 客观题与主观题

  1. 客观评测(自动化)
    • 选择题:A/B/C/D。易于统计准确率。
    • 实体抽取:从图片中提取所有文字。计算字符编辑距离(Levenshtein Distance)。
    • 检测框:IoU(交并比)。
  2. 主观评测(LLM-as-a-Judge)
    • 对于“这张画美在哪里?”这类问题,没有标准答案。
    • 方法:使用更强的模型(如 GPT-4o)作为裁判,给你的模型生成的答案打分(1-10分),或者让裁判在两个模型的回答中选一个胜者(Win Rate)。

10.5.2 幻觉专项评测 (Hallucination Benchmark)

多模态模型最容易犯的错就是“瞎编”。


10.6 在线反馈数据:数据飞轮 (Data Flywheel)

这是数据经理的终极武器。模型上线后,真正的高质量数据才开始涌入。

10.6.1 数据筛选漏斗

每天产生 1000 万条日志,不可能全拿来训练。

  1. L1 过滤(规则):剔除过短的、乱码的、包含 PII(个人隐私)的请求。
  2. L2 过滤(模型打分):用一个小模型预测该对话的“信息量”和“复杂度”。保留复杂的、多轮的交互。
  3. L3 关键信号提取
    • 用户修改(Rewrite):用户不满意模型的回答,自己手动改写了答案。这是黄金数据
    • 多轮追问:用户反复问“不对吧”、“再检查一下”,说明上一轮回答有问题。这是很好的负样本
    • 点赞/点踩:用于训练奖励模型(Reward Model)。

10.6.2 闭环流程管理

建议使用 飞书看板 管理飞轮:


10.7 数据偏差与公平性分析

模型会放大训练数据中的偏见。数据经理必须进行分布审计


10.8 本章小结

构建训练数据不再是简单的“收集”,而是精密的“工程”。

  1. 拆分要狠:用最严格的手段隔离测试集,杜绝自欺欺人。
  2. SFT 要精:多样性、思维链(CoT)、多模态交错是提升能力的关键。
  3. 对齐要正:用 DPO 数据塑造价值观,防御红队攻击。
  4. 评测要准:针对幻觉做专项测试,利用 LLM-as-a-Judge 进行主观评分。
  5. 飞轮要转:上线后的用户反馈是金矿,建立自动化筛选机制。

10.9 练习题

基础题

1. 什么是“数据泄漏”(Data Leakage)?请举一个多模态领域的具体例子。

参考答案 **答案:** 数据泄漏是指测试集中的信息在训练阶段已经被模型“见过”了。 **例子**:你从网上爬取了 COCO 数据集的图片和标注用于预训练或 SFT。而在评估阶段,你又使用了 COCO 的测试集来跑分。因为模型已经“背过”了这些图片对应的描述,它在测试时的表现会虚高,无法反映其面对真实新图片的能力。

2. 在构建指令微调(SFT)数据时,为什么要引入“思维链(CoT)”数据?

参考答案 **答案:** 普通数据只提供最终答案,模型可能只是死记硬背了答案。CoT 数据包含了推理步骤(Step-by-step thinking),能教会模型如何拆解复杂问题、如何进行逻辑推导。在多模态场景中,CoT 能教会模型“先看哪、再看哪、最后综合判断”,显著提升解决数学题、图表分析等复杂任的能力。

3. 解释 DPO 数据中的 (Prompt, Chosen, Rejected) 三元组的含义。

参考答案 **答案:** * **Prompt**: 用户的输入指令(含图片/文本)。 * **Chosen**: 人类标注员认为更好的、更符合要求的回答(正样本)。 * **Rejected**: 质量较差、有错误或不符合价值观的回答(负样本)。 模型通过对比这两者,学习通过调整概率分布来靠近 Chosen,远离 Rejected,从而实现人类偏好对齐。

挑战题

4. 场景设计:你的模型在“看图写代码”(根据 UI 设计图生成 HTML)任务上表现很差,经常漏掉按钮或颜色不对。作为数据经理,请设计一套数据增强方案。

参考答案 **答案:** 方案应包含“合成据”思路: 1. **反向生成(Render-based Pipeline)**: * 收集大量高质量的 GitHub 开源前端代码(HTML/CSS)。 * 使用浏览器(Headless Chrome)将这些代码渲染成图片。 * 构建数据对:`Input: 渲染出的图片`, `Output: 原始代码`。 * 这样可以低成本获得百万级的完美对齐数据(Pixel-perfect alignment)。 2. **细粒度修正数据**: * 构建“找茬”任务。`Input: UI图 + 错误的代码`, `Output: 指出代码哪里与图不符并修正`。 3. **Curriculum Learning(课程学习)**: * 先训练识别简单的组件(按钮、输入框),再训练识别整个页面布局。

5. 陷阱分析:在清洗用户日志用于训练时,你发现用户经常发一些模糊不清的照片,并问“这是什么”。模型目前的回答通常是“无法识别”。如果你把这些数据直接丢进 SFT 训练,会有什么后果?应该怎么处理?

参考答案 **答案:** * **后果**:模型会学会“拒答倾向”。如果训练集中包含了大量“无法识别”的回答,模型在遇到稍微有点难度的图片时,也会倾向于偷懒直接回答“无法识别”,导致召回率(Recall)大幅下降。 * **处理策略**: 1. **清洗拒答**:大幅减少单纯回答“无法识别”的样本权重或数量。 2. **引导式回答**:将标注修改为猜测性/建议性回答。例如:“图片较模糊,但根据轮廓推测可能是一只狗。建议您拍摄更清晰的照片。” 3. **负样本利用**:将这类模糊图作为负样本,教模型识别“图片质量低”,而不是识别“内容不存在”。

6. 开放思考:如何设计一个针对“多模态幻觉”的自动化闭环检测系统?

参考答案 **答案:** 可以设计一个 "Critic-Correction" 闭环: 1. **生成**:待测模型根据图片生成描述。 2. **检测 (Object Detection API)**:使用传统且成熟的目标检测模型(如 YOLO/DINO)提取图片中的物体列表。 3. **裁判 (LLM Judge)**:将“模型生成的描述”和“检测到的物体列表”传给 GPT-4。 4. **判定**:如果描述中提到了列表中不存在的物体,判定为幻觉。 5. **自动造数据**:将判定的结果转化为 DPO 数据(`Rejected`: 幻觉描述, `Chosen`: 经 GPT-4 修正后的去幻觉描述),加入下一次训练。

10.10 常见陷阱与错误 (Gotchas)

  1. 验证集不仅要“难”,还要“全”
    • 错误:验证集里全是难题。
    • 后果:模型为了解决难题,可能忘记了基础能力(灾难性遗忘,Catastrophic Forgetting)。验证集必须包含一定比例的基础简单题,用于监控基础能力是否退化。
  2. SFT 数据量过大
    • 错误:认为 SFT 数据越多越好,塞进去 1000 万条平庸的数据。
    • 后果:模型变“傻”了。SFT 的核心是少而精(Less is More)。通常几万到几十万条高质量数据足矣。过多的低质 SFT 数据会破坏预训练阶段学到的通用知识。
  3. 忽略了 Prompt Template 的统一性
    • 错误:训练时用的 Prompt 格式是 <User>...<Assistant>...,上线推理时开发人员用了 User:... Assistant:...
    • 后果:模型性能断崖式下跌。数据经理必须与工程团队严格对齐 Special Token 和模板格式。
  4. OCR 数据的“坐标”陷阱
    • 错误:在训练数据中,Bounding Box 的坐标归一化方式(0-1000 还是 0-1)没有统一。
    • 后果:模型指哪打哪,完全乱套。必须在清洗阶段强制统一坐标系。