指令数据怎样选和生成:任务覆盖、答案审核与合成数据

成长演进

具备清晰骨架、初步数学推导或工程验证,持续补充论据与实测。

ℹ数字花园

🌿 什么是数字花园与思想演进?

遵循 Maggie Appleton 与 Andy Matuschak 的常青笔记理念:这里不是按时间沉底的流水账,而是持续修剪打磨的知识生态。文章按成熟度经历:

  • 🌱 萌芽 (Seedling): 发散灵感、读书摘录、开放猜想
  • 🌿 演进 (Budding): 结构渐明、初步代码推导、积极修正
  • 🌳 常青 (Evergreen): 逻辑闭环、持久经得起检验的基石
  • 🔬 实验待证 (Speculative): 结合沙盒与仿真探针的理论探索
浏览全站数字花园与笔记全景 →

如果训练器已经正确处理了回答监督,下一步最容易想到的是多收一些问答。数量确实重要,但同一种简单样本复制一万次,并没有教会模型怎样处理缺失、歧义和新表述。

对本卷的任务,我们需要模型从实验材料中提取模型名、学习率和步数。真正的问题是:训练样本有没有覆盖实际会遇到的情况,答案又是否可靠?

指令数据的质量,要对照任务要求判断。 语言流畅、回答详细、来自更大的模型,都不能单独证明它适合当前监督目标。

下面继续使用虚构的 Cedar 实验记录,不将生成样例当作真实研究事实。

先列情况,再收数量#

可以从一张任务覆盖表开始:

维度应覆盖的变化想发现的失败
信息完整度三字段完整、缺一个、缺两个缺失时编造,或已有信息也填空
数值表示小数、科学计数法、中文数字数值转换错误
文字组织一句话、分段、表格转文本只识别固定句式
干扰内容背景方案、旧配置、解释段落把其他实验的数据当成目标
信息边界未说明、明确为零、含糊候选把缺失和零混为一谈
输入长度短材料、较长材料关键字段被截断或忽略

这不是要求一开始填满所有组合。先选择任务必须支持的范围,标出尚未支持的情况,再为每类准备可核对的样本。

例如,第一篇已经把无法按规则区分多个候选值的记录放入歧义集。不能一边说任务只处理单一明确实验,一边用多实验冲突样本评价主指标,却不给选择规则。

覆盖表的价值在于让“不支持什么”具体可见,避免一个总体准确率掩盖边界。

同一个缺失字段,需要不止一种说法#

如果所有缺失步数样本都写“记录未说明训练步数”,模型可能只记住这个短语。一旦真实材料只是没提步数,它又开始补写。

可以对同一事实设计不同表达:直接省略、说明未记录、提供其他字段但不谈步数。再检查输出是否都保持 steps:null。

同时加入明确为零的例子。例如某记录明确写“仅初始化,训练更新次数为 0”,如果我们的字段定义就是已完成更新次数,那么零是已知值,不是缺失。

这种成对比较帮助检查规则:只改变“是否明确记录”,预期只有相应字段变化。它比随意改写十种开场白更接近任务需求。

但同一原始材料的所有变体应共享来源分组,划分时放在同一侧。否则训练见过其中九种,测试第十种,很可能高估迁移能力。

答案审核至少分三层#

第一层是格式审核:能否解析,键名和类型是否符合要求,有没有多余文本。

第二层是语义审核:科学计数法有没有换错,字段有没有混淆,缺失和零有没有区别。

第三层是证据审核:答案里的每个非空值,是否真的由当前材料支持。

例如,下面答案能通过 JSON 解析:

{"model":"Cedar-30M","learning_rate":0.002,"steps":10000}

如果材料写的是 2e-4,且没有步数,两个字段都错了。一个格式检查器不会自动发现这些错误。

对可机械核对的部分,尽量使用确定性规则。数值解析可以检查 2e-4 与 0.0002 的对应;缺失判断、多个候选和指代关系可能仍需人工审核或更强的语义检查。

不要让一个模型同时生成答案、自由解释答案为什么正确,再把这段解释当作独立证据。生成与自我赞同可能共享同一个错误。

合成数据是生产流程,不是来源标签#

Self-Instruct 研究了从种子任务生成指令和实例,再过滤后用于微调的过程。其方法包含相似性与无效实例过滤;这说明“生成”之外还需要筛选,不代表所有留下的答案都经过事实证明。Self-Instruct,第 2 节

在我们的提取任务里,可以采用两种不同流程:

方式怎么生成主要风险
先材料,后答案从已有材料生成提取结果模型可能读错或补写
先结构,后材料先造已知字段,再写包含它们的文本文本可能没忠实表达原结构

第二种看起来天然有标准答案,但仍需审核。假设先设学习率为 0.0002,生成文本却误写成 0.002,原先的结构就不再是这段材料的正确答案。

比较稳妥的起点是:先生成明确的字段记录,按有限规则渲染一批材料,再逐步增加更自然的改写。对改写后的材料重新检查字段支持关系,而不只是检查原始结构是否完整。

这份流程适合构建边界清楚的教学数据,不代表它能覆盖真实实验记录的全部复杂性。真实样本仍有不可替代的作用。

让生成器补短板,而不是无限扩大容易的部分#

假设当前模型对完整短句很好,却经常把未记录步数补成默认值。下一批数据应该重点覆盖缺失与干扰,而不是再生成大量三字段齐全的短句。

但补难例也要有比例控制。如果一轮训练几乎全是缺失样本,模型可能转向“什么都填 null”的捷径。覆盖表应同时记录样本数、有效回答 token 和抽样比例。

人工审核预算也要按风险分配:新模板、数值转换、冲突候选和长材料可以提高抽查比例。抽查通过率必须与抽样方式一起报告,不能把重点抽查的困难子集错误率当作全库错误率。

如果需要估计整体质量,应另做代表性抽样;如果目的是找最危险的错误,则可以定向检查。两个目标可以并存,但统计含义不同。

去重时保留什么区别#

把完全相同的问答重复训练,会增加其权重。格式变化很小的近重复,也可能让某一种模板占据大部分训练机会。

不过,不能把所有相似输入都删掉。两条材料可能只差 0 与“未记录”,却恰好教模型区分零值和缺失;这种差别对任务有意义。

因此,去重要结合来源分组和任务差异:相同来源的机械改写不应跨划分,具有不同关键事实的对比样本则应有意识保留。

还要检查答案冲突。如果同一输入对应两个不同数值,先判断是规范允许多种答案,还是标注错误。不能随便保留一条就认为数据已经干净。

第一卷的去重与污染提供了来源和相似性处理的背景;SFT 还需要把任务规则与标签一致性一起纳入。

数据版本应能解释每次改动#

一条记录至少关联原始来源、任务规范版本、生成方式、生成器版本或身份、审核结果及划分分组。不要把所有数据最后混成只有 prompt 与 answer 的文件后,丢掉这些信息。

元数据用于追踪,不应被误拼进模型提示。尤其是“正确答案已审核”“测试集”等字段,不能成为模型可见的捷径。

当发现一类错误时,版本记录应说明删除或修正了哪些样本,是否改变各类比例,是否需要重新生成相关 token 文件。只改一个数据文件名,不足以复现实验。

怎样证明新增数据有帮助#

可以从一个固定基线做三组比较:原始人工样本、加入经审核的针对性合成样本、加入相同预算的普通合成样本。

这样不仅问“多数据是否有用”,还问“针对错误类型补数据是否更有效”。应预先选择固定预算的口径,例如有效目标 token,并同时报告独立来源数量和重复次数。

若固定训练轮数,数据变多也意味着计算变多,结果同时包含预算效应;这不是无效实验,但结论要按实际比较条件表达。

评价应使用独立来源材料,并包含原来做得好的部分。缺失处理改善但完整字段遗漏增加,是一种取舍,不能只报前者。

本篇给的是数据实验设计,没有把自动生成数量或规则通过率当成真实微调收益。

两个检查理解的问题#

第一,先生成一份正确 JSON,再让模型把它写成实验记录,是否就不需要审核文本与答案的一致性?请构造一个会失败的例子。

第二,为修复补写问题,加入大量缺失字段样本之后,模型开始全部输出 null。你会怎样修改覆盖表、抽样比例和评价指标?

下一篇讨论全参数微调、LoRA 与量化微调。数据目标清楚以后,再选择用哪些参数承载这次学习。

文章概念网络

从章节进入正文概念。实线表示所属层级,虚线连接跨章节重复出现的概念,不代表因果关系。

50 / 50 个节点 · 正文标记术语与关键词概念

指令数据怎样选和生成:任务覆盖、答案审核与合成数据同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept指令数据怎样选和生成:任务覆盖、答案审核与合成数据指令数据怎样选和生成:任务覆盖、答案审核与合成数据回答监督回答监督指令数据的质量,要对照任务要求判断指令数据的质量,要对照任务要求判断先列情况,再收数量先列情况,再收数量任务覆盖表任务覆盖表同一个缺失字段,需要不止一种说法同一个缺失字段,需要不止一种说法steps:nullsteps:null答案审核至少分三层答案审核至少分三层格式审核格式审核语义审核语义审核证据审核证据审核2e-42e-40.00020.0002合成数据是生产流程,不是来源标签合成数据是生产流程,不是来源标签Self-Instruct,第 2 节Self-Instruct,第 2 节让生成器补短板,而不是无限扩大容易的部分让生成器补短板,而不是无限扩大容易的部分去重时保留什么区别去重时保留什么区别来源分组来源分组去重与污染去重与污染数据版本应能解释每次改动数据版本应能解释每次改动promptpromptansweranswer怎样证明新增数据有帮助怎样证明新增数据有帮助两个检查理解的问题两个检查理解的问题nullnull全参数微调、LoRA 与量化微调全参数微调、LoRA 与量化微调实验实验实验实验选择选择语义语义机械机械微调微调实验实验tokentoken去重去重近重复近重复SFTSFT污染污染机械机械tokentoken测试集测试集实验实验实验实验tokentoken微调微调选择选择微调微调LoRALoRA选择选择实验实验
指令数据怎样选和生成:任务覆盖、答案审核与合成数据

指令数据怎样选和生成:任务覆盖、答案审核与合成数据

回到原文 ↗
BIBTEX

引用本文

@article{2026-10-20-llm-training-sft-04-data,
  author  = {枫语},
  title   = {指令数据怎样选和生成:任务覆盖、答案审核与合成数据},
  journal = {枫语},
  year    = {2026},
  month   = {oct},
  url     = {https://meiluosi.github.io/posts/2026-10-20-llm-training-sft-04-data/}
}
🌐

本篇知识星丛与滑动侧栈

指令数据怎样选和生成:任务覆盖、答案审核与合成数据 当前主轴

搜索

正在载入索引…