语言模型微调实战(07):评估与失败分析
评估的意义不是得到一个「好看的百分比」,而是得到可执行的改进清单。这一篇用抽象案例说明分析方法——不引用真实训练/验证样本原文。
先选对指标
| 任务类型 | 更合适的指标 | 不太合适的指标 |
|---|---|---|
| 结构化输出(JSON / 固定模板) | 可解析率、字段完全匹配、枚举合法性 | 纯字符相似度 |
| 开放文本 | 人工抽检、语义相似度、关键信息覆盖 | 字符串完全匹配 |
同一条验证集里若混有两类任务,应分别统计,否则开放文本会把总分拉得很「难看」,掩盖结构化任务其实已经不错的事实。
评估脚本建议具备的能力
- 加载合并模型(或基座 + 适配器);
- 按统一采样参数推理(结构化任务建议低温度,甚至 0);
- 分别计算:
- 结构化:解析成功?字段是否等于期望?
- 开放文本:可先只做抽检,避免被严格字符串匹配误导;
- 导出明细 JSON,便于离线归因(明细同样不要外发)。
失败归因的常见桶
把结构化任务的错误先归类,而不是逐条「感觉不对」:
1. 划分导致的「未见过说法」
验证集按输入互斥划分后,模型必须靠泛化。若训练集里同类标签的说法覆盖不足,验证集上的近义表达就容易错。
对策:补同义改写与对比样本;不是简单把验证句抄进训练集(那会让指标失真)。
2. 近义标签混淆
例如两个动作在自然语言里很像,但 schema 不同。模型会「猜错边」。
对策:在 system 提示与训练样本中显式消歧;构造成对对比样本。
3. 标签/别名不一致
训练数据写 a,提示词写 a-b,模型输出第三种拼写。评估时全算错。
对策:统一枚举表;推理侧做归一化。
4. 采样噪声
温度偏高时,即便学得还行,JSON 也会抖。
对策:结构化推理用低温度;评估与线上一致。
5. 任务边界误判
本该输出 JSON,却输出闲聊;或相反。
对策:加强「何时必须结构化」的监督;推理侧可对「疑似动作意图」做兜底。
分析流程(可复用)
1 | 跑评估 → 只筛结构化失败子集 |
小结
评估的意义不是得到一个「好看的百分比」,而是得到可执行的改进清单。
语言模型微调实战第 07 篇完。下一篇把「数据消歧 + schema 后处理」组合成更稳的上线方案。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 WALL-E's Blog!









