做微调或自研训练时,最容易被跳过的一步就是「目标输出长什么样」。数据集里只写了问题和答案,没写答案该多长、要不要给步骤、不确定时该说什么,训出来的模型就会按自己的习惯发挥:该简短的时候写小作文,该给理由的时候只丢结论。这篇给一套可执行的输出设计流程,从定口径到抽样验收,让你在开训前把标准写下来,训完能对着标准打分,而不是靠感觉判断好坏。
做微调或自研训练时,最容易被跳过的一步就是「目标输出长什么样」。数据集里往往只写了问题和答案,没写答案该多长、要不要给步骤、不确定时该说什么。结果训出来的模型就按自己的习惯发挥:该简短的时候写小作文,该给理由的时候只丢结论,下游程序解析不了,人工看又看不完。
这篇给一套可执行的输出设计流程:先定评价口径,再定答案形态与拒答边界,接着把长度和格式写死,最后用小批量人工比对验证。核心目的是让你在开训前把标准落在纸上,训完能对着标准打分,而不是靠感觉判断好坏。顺便说一句,模型选型和成本这块可以去 /price-watch 核对当时的数字,但输出设计本身跟用哪家无关。
先定评价口径,再谈输出长什么样
很多人上来就纠结「答案应该写多详细」,其实顺序反了。你应该先回答:这条输出我打算怎么验收?如果验收方式是人工一条条读,那几百条之后就看不动了,标准会越来越松。所以先把「好」拆成能判断的几条,拆不出来的标准等于没有标准。
- 字段是否齐全、能否被程序解析,这是最硬的一关,过不了后面都不用谈
- 关键信息是否命中:答案里有没有出现必须包含的点,漏了算不合格
- 是否答到点上:有没有跑题、有没有答非所问
- 是否多余铺垫:开头寒暄、结尾总结这类内容在抽取类任务里按扣分处理
- 不确定时是否给出说明:信息不足时是坦白还是硬编
选对答案形态:短答案、结构化还是带推理
形态这件事要在开训前定死,因为三种形态对标注的要求完全不同。短答案要求一句话内出结论,标注员写多了反而要删;结构化输出要求字段名和嵌套层级完全一致,一批一种写法就废了;带推理的输出最难,因为要规定推理写在哪个位置,让程序能只取最终结果那一段。
| 形态 | 适合的任务 | 目标输出要写清什么 |
|---|---|---|
| 短答案 | 分类、抽取、是否判断 | 结论只允许一句,不给理由,多写算错 |
| 结构化 | 要接下游系统的场景 | 字段名、类型、层级、缺省值怎么填 |
| 带推理 | 需要解释过程的场景 | 推理放哪个标记之前,最终答案放哪个标记之后 |
| 混合型 | 输入里指定本次要哪种 | 输入模板必须显式说明当前要求,不能靠猜 |
同一份数据集里不要混用多种形态,除非你在输入里明确告诉模型这次要哪种。判断标准很简单:拿十条样本给同事看,他能不能一眼说出这条属于哪种形态。说不出来,就是混得太厉害了。
把拒答和不确定的话术一起写进目标输出
这是最容易被漏掉的一节。你不写拒答话术,模型就自己发挥,有的道歉半天,有的直接编。正确做法是在样本里给出统一说法,并且规定「信息不足时应该先说要什么,而不是硬给一个答案」。
- 圈定不该回答的范围列出业务上不能碰的输入类型,逐条写成判断条件,别用「敏感内容」这种模糊词
- 写死统一话术每类情况配一句固定回复,标注时照抄,不要每条约一位标注员自己措辞
- 补充信息不足的示范目标输出示范「缺什么就说缺什么、然后追问要什么」,比如「要给结论需要知道 X,请补充」
- 配比并验证这类样本要占一定比例,风险高的业务占比更高;抽一批测一下模型是不是学会了这套说法
不适用的情况也要说清:任务本身允许猜测的场景,比如创意起名、头脑风暴,就别强加拒答模板,否则模型会变得畏手畏脚,该给建议的时候也在推脱。判断依据是「猜错了有没有实际代价」,没有代价就别拦。
长度、格式与标点这些细节要写死
长度不写死,模型就会按自己的习惯发挥,而它通常倾向于写长。规定字数或句数区间时,顺便说明超出怎么处理:是直接算不合格,还是允许一定浮动。长答案在多数抽取和分类任务里都意味着模型在凑内容。
- 统一标点、编号、代码块、表格的写法,别一会儿用顿号一会儿用逗号
- 下游要解析 JSON,就把 JSON 规则写进样本本身,不要只写在外部文档里
- 输入里带了示例或字段说明时,目标输出要与之对齐,否则模型会学会忽略输入
- 多语言场景明确目标输出的语言,别默认跟输入语言走
- 数字、单位、专有名词的写法统一,避免同一含义出现多种表达
抽样验收:先跑小批量比对再全量
标准写完了不代表就对了,得拿现有模型跑一遍,看它和人工目标输出的差距在哪。关键是抽小批量,别一上来全量训,浪费的时间和成本都收不回来。验收顺序建议固定下来,先硬指标后软指标。
| 验收顺序 | 看什么 | 发现问题怎么改 |
|---|---|---|
| 第一步 | 格式能不能解析,字段齐不齐 | 回到标注规范补格式说明,重写相关样本 |
| 第二步 | 关键信息有没有命中 | 检查是标注漏了还是模型能力不够 |
| 第三步 | 长度和形态是否合规 | 改长度区间定义,必要时拆细任务 |
| 第四步 | 语气和措辞 | 放在最后评,这类分歧最容易吵 |
| 回归 | 训完后同一套规则再跑一遍 | 发现退化就回数据集查哪类样本带偏了 |
差距要归类成可修改的规则,回到标注规范里改,再抽一批验证。不要直接改单条样本,那样同样的问题会在别的样本上反复出现。至于用哪个模型做这轮比对、各家接口当时什么价,去 /rankings 和 /price-watch 核对当时的数字,别凭印象选。
下一步把上面这套标准整理成一份标注规范文档,先拿二十条样本试标一轮,看标注员之间的一致率。想要现成的评测口径、模型资料和实测工具,去 /tools/speed-test 上手跑一遍,比空想标准快得多。→常见问题
目标输出是不是越详细越好?
不是。详细程度要匹配任务:抽取类任务答案越短越好,解释类任务才需要步骤。判断标准是「下游能不能直接用」,如果还要人再加工一遍,说明输出形态选错了。可以先按最短可用原则写一版,再根据实际缺什么往上加。
没有人力写目标输出,能不能让大模型批量生成?
可以当起点,但不能当终点。让模型生成后必须人工抽查,重点看格式一致性、有没有编造内容、有没有忽略输入里的约束。抽查发现的问题要变成规则回写,而不是一条条手改。生成加抽检适合格式类任务,涉及事实判断的部分还是要人把关。
训练目标输出和提示词里写的输出要求要一致吗?
尽量一致,否则模型会分裂:训练时学会一种写法,线上又被提示词要求另一种。做法是把提示词里的输出要求抄进目标输出的设计文档,两边同时改。如果线上要支持多种输出形态,就在训练数据里把形态指令也做成输入的一部分。