跳到主要内容

少样本提示

尽管大型语言模型展示了出色的零样本能力,但在使用零样本设置时,它们在更复杂的任务上仍然表现不佳。少样本提示可以作为一种技术,通过在提示中提供示例来引导模型进行上下文学习,从而提高性能。这些示例作为后续示例的条件,我们希望模型生成响应时可以起到引导作用。

根据Touvron等人 2023,当模型被扩展到足够大的规模时,少样本属性首次出现(Kaplan等人,2020)

让我们通过一个在Brown等人 2020中提出的示例来演示少样本提示。在这个示例中,任务是在句子中正确使用一个新词。

提示:

"whatpu"是一种生长在坦桑尼亚的小型毛茸茸的动物。一个使用单词whatpu的句子示例是:
我们在非洲旅行时看到了这些非常可爱的whatpu。

"farduddle"的意思是快速跳跃。一个使用单词farduddle的句子示例是:

输出:

当我们赢得比赛时,我们都开始快速跳跃以庆祝胜利。

我们可以看到,模型通过仅提供一个示例(即1-shot)就学会了如何执行任务。对于更困难的任务,我们可以尝试增加示例(例如3-shot、5-shot、10-shot等)进行实验。

根据Min等人 2022的研究结果,以下是关于少样本时的示例/范例的一些建议:

  • “示例指定的标签空间和输入文本的分布都很重要(无论这些标签对于单个输入是否正确)”
  • 你使用的格式也对性能起着关键作用,即使你只是使用随机标签,这比没有标签要好得多。
  • 额外的结果显示,从真实标签分布中选择随机标签(而不是均匀分布)也有助于提高性能。

让我们尝试一些示例。让我们首先尝试一个带有随机标签的示例(意味着将标签Negative和Positive随机分配给输入):

提示:

这太棒了! // Negative
这太糟糕了! // Positive
哇,那部电影太棒了! // Positive
这是一个可怕的节目! //

输出:

Negative

即使标签已被随机化,我们仍然得到了正确答案。请注意,我们还保持了格式,这也有助于结果。事实上,通过进一步实验,似乎我们正在尝试的新型GPT模型对于即使是随机格式也变得更加稳健。例如:

提示:

Positive 这太棒了! 
这太糟糕了! Negative
哇,那部电影太棒了!
Positive
这是一个可怕的节目! --

输出:

Negative

上面的格式不一致,但模型仍然预测出了正确的标签。我们需要进行更彻底的分析,以确认这是否适用于不同和更复杂的任务,包括提示的不同变体。

少样本提示的局限性

标准的少样本提示对许多任务都有效,但仍然不是一种完美的技术,特别是在处理更复杂的推理任务时。让我们演示为什么会出现这种情况。您还记得之前我们提供了以下任务的示例吗:

这组中的奇数相加得到一个偶数:15, 32, 5, 13, 82, 7, 1。

A:

如果我们再试一次,模型输出如下:

是的,这组中的奇数相加得到107,这是一个偶数。

这不是正确的回答,这不仅突显了这些系统的局限性,还表明需要更先进的提示工程。

让我们尝试添加一些示例,看看少样本提示是否改善了结果。

提示:

这组中的奇数相加得到一个偶数:4, 8, 9, 15, 12, 2, 1。
A: 答案是假的。

这组中的奇数相加得到一个偶数:17, 10, 19, 4, 8, 12, 24。
A: 答案是真的。

这组中的奇数相加得到一个偶数:16, 11, 14, 4, 8, 13, 24。
A: 答案是真的。

这组中的奇数相加得到一个偶数:17, 9, 10, 12, 13, 4, 2。
A: 答案是假的。

这组中的奇数相加得到一个偶数:15, 32, 5, 13, 82, 7, 1。
A:

输出:

答案是真的。

那并没有奏效。似乎少样本提示对于这类推理问题并不足以获得可靠的回答。上面的示例提供了关于这个任务的基本信息。如果你仔细观察,我们引入的这种任务类型涉及更多的推理步骤。换句话说,如果我们将问题分解成步骤,并向模型展示,可能会有所帮助。最近,思维链 (CoT) 提示 已经被推广用于解决更复杂的算术、常识和符号推理任务。

总的来说,提供示例对于解决一些任务是有用的。当零样本提示和少样本提示不足以时,这可能意味着模型学到的知识不足以在任务上表现良好。从这里开始,建议开始考虑微调模型或尝试更高级的提示技术。接下来我们将讨论一种流行的提示技术,称为思维链提示,它已经获得了很多关注。