首页>智库>Prompt系统学习> Prompt进阶学习

需要支持?

如果通过文档没办法解决您的问题,请提交工单获取我们的支持!

 Prompt进阶学习

1、思维链提示过程

思维链(CoT)提示过程1是一种最近开发的提示方法,它鼓励大语言模型解释其推理过程。下图显示了 few shot standard prompt(左)与链式思维提示过程(右)的比较。

 Prompt进阶学习

思维链的主要思想是通过向大语言模型展示一些少量的 exemplars,在样例中解释推理过程,大语言模型在回答提示时也会显示推理过程。这种推理的解释往往会引导出更准确的结果。

示例

以下是几个演示。第一个演示了GPT-3(davinci-003)无法解决简单的单词问题。第二个演示了GPT-3(davinci-003)通过使用思维链提示过程成功解决相同的问题。

不正确的答案

 Prompt进阶学习

正确的答案

 Prompt进阶学习

结论

思维链已被证明对于算术、常识和符号推理等任务的结果有所改进。特别是,在GSM8K基准测试上,PaLM 540B的提示达到了57%的解决率准确性。

 Prompt进阶学习

限制

重要的是,根据Wei等人的说法,“思维链仅在使用∼100B参数的模型时才会产生性能提升”。较小的模型编写了不合逻辑的思维链会导致精度比标准提示更差。通常,模型从思维链提示过程中获得性能提升的方式与模型的大小成比例。

备注

本章的写作过程中,没有对任何语言模型进行微调 😊.

2、零样本思维链

零样本思维链(Zero Shot Chain of Thought,Zero-shot-CoT)提示过程是对 CoT prompting 的后续研究,引入了一种非常简单的零样本提示。他们发现,通过在问题的结尾附加“让我们一步步思考。”这几个词,大语言模型能够生成一个回答问题的思维链。从这个思维链中,他们能够提取更准确的答案。

 Prompt进阶学习

从技术上讲,完整的零样本思维链过程涉及两个单独的提示/补全结果。在下面的图像中,左侧的顶部气泡生成一个思维链,而右侧的顶部气泡接收来自第一个提示(包括第一个提示本身)的输出,并从思维链中提取答案。这个第二个提示是一个 自我增强 的提示。\

 Prompt进阶学习

示例

以下是一些演示(仅执行推理提取)。这个演示展示了GPT-3(davinci-003)无法解决一个简单的数学问题,而第二个演示使用了零样本思维链提示,并成功地解决了这个问题。随意输入您的OpenAI API密钥(点击生成),并在示例中进行操作。请注意,与思维链提示相比,零样本思维链提示要简单得多。

错误示例

 Prompt进阶学习

正确示例

 Prompt进阶学习

结论

零样本思维链也有效地改善了算术、常识和符号推理任务的结果。然而,毫不奇怪的是,它通常不如思维链提示过程有效。,在获取思维链提示的少量示例有困难的时候,零样本思维链可以派上用场。

有趣的消融实验

Kojima等人尝试了许多不同的零样本思维链提示(例如“让我们按步骤解决这个问题。”或“让我们逻辑思考一下。”),但他们发现“让我们一步一步地思考”对于他们选择的任务最有效。

备注

提取步骤通常必须针对特定任务,使得零样本思维链的泛化能力不如它一开始看起来的那样强。

从个人经验来看,零样本思维链类型的提示有时可以有效地提高生成任务完成的长度。例如,请考虑标准提示写一个关于青蛙和蘑菇成为朋友的故事。在此提示的末尾附加让我们一步一步地思考会导致更长的补全结果。

3、自洽性

自洽性(Self-consistency)1是对 CoT 的一个补充,它不仅仅生成一个思路链,而是生成多个思路链,然后取多数答案作为最终答案。

在下面的图中,左侧的提示是使用少样本思路链范例编写的。使用这个提示,独立生成多个思路链,从每个思路链中提取答案,通过“边缘化推理路径”来计算最终答案。实际上,这意味着取多数答案。

 Prompt进阶学习

结论

研究表明,自洽性可以提高算术、常识和符号推理任务的结果。

即使普通的思路链提示被发现无效,自洽性仍然能够改善结果。

备注

Wang 等人讨论了一种更复杂的边缘化推理路径方法,该方法涉及每个思路链生成的大语言模型概率。然而,在他们的实验中,他们没有使用这种方法,多数投票似乎通常具有相同或更好的性能。

4、知识生成

生成的知识方法(Generated Knowledge Approach)要求 LLM 在生成响应之前生成与问题相关的可能有用的信息。该方法由两个中间步骤组成,即知识生成和知识集成。

 Prompt进阶学习

知识生成

在知识生成步骤中,要求 LLM 生成有关问题的一组事实。大语言模型将以 few-shot 方式进行提示,如下所示。使用相同提示生成 M 个不同的完成。

 Prompt进阶学习

知识集成

接下来,我们生成“知识增强”问题,并用它们提示 LLM 获得最终答案。最好的理解方法是通过一个例子来说明。

假设我们正在尝试回答问题“大多数袋鼠有 <mask> 肢体”。假设在知识生成步骤中,我们生成了 2 个知识(M=2):

知识1:“袋鼠是生活在澳大利亚的有袋动物。”

知识2:“袋鼠是有 5 条肢体的有袋动物。”

现在,我们将每个知识与问题连接起来,生成知识增强的问题:

知识增强问题1:“大多数袋鼠有 <mask> 肢体。袋鼠是生活在澳大利亚的有袋动物。”

知识增强问题2:“大多数袋鼠有 <mask> 肢体。袋鼠是有 5 条肢体的有袋动物。”

然后,我们用这些知识增强的问题提示 LLM,并获得最终答案的提案:

答案1:“4”

答案2:“5”

我们选择概率最高的答案作为最终答案。最高概率可能是答案令牌的 softmax 概率,或答案令牌的对数概率。

结论

这种方法显示了对各种常识数据集的改进。

备注

The knowledge corresponding to the selected answer is called the selected knowledge. 与所选答案对应的知识称为“精选知识”。

5、最少到最多提示过程

最少到最多提示过程 (Least to Most prompting, LtM) 将 思维链提示过程 (CoT prompting) 进一步发展,首先将问题分解为子问题,然后逐个解决。它是受到针对儿童的现实教育策略的启发而发展出的一种技术。

与思维链提示过程类似,需要解决的问题被分解成一组建立在彼此之上的子问题。在第二步中,这些子问题被逐个解决。与思维链不同的是,先前子问题的解决方案被输入到提示中,以尝试解决下一个问题。

 Prompt进阶学习

示例:回复客户咨询

让我们问一个稍微复杂的客服问题:

 Prompt进阶学习

这个回答是错误的(目前还在退货时间内),那我们来将问题分解为子问题试试:

 Prompt进阶学习

让我们试着解决第一个子问题:

 Prompt进阶学习

仅仅通过解决第一个子问题,我们就能解决整个问题。如果 GPT-3 没有立即给出答案,我们可以解决下一个子问题,直到它返回答案。值得注意的是,我们使用 让我们一步一步来 的提示短语。这个提示不是必须的,但对于这个例子来说效果很好。

示例:字符连接

LtM 最初是使用 few-shot 提示的方式引入的,而不是显式指令将问题分解为多个步骤(如上所示)。除此之外,有时也可以使用单一提示而不是提示链来实现它。让我们来看看字符连接的尾字问题2,例如给定输入词语 思考、机器,则输出应为 考器

第一次尝试:标准提示

即使使用更先进的模型(如 text-davinci-003),标准提示与 few-shot 示例的表现也非常糟糕。

 Prompt进阶学习

第二次尝试:思维链

思维链的表现比标准提示好得多。这是因为它现在允许模型考虑自己提取每个单词的最后一个字母,将复杂性降低到分组已经收集的字母的行为。然而,这种方法在更长的输入下也可能慢慢出现问题。

 Prompt进阶学习

第三次尝试:LtM(单一提示)

使用 LtM,我们通过重新表述先前串联的结果来增强思维链的概念。这种做法使得每个步骤变的简单,即每次只需要连接一个字符。这种方法带来了非常好的效果,12 个乃至更多的词都能得到正确结果。

这种方法看起来与思维链非常相似,但在概念上大有不同。在这里,每一步都引入了上一步连接的结果。例如,在“思考、机器、学习”的这个例子种,它不会单独连接字符“考”,“器”,“习”,而是连接“考”和“器”,然后连接“考器”和“习”。由于重新引入了上一步的结果,模型现在可以推广到更长的链,因为它每一步都带着增量结果,同时单步骤内只需要做很少的工作。

 Prompt进阶学习

(译注:该例子使用了 ‘|’ 而非 ‘,’,是因为中文的逗号经常不被识别为分隔符)。结论

在具有 12 个词的字符问题上,思维链的准确率为 34%,而 LtM 的准确率为 74%(该论文使用 text-davinci-002 作为模型)(译注:上面的示例因为翻译成了中文,所以准确率与原文中的值应该不同)。

示例:组合泛化问题(compositional generalization) (SCAN)

SCAN 基准测试3要求模型将自然语言转换为动作序列。例如,句子 “run left and walk twice” 将被翻译为 “TURN_LEFT + RUN + WALK * 2”。当面对训练集中长度更长的序列时,语言模型的表现尤其差。

第一次尝试:标准提示

使用简单的标准提示,text-davinci-003 的表现非常出色,但仍然失败了。

 Prompt进阶学习

第二次尝试:LtM,第一步 – 缩减

在这里,我们使用两个不同的提示。第一个提示用于将输入问题缩减为一个步骤序列。第二个提示用于将这个缩减后的步骤序列映射到实际的操作中。

这两个提示都相当长,因而使用压缩的 Python 符号表示操作,以节省标记(tokens)。

第一步将自然语言描述分解为更明确但仍类似人类的语言。这将有助于映射步骤按顺序解决问题。 例如,“jump around left twice” 被简化为 “jump left” -> TURN_LEFT + JUMP 和 “jump around left” -> (TURN_LEFT + JUMP) * 4。同样,减少步骤是用来解释重复概念(twice、thrice 等)的。

 Prompt进阶学习

第二次尝试:LtM,第二步 – 映射

在第二步中,我们使用缩减过的结果,并再次使用相当长的提示(14个案例)将简化的自然语言描述转换为一系列操作。

在这里,我们注入第一步的输出:

“jump around left twice” can be solved by: “jump left”, “jump around left”, “jump around left twice”. “walk opposite left thrice” can be solved by: “walk opposite left”, “walk opposite left thrice”. So, “jump around left twice after walk opposite left thrice” can be solved by: “jump left”, “jump around left”, “jump around left twice”, “walk opposite left”, “walk opposite left thrice”.

到 LLM 中。

 Prompt进阶学习

结论

LtM 带来了多项提升:

相对于思维链提高了准确性

在难度高于提示的问题上提升了泛化能力

在组合泛化方面的性能得到了显著提高,特别是在SCAN基准测试3

使用 text-davinci-002(论文中使用的模型)的标准提示解决了 6% 的 SCAN 问题,而 LtM 提示则取得了惊人的 76% 的成功率。在 code-davinci-002 中,结果更为显著,LtM 达到了 99.7% 的成功率。

6、提示的关键要素

在之前的页面中,我们已经讨论了几种不同的提示策略。本页将提供一般建议,这些建议对于提示的实际编写很重要。

“基本事实的重要性不大”

令人惊讶的是,在提示中提供少量 exemplars 时,实际答案 (gold) 并不重要。正如下图所示,即使在样本中提供随机标签,性能也几乎不受影响。在此图像中,“演示”与示例相同。

 Prompt进阶学习

标签空间很重要

尽管样本中的黄金标签并不重要,但 labelspace 很重要。即使从标签空间中提供随机标签,也有助于大语言模型更好地理解标签空间并提高结果。此外,正确地在示例中表示标签空间的分布很重要。与在示例中从标签空间中均匀采样不同,最好按照标签的真实分布进行采样。

格式很重要

样本的格式或许是最重要的部分,因为它指示大语言格式如何正确地格式化其对提示的答案。

例如,请考虑以下样本。它们使用全大写的单词作为答案。尽管这些答案完全错误(2+2不是50),但 GPT-3 正确地回答了最后一个问题,并按照其他样本的格式进行回答。

2+2等于多少?

五十

20+5等于多少?

四十三

12+9等于多少?

二十一

备注

使用 4 到 8 个样本是适合用于少量示例提示的合适数字 ,但通常尽可能多地提供样本会更有帮助。

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索