少样本提示
通过示例引导模型理解任务模式
什么是少样本提示?
虽然大语言模型展示了惊人的零样本能力,但在使用零样本设置时,它们在更复杂的任务上仍然表现不佳。少样本提示可以作为一种技术,以启用上下文学习——在提示中提供演示来引导模型实现更好的性能。演示作为后续示例的条件,我们希望模型据此生成响应。
当模型规模足够大时,少样本提示特性开始出现。让我们通过一个例子来演示少样本提示。在这个例子中,任务是在句子中正确使用一个新词:
"饕餮"——传说中贪吃的神兽,比喻极度贪吃的人。使用"饕餮"的句子:他简直是个饕餮,一顿能吃三碗米饭。
"社恐"——社交恐惧症的简称,指在社交场合感到紧张不安的人。使用"社恐"的句子:
输出:
作为资深社恐,公司团建他总是第一个找借口溜走。
可以观察到,模型通过提供一个示例(即 1-shot)已经学会了如何执行任务。对于更困难的任务,可以尝试增加演示(例如 3-shot、5-shot、10-shot 等)。
少样本提示的要点
关于少样本学习中的演示和范例,有以下几点需要注意:
- 标签空间和演示指定的输入文本的分布都很重要——无论标签是否对单个输入正确
- 使用的格式也对性能起着关键作用,即使只是使用随机标签,也比没有标签好得多
- 从真实标签分布(而不是均匀分布)中选择随机标签也有帮助
随机标签也能起作用
让我们尝试一个随机标签的例子(意味着将标签"好评"和"差评"随机分配给输入):
这火锅也太辣了吧! → 好评
今天在西湖边散步,风景真不错 → 差评
地铁又延误了,迟到了十分钟 → 差评
刚收到快递,包装完好,东西也很满意 →
输出:
好评
即使标签已经随机化,我们仍然得到了正确的答案。请注意,我们还保留了格式,这也有助于模型理解任务。实际上,通过进一步的实验发现,较新的国产大模型(如 DeepSeek、豆包)对随机格式也变得更加稳健。
少样本提示的局限
标准的少样本提示对许多任务都有效,但仍然不是一种完美的技术,特别是在处理更复杂的推理任务时。例如,对于需要多步推理的算术问题,即使增加了示例,少样本提示也可能无法获得可靠的响应。
当零样本提示和少样本提示都不足以解决问题时,这可能意味着模型学到的东西不足以在任务上表现良好。这时建议考虑更高级的提示技术,如链式思考(Chain-of-Thought, CoT)提示,它已经在处理更复杂的算术、常识和符号推理任务上获得了广泛关注。