典型划分:80%训练、10%验证、10%测试。对于大数据集,验证和测试的百分比可以更小(即使百万样本的1%也是10,000个——足够可靠的评估)。对于小数据集,交叉验证更好(参见:交叉验证)。关键规则:永远不要在开发过程中的任何决策中使用测试集。它只用于最终评估。如果你在开发过程中偷看了测试集,你的性能估计就会有偏差。
拆分数据时,确保每个划分都有类别、领域和其他重要特征的代表性分布。如果你的数据集90%是英文10%是法文,随机拆分可能将所有法文样本放入训练集,使你无法评估法文性能。分层拆分确保每个划分中的比例代表。对于时间序列数据,使用时间拆分(在过去的数据上训练,在未来的数据上验证)而非随机拆分。
对于LLM预训练,验证集是训练语料库中保留的一部分,用于在训练过程中计算困惑度。对于微调,它是微调数据集中保留的一部分。对于对齐(RLHF/DPO),验证更复杂:自动化指标(奖励模型分数)加上在保留提示上的人工评估。验证策略应该匹配模型实际使用的方式——如果用户会提出多样的问题,验证集也应该是多样的。