少样本是性价比最高的手段,但用法有讲究。这节回答三个最常问的问题。
可复现前提: 任务为工单分类(7 类),评测集 200 条,脚本 bench/few-shot。
问题一:给几个例子?
| 示例数 | 准确率 | 输入 token |
|---|---|---|
| 0 | 0.71 | 320 |
| 2 | 0.84 | 610 |
| 4 | 0.89 | 900 |
| 8 | 0.91 | 1480 |
| 16 | 0.91 | 2650 |
4~8 个是甜点位,再多收益基本消失,成本却继续涨。
问题二:顺序有影响吗?
有,但比想象中小。我们把同一组 8 个示例随机打乱跑了 10 次:
- 准确率在 0.89 ~ 0.92 之间波动
- 把最容易混淆的两类放在相邻位置,准确率稳定在高位
真正有影响的是类别覆盖:8 个示例要覆盖全部 7 个类别,漏掉的类别准确率明显偏低。我们漏掉的那一类只有 0.62。
问题三:要不要放反例?
要。加 2 个反例(标注为错误分类并说明原因)后:
| 配置 | 整体准确率 | 易混类别准确率 |
|---|---|---|
| 8 正例 | 0.91 | 0.78 |
| 6 正例 + 2 反例 | 0.93 | 0.89 |
反例对易混淆类别的帮助最大,整体只涨 2 个点,但把最难的那部分拉起来了 11 个点。
反例的写法
## 反例
输入:登录后页面一直转圈,过一会儿提示超时
错误输出:类别 = 账号问题
为什么错:提到"登录"不代表是账号问题。用户能登录成功,
卡在加载阶段,应归为「性能问题」。
判断依据是故障发生的阶段,不是关键词。"为什么错"要写出判断依据,只说"应该是 X" 效果差一半。