Zero-shot、One-shot 和 Few-shot Prompt 有什么区别?
简化版
区别在给不给示例、给几个:Zero-shot 只给任务说明、无示例;One-shot 给 1 个示例;Few-shot 给少量输入输出示例,让模型在上下文里归纳任务模式(即 In-Context Learning)。示例通常能改善格式和歧义任务,但会增加 token 成本,还可能引入顺序、标签、样例偏置。三者都不更新模型参数——请求结束示例就消失。
详细版
| 方式 | 给什么 | 适合 |
|---|---|---|
| Zero-shot | 只有任务说明 | 模型熟悉、指令清晰的常见任务 |
| One-shot | 1 个示例 | 说明特殊格式或边界 |
| Few-shot | 多个示例 | 展示类别、规则、例外 |
Few-shot 属于 In-Context Learning:模型根据提示中的演示,在当前请求内表现出任务适配。示例选择要:正确、贴近真实分布、覆盖关键类别与难例、输入输出格式一致;还要测试示例顺序、绝不把测试样本或未来信息泄漏进示例。
完整版教学
一、In-Context Learning 不等于训练
Few-shot 看起来像模型「学会」了新任务,但这是错觉——模型权重一个字节都没变。示例只存在于本次上下文,请求结束就没了;只有微调才通过梯度更新参数。
Few-shot:示例在 prompt 里 → 本次请求有效 → 请求结束即遗忘(不改权重)
微调: 示例进训练循环 → 梯度更新参数 → 永久改变模型
这种「即时适配」让开发者能快速定义新标签和输出模式,但效果受上下文长度、模型能力、示例质量限制。
二、什么时候 Zero-shot 就够了
摘要、翻译、常见分类等定义清晰的任务,强模型往往 Zero-shot 就能做好。先建 Zero-shot 基线有两个好处:省 token;能判断示例是否真带来收益(别为了加而加)。
关键易错点:如果 Zero-shot 失败是因为缺知识,加格式示例没用——示例教的是「格式和模式」,补不了「事实」,那要靠 RAG/工具。
三、Few-shot 为什么有效(一个例子)
自然语言规则有时难以穷举,示例能一次性传达「输入输出映射 + 标签含义 + 风格格式 + 边界处理」:
判断评论情感(正面/负面/中性):
评论:这手机续航一天一充,还行吧。→ 中性
评论:客服态度太差了,再也不买。→ 负面
评论:拍照惊艳,超出预期!→ 正面
评论:{待判断评论} →
三个例子把「中性怎么算、语气怎么映射」讲清了,比纯文字规则更直观。GPT-3 论文展示了这种「无需梯度更新的 Few-shot 能力」,但也指出不同任务表现不稳定,不能当成必然提升。
四、示例怎么选、顺序为什么重要
选择:优先「贴近线上分布 + 答案经审核」的样例。只给最简单样例 → 评估虚高、覆盖不了真实难题;只给极端样例 → 扭曲模型对常规情况的判断。可静态维护一组通用示例,也可按查询相似度动态选择(更相关,但要防检索到错误/敏感/矛盾的演示)。
顺序和分布偏置(高频坑):
- 模型可能偏向最近出现的标签(recency bias);
- 可能模仿示例的类别比例(给 5 正 1 负,模型倾向多答正);
- 受示例排列顺序影响。
所以分类任务要覆盖关键类别、测试不同排列(别只挑一次表现最好的顺序),类别比例要结合业务事实决定(机械配平也可能引偏差)。
五、负例有没有用
对约束复杂的任务,正例 + 反例能说明边界。但反例必须明确标注「错在哪」和「正确做法」:
✓ 好的反例:
输入:...
错误输出:{漏了 date 字段} ← 错误:缺必填字段 date
正确输出:{完整字段}
✗ 危险的反例:只给错误输出、不标注 → 模型可能把错误形式当成要模仿的模式
涉及安全的禁止行为,不能只靠反例控制,还需应用层策略和验证。
六、常见误区与追问
- 误区:Few-shot 是在训练模型。 不改权重,示例只在本次上下文有效,请求结束即忘。
- 误区:示例越多越好。 增 token 成本、可能引入偏置;先建 Zero-shot 基线判断收益。
- 误区:加示例能补知识。 示例教格式/模式,补不了缺失事实(那要 RAG/工具)。
- 追问:什么是 In-Context Learning? 模型据上下文演示在本次请求内适配任务,不更新参数。
- 追问:Few-shot 有哪些偏置? 顺序(recency)、标签分布模仿、样例选择偏置,要测排列和覆盖。
- 追问:动态选示例的风险? 可能检索到错误/敏感/矛盾的演示,要过滤校验。
- 追问:示例一直加下去怎么办? 若示例持续增长且成本高,说明可能该考虑微调了。
七、加强记忆
三者记「只讲规则 / 做一次示范 / 给几道例题」:Zero-shot(无示例,定义清晰的任务够用)、One-shot(1 个,说明特殊格式)、Few-shot(多个,In-Context Learning 现场归纳)。核心认知钉死:示例能教模式但不改参数、请求结束即忘、补不了知识;三大偏置要防——顺序(recency)、标签分布模仿、样例选择,所以要测排列、覆盖关键类别、贴近真实分布、绝不泄漏测试样本。先建 Zero-shot 基线判断示例是否真有用。