Zero-shot 和 Few-shot 分别是什么意思?在 prompt 里放几个例子,为什么就能改变模型的行为?

Prompt工程

答案要点 Zero-shot(零样本):不给示例,只用文字描述任务,让模型直接作答 Few-shot(少样本):在 prompt 里放几个"输入→输出"示例,让模型照着模式做 两者都不更新模型参数,靠的是上下文学习(In-Context Learning)能力 例子能生效,是因为模型在预训练中学会了"识别并延续上文中的模式" 示例的质量、格式一致性、标签均衡都影响效果;简单任务 zero-shot 够用,格式复杂或任务含糊时 few-shot 更稳 核心概念 Zero-shot(零样本)指在 prompt 中不提供任何示例、仅靠自然语言描述任务就让模型完成,例如直接说"判断这句话的情感是正面还是负面";Few-shot(少样本)指在提问前先给出几个完整的输入输出示例,再让模型处理新输入——这两个词里的 shot 就是"示例"的意思。它们背后共同的机制叫上下文学习(In-Context Learning):模型不改任何参数,只凭上下文里的信息临时"学会"任务。 几个例子为什么能改变行为 大模型的本职是"延续上文最合理的模式"。当上文连续出现三组"输入→输出"对,对模型来说最合理的续写,就是对新输入产出同样模式的输出 示例传递了文字难以说清的信息:输出格式、详略粒度、边界情况怎么处理——示范一遍胜过描述十句 这不是训练:权重没有任何变化,"学到"的东西只存在于当前上下文,会话一换就消失,所以叫"上下文"学习 怎么选、怎么用 | 场景 | 建议 | |------|------| | 任务常见、要求简单 | Zero-shot 即可,省 token | | 输出格式要求严格 | Few-shot,示例统一格式 | | 任务边界模糊、有易错情况 | Few-shot,把易错情况放进示例 | 注意:示例之间格式要一致,标签分布尽量均衡(别全是正面例子),数量通常 2~5 个即可——放太多占上下文窗口,效果还未必更好。 入门之后,可以往上下文学习的机制、示例的动态检索挑选、few-shot 与微调的对比选型深入。

口语版讲法(约2分钟)

  • 一句话定义:zero-shot 不给例子直接干,few-shot 先给示范再干
  • 情感分类的具体写法对比
  • 原理是上下文学习:模型延续上文出现的模式
  • 教新同事填报销单的比喻;关键点:参数没变,不是训练
  • 埋钉子:动态检索示例,few-shot 和检索的结合

一句话:Zero-shot 就是不给例子、直接让模型干活;Few-shot 就是先给几个示范再让它干。shot 指的就是示例。 展开说。比如做情感分类,zero-shot 的写法是直接说"判断下面这句话是正面还是负面:这家店太难吃了"。few-shot 的写法是先摆几行:"这部电影真好看,正面""服务态度太差,负面",然后再放新句子让模型接着写。很多时候就这么一个改动,输出的准确率和格式稳定性都会明显提升。 为什么放几个例子就能改变模型行为?关键在于大模型有一种能力叫上下文学习,In-Context Learning。模型的本职工作是"延续上文里最合理的模式":当它看到上文连续出现了三组"输入对应输出",对它来说最自然的续写,就是对新输入给出同样模式的输出。打个比方,就像你教新同事填报销单,与其念十分钟规则,不如直接给他看三张填好的单子,他自然就照着填了。而且示例还悄悄传递了很多文字说不清的信息:输出该多长、格式长什么样、边界情况怎么处理。 这里必须说准一个点:few-shot 不是训练。模型的参数一个都没变,这个"学会"只存在于当前上下文里,会话一换就没了。这也是它和微调的本质区别:微调是真的更新权重,一次投入长期生效;few-shot 是每次请求都要把例子重新带上,灵活但持续消耗 token。 实践里我的经验是:简单任务 zero-shot 就够;格式要求严、任务边界模糊的,用两到五个例子,注意示例格式要一致、正反例都放一些。 最后埋个进阶话题:例子挑哪几个其实很讲究,更进一步的做法是根据用户输入动态检索最相关的示例拼进 prompt,把 few-shot 和检索结合起来,这块我也可以展开聊。

关键一句:Few-shot 靠的是上下文学习:模型延续上文的模式,参数没有任何更新,这是它和微调的本质区别。

面试官可能的追问

  1. 【概念辨析】Few-shot 和微调都能让模型"学会"新任务,它们的本质区别是什么?两种情况下模型的参数分别发生了什么变化?
  2. 【追问边界】Few-shot 的例子是不是越多越好?如果放了 20 个示例,效果反而比 5 个还差,你觉得可能是什么原因?

同模块相关题目