通过结构化生成提升提示一致性
结构化生成——通过正则表达式或上下文无关文法将模型的输出约束为特定格式——显著降低了 LLM 基准对提示格式和示例顺序的敏感性。这种方法不仅能稳定模型排名,还常常提升整体预期性能,解决了当前 LLM 评估中的一个关键缺陷,即提示结构的细微变化可能导致结果大相径庭。
问题:评估对提示格式的敏感性
LLM 基准性能高度依赖于提示的具体格式,即使底层信息保持不变。Hugging Face Leaderboards and Evals 团队的研究表明,表面上的提示格式变化会导致准确率的大幅波动以及模型排名的不稳定。
对准确率和排名的影响
在使用 MMLU 任务,对五种不同模型和八种提示格式进行实验时,团队观察到以下情况:
- 分数差异: 模型性能在不同格式之间大约相差 10 分。在一个极端案例中,Qwen1.5-7B 的准确率因特定提示变体导致的分词器问题从 51.2% 降至 22.9%。
- 排名不稳定性: 没有模型在所有提示变体中保持一致排名。这种不稳定性表明模型作者可能通过选择对其模型最有利的提示格式来操纵报告的结果。
- 示例顺序敏感性: 即使提示格式和示例完全相同,仅仅打乱少量示例的顺序也可能导致性能差异高达 3 分。
结构化生成作为解决方案
为了解决这种差异,Hugging Face 与 Dottxt 探索了通过 Outlines 库使用结构化生成的方法。该方法不关注输入(提示),而是通过强制模型遵循预定义结构来约束输出。
技术实现
对于 GSM8K(小学数学文字题)等任务,研究人员实现了一个正则表达式来约束输出。该正则要求模型:
- 推理长度在 200 到 700 字符之间。
- 明确写出 “The answer is”。
- 给出一个最长 10 位的数字(不能以 0 开头)。
这种被称为 “thought control” 的技术,使研究人员能够调节模型在得出答案前的推理量。
实验结果
GSM8K:N 次示例提示
在 GSM8K 数据集上对 Mistral-7Bv0.1 和 Zephyr-7B-beta 进行 1 到 8 次示例提示的测试表明,结构化生成:
- 降低差异: 在不同 n 次示例设置下的性能差异显著降低。
- 排名稳定: 模型的相对排名保持一致;Mistral 始终优于 Zephyr。
- 提升效率: 1 次示例的结构化表现显著优于 1 次示例的非结构化表现,且相当于 5 次示例的非结构化生成。
GPQA:N 次示例及示例顺序变化
使用研究生级别的 Google-Proof 问答基准(GPQA)‘diamond’子集,研究人员测试了同时改变示例数量和示例顺序(使用不同随机种子进行洗牌)的影响。
性能提升:
| 模型 | 非结构化均值 | 结构化均值 |
|---|---|---|
| Mistral-7B-v0.1 | 0.2360 | 0.2935 |
| Zephyr-7b-beta | 0.2387 | 0.3048 |
差异降低:
| 模型 | 非结构化标准差 | 结构化标准差 |
|---|---|---|
| Mistral-7B-v0.1 | 0.0213 | 0.0202 |
| Zephyr-7b-beta | 0.0273 | 0.0180 |
关于排名一致性的结论
在 GPQA 实验中,使用结构化生成显著提升了两模型之间“胜者”判定的一致性。通过约束输出,研究人员降低了偶然提示特征的影响,使评估更准确地反映模型的真实能力,而非对提示格式的敏感性。