未来已来-如何编写AI的提示之高级篇

在上一篇中,我们介绍了基本的一些训练AI的提示技巧,在本篇中将会介绍一些高级提示技术。

学习到这里时,你应该意识到改善提示有助于在不同的任务上获得更好的结果。这就是提示工程背后的整个想法。

在本篇高级提示技术中,我们将会介绍一下几个方法:

  • 零样本提示法
  • 少量样本提示
  • 思考链提示法
  • 零样本思考链提示
  • 自我一致性提示
  • 生成知识提示

零样本提示法

今天的LLM在大量数据上进行训练,并根据指令进行调整,能够执行零样本任务。在前一篇文章中,我们尝试了一些零样本的例子。下面是我们用过的一个例子:

未来已来-如何编写AI的提示之高级篇

零样本提示

请注意,在上面的提示中,我们没有为模型提供任何示例——这就是工作中的零样本能力。当零样本不起作用时,建议在提示中提供演示或示例。下面我们将讨论称为少量样本提示的方法。

少量样本提示

虽然大型语言模型已经展示了卓越的零样本能力,但在使用零样本提示时,它们仍然无法完成更复杂的任务。为了改进这一点,我们使用少量样本提示作为支持上下文学习的技术,在提示中提供演示以引导模型获得更好的性能。

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

未来已来-如何编写AI的提示之高级篇

少量样本提示

我们可以观察到,通过只提供一个示例(即1-shot),模型已经以某种方式学会了如何执行任务。对于更困难的任务,我们可以尝试增加演示(例如,3-shot, 5-shot, 10-shot等)。

根据Min等人(2022)的发现,以下是在进行少量样本提示时关于演示/示例的更多提示:

  • "由提示所指定的标签空间和输入文本的分布都很重要(不管标签对单个输入是否正确)"
  • 您使用的格式也在性能中发挥关键作用,即使您只是使用随机标签,这也比没有标签要好得多。
  • 另外的结果表明,从真实的标签分布(而不是均匀分布)中选择随机标签也有帮助。

让我们来看几个例子。让我们先尝试一个带有随机标签的例子(意味着标签消极的和积极的是随机分配给输入的):

未来已来-如何编写AI的提示之高级篇

少量样本提示-随机标签

我们仍然得到正确答案,即使标签是随机的。注意,我们还保留了格式,这也是有帮助的。事实上,通过进一步的试验,我们发现最新的GPT模型似乎对随机格式变得更加健壮。例子:

未来已来-如何编写AI的提示之高级篇

少量样本提示-随机格式

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

标准的少量样本提示在许多任务中都能很好地发挥作用,但仍然不是一种完美的技术,特别是在处理更复杂的推理任务时。

思考链提示法

在Wei等人(2022)中介绍,通过中间推理步骤实现复杂的推理能力。您可以将其与少量样本提示相结合,以便在响应前需要推理的更复杂任务上获得更好的结果。

未来已来-如何编写AI的提示之高级篇

思考链提示

当我们提供推理步骤时,我们可以看到一个完美的结果。我们可以通过提供更少的例子来解决这个问题,也就是说,只要一个例子就足够了:

未来已来-如何编写AI的提示之高级篇

零样本思考链提示

最近出现的一个想法是零样本思考链提示 (Kojima et al. 2022),本质上是在原始提示符中添加“让我们一步一步地思考”。让我们尝试一个简单的问题,看看模型的表现如何:

未来已来-如何编写AI的提示之高级篇

零样本提示

这个答案显然是错误的,现在让我们加入一些特殊的提示:

未来已来-如何编写AI的提示之高级篇

零样本思考链提示

令人印象深刻的是,这个简单的提示在这个任务中是有效的。这在提示符中没有太多示例的情况下特别有用。

自我一致性提示

也许对于提示工程来说,最先进的技术之一就是自我一致性。Wang等人(2022)提出,自我一致性旨在“取代思考链提示中的天然贪婪性”。其思想是通过少量样本提示的思考链对多个不同的推理路径进行采样,并使用迭代来选择最一致的答案。这有助于提高思考链提示在涉及算术和常识推理的任务中的表现。

让我们试试下面算术推理的例子:

未来已来-如何编写AI的提示之高级篇

这个答案显然是错误的,现在让我们试试少量样本提示:

未来已来-如何编写AI的提示之高级篇

自我一致性-答案一

未来已来-如何编写AI的提示之高级篇

自我一致性-答案二

计算最终答案需要几个步骤,最终我们可以看到已经出现了几个答案,因此这基本上就是最终正确答案。

生成知识提示

LLM不断得到改进,一种流行的技术包括整合知识或信息的能力,以帮助模型做出更准确的预测。使用类似的想法,模型也可以用来在做出预测之前生成知识吗?这就是Liu等人在2022年的论文中所尝试的——生成作为提示的一部分的知识。特别是,这对常识推理等任务有多大帮助?

让我们尝试一个简单的提示:

未来已来-如何编写AI的提示之高级篇

这种类型的错误揭示了LLM在执行需要更多关于世界的知识的任务时的局限性。我们如何通过知识生成来改善这一点?

首先,我们生成一些“知识”:

未来已来-如何编写AI的提示之高级篇

下一步是整合这些知识并做出预测。我将问题重新格式化问答的格式,以指导回答格式。

未来已来-如何编写AI的提示之高级篇

未来已来-如何编写AI的提示之高级篇

在这个例子中,模型非常自信的给出的正确的答案。