第 4 / 21 篇

第 3 章:训练、开发与验收要按真实关联切分

把列表随机分成三份,不一定获得三个独立的数据集。同一客户的多个问法、同一工单的重述、相同文档的不同切块,都可能把答案线索带到另一份数据里。模型或工程人员学到的是同一来源,而非可推广的新能力。

3.1 三份数据服务三种决定

训练资料允许用于拟合模型或构造方法;开发集允许调提示、检索与阈值;验收集用于在配置冻结之后比较候选。在本实验中没有任何模型训练,train 只是展示这类资料应该如何与后续阶段隔开,不应写成“已经训练了一个模型”。

验收不是禁止维护的数据墓地。业务范围改变、事实过期或发现错误标签时,需要正式版本更新。关键是区分数据维护与为了当前候选过关而调题。后者会让“未参与开发”的声明失去依据。

3.2 选择切分单位

本实验每个项目有两条关联任务:一条文件配置修改,一条政策回答。训练资料包含 3 个项目、6 条任务;开发包含 4 个项目、8 条任务;验收包含 6 个项目、12 条任务。项目 ID 不跨切分,统计时也以项目作为重采样单位。

真实应用的单位可能是客户、仓库、工单、文档来源或时间段。应先画出数据之间的关系,再决定切分。若同一仓库的修复任务被分到开发和验收两边,某些代码、测试和修改习惯可能已经被开发过程观察到。

时间切分适合评估未来事实或漂移问题,但也不是万能的。同一事件的重复抓取可能跨过时间边界;后续摘要还可能包含早期样本的标准答案。来源追踪与去重应结合使用。

3.3 公开小题不是隐蔽验收

本书为了可复现,公开样本生成器、数据和答案。即使程序没有把答案文件传给候选,读者仍可以查看全部内容。因此实验验证的是“管线按切分规则处理”,不是“候选从未见过验收题”。两种保证不能互换。

生产环境若需要保密验收,应控制数据访问,隔离候选运行身份,记录题目曝光,限制同一验收集上的反复试探。单纯隐藏文件名或依靠提示词要求“不看答案”都不能提供同样保证。

3.4 反复选择会消耗验收集

如果在同一验收集上试过几十个提示,然后只报告最好的一个,即使没有训练模型,也已经利用验收反馈选择了策略。一次比较的区间没有自动包含这种选择过程的不确定性。

可行做法包括:把大多数迭代留在开发集;保留一次性或定期更新的确认集;记录尝试过的候选数量;对重要发布追加新的独立场景。具体样本量需要结合效应、成本和风险设计,本书不会给出一个通用最小数。

练习。 某知识库用同一份政策生成了 20 种问题,随机分到开发和验收两份。请指出泄漏路径,并用来源或客户分组重做划分。重新切分后分数下降,不一定说明系统退步,也可能是原先的证据过于乐观。