Zubnet AI学习Wiki › Zero-shot / Few-shot
使用AI

Zero-shot / Few-shot

别名:上下文学习
零样本(zero-shot)意味着让模型在没有任何示例的情况下完成任务—只需指令。少样本(few-shot)意味着在实际请求之前,在提示中提供少量的输入-输出示例。"以下是3个如何格式化此数据的示例... 现在处理这个。" 模型仅通过上下文学习模式,无需训练。

为什么重要

少样本提示是教模型掌握新格式或行为的最快方法。需要一致的JSON输出吗?给出三个例子。需要特定的写作风格?提供一些样例。它免费、即时,且出人意料地强大。

深度解析

术语“zero-shot”和“few-shot”源自机器学习研究传统,其中“shot”指的是训练示例。在经典机器学习中,你需要数千或数百万个带标签的示例来教模型完成新任务。大型语言模型的突破在于,它们可以在零个训练示例(zero-shot)或仅在提示中提供几个演示示例(few-shot)的情况下完成任务。这被称为“in-context learning”,并仍然是现代LLM最显著的能力之一——当你在提示中提供示例时,模型并未被重新训练或微调,而是通过识别上下文中的模式并即时应用它们来完成任务。

Zero-Shot适用的场景

当任务与模型在训练中广泛接触的内容高度匹配时,zero-shot效果最佳。情感分析、翻译、摘要、简单分类——这些任务在预训练期间以数百万种变体出现,因此清晰的指令通常就足够了。“将这条客户评论分类为积极、消极或中性”在任何现代前沿模型上都能零样本完成,因为模型深刻理解分类、情感和这些标签的含义。zero-shot的局限性在于处理格式特殊、领域特定惯例或要求模糊的任务。如果你需要模型以公司专有的XML模式输出数据,仅凭简单指令是不够的。

few-shot提示弥补了这一不足。在实际请求前提供2–5个输入-输出示例,你就能向模型明确展示你的预期。模型会捕捉到模式——格式、细节程度、风格、边界情况处理——并将其应用于新输入。这对于结构化任务效果显著。需要从杂乱文本中提取实体并转换为特定JSON格式?展示三个杂乱文本到干净JSON的示例,然后提供新文本。需要将自然语言日期(“下周二”,“三月第二周”)转换为ISO 8601格式?三个示例就能解决95%的问题。模型本质上是从你的示例中学习一个函数,并且在推理时无需梯度更新即可完成。

质量胜过数量

few-shot示例的质量比数量更重要。三个精心挑选的示例覆盖不同边界情况,效果会优于十个重复的示例。如果任务涉及类别,每个类别至少包含一个示例。如果有棘手的边界情况,也要包含一个。示例的顺序也可能有影响——研究表明,模型可能偏向于最后看到的示例标签,因此对示例进行洗牌或平衡是有价值的。一个实用技巧:包含一个输入模糊或不属于任何类别的示例,因为这种边缘情况在生产中频繁出现,未受指导的模型只会猜测。

成本与质量的权衡

需要考虑成本与质量的权衡。每个few-shot示例会消耗上下文窗口中的token并增加API成本。每个示例200个token,五个示例即为每个请求1,000个token,规模化后成本会显著增加。一些团队在开发阶段先使用few-shot提示,测量哪些示例真正提升了效果,然后尝试将模式提炼为更清晰的zero-shot指令。另一些团队使用动态few-shot选择——将示例库存储在数据库中,并为每个特定输入检索最相关的示例,这本质上是对提示工程应用的轻量级RAG。最佳平衡点取决于任务复杂度、使用量以及一致性或成本对你用例的优先级。

相关概念

← 所有术语
← YAML 智谱 AI →
ESC