问ChatGPT“火星上天气如何?”,它却告诉你:“抱歉我的数据源来自地球”时,提示工程技术该出场了

问了chatgpt一个问题,chatgpt给了我一个啼笑皆非的回复。

如何提问是一门学问,阅读了一些参考文献,对提示工程技术有了更深的感悟。

下面我会分别来说一说这些技术的含义以及应该如何应用。感谢ChatGPT,参考文献在它的提示下更通俗易懂,如果大家有更好的理解,欢迎评论区讨论。

提示工程技术

注意:为了避免上下文的影响,对于每一个技术都新开了一个对话窗口。

1. 零样本提示(Zero-Shot Prompting)

这种方式不需要任何与问题相关的样本输入,而是直接提出问题。

模型将根据其内部的预训练知识库进行回答。

"火星上天气如何?"

这种问题是平常我们最常用的,可能会得到你希望的答复,也有可能像我最开始的时候一样,出现让人啼笑皆非的答案。

2. 少样本提示(Few-Shot Prompting)

这种方式提供几个相关的样本来引导模型生成期望的答案。

如果我们要教模型如何在句子中正确使用一个新词,我们可以提供一些包含这个词的句子作为示例。然后,我们可以观察模型是否能够根据这些示例正确地使用这个词。尽管少样本提示在许多任务上都很有效,但在处理更复杂的问题时,它可能表现得不够好。

需要说明的是,Zhang等人在2023年提出的“多模态链式思考提示(Multimodal CoT Prompting)”方法,就是这种技术的一个典型应用。这种方法不仅考虑了文本信息,还结合了视觉信息,从而在更复杂的任务上取得了更好的效果。

样本1: 地球上的天气状况是温和的,有四季变化。
样本2: 月球上的天气状况极端,没有大气层。
问题: 火星上天气如何?

 看,只是举几个例子,它变聪明了!

3.思维链(Chain-of-Thought Prompting)提示

这种方式通过连续的、逻辑相关的提示来引导模型生成期望输出,其本质上涉及到在原始提示中添加"让我们一步一步地思考"。

这段话主要介绍了两种思考模式:链式思考(CoT)和零样本CoT。这两种模式都是为了提升机器学习模型的推理能力,使其可以通过中间步骤来解决问题,而不仅仅是直接给出答案。

链式思考(CoT):在解决一个问题时,不直接给出答案,而是通过一系列的中间步骤来推理得出答案。

零样本CoT:这是一种无需额外示例就可以解决问题的方法。它通过在提示中添加“让我们逐步思考”这样的语句,引导模型按照步骤进行推理。

这两种思考模式都是为了提升机器学习模型的推理能力,使其可以更好地处理复杂的问题。

提示1: 火星是我们太阳系的一部分。
提示2: 火星有自己的大气层。
提示3: 大气层影响一个行星的天气。
问题: 那么,火星上天气如何?

 

4. 思维树(Tree of Thoughts,简称ToT)

这种方式构建一个思维树,每个节点都是一个思维步骤,可以帮助模型进行深入的思考和推理。

ToT 维护着一棵思维树,思维由连贯的语言序列表示,这个序列就是解决问题的中间步骤。使用这种方法,LM 能够自己对严谨推理过程的中间思维进行评估。LM 将生成及评估思维的能力与搜索算法(如广度优先搜索和深度优先搜索)相结合,在系统性探索思维的时候可以向前验证和回溯。

提示1: 火星有大气吗?
提示2: 火星的温度范围是多少?
问题:火星上天气如何?


 

思维链提示(Chain-of-Thought Prompting)和思维树提示(Tree of Thoughts,简称ToT)都是引导模型进行推理的方法,但它们有一些不同之处。

思维链提示是通过一系列逻辑相关的提示来引导模型进行线性思考,这些提示通常是顺序排列的,每一个提示都建立在前一个提示的基础上。这种方法的目标是帮助模型沿着一个确定的思维路径进行推理。

思维树提示则是通过构建一个思维树来引导模型进行更深层次的、非线性的思考。在这个树状结构中,每个节点都是一个思维步骤,每个分支代表一个可能的思考方向。这种方法的目标是帮助模型探索多个可能的思维路径,并进行更深入的推理。

简而言之,思维链提示更注重线性思考,而思维树提示则更注重非线性思考和深入推理。

5. 自洽性可能(Self-Consistency)

这种方式要求模型在给出答案时考虑到自身的一致性。由Wang等人(2022)(opens in a new tab)提出,自我一致性旨在“替换链式思维提示中使用的天真贪婪解码方法”。其想法是通过少样本CoT采样多个不同的推理路径,并使用生成结果选择最一致的答案。这有助于提高CoT提示在涉及算术和常识推理的任务中的性能。

火星上有大气层吗

那么火星上的天气状况是怎样的?考虑到你之前提供的信息,火星是有大气层的。

6. 生成知识提示(Generated Knowledge Prompting)

这种方式利用模型生成的知识来提供提示,

iu等人2022年提出了一种新的思考模式,这种模式让模型在做出预测之前先生成知识。

这种方式主要是为了解决现有的大型语言模型(LLM)在处理需要更多关于世界知识的任务时的局限性,这种方法的优点是可以提升模型的预测准确性,同时也可以让模型在处理问题时有更深入的理解。但这种方法也有一些局限性,例如在生成“知识”时可能需要大量的计算资源,而且生成的“知识”质量也会直接影响到最后的预测结果。

总的来说,这种方法为改进大型语言模型提供了一个新的思路,可能会在未来的人工智能领域中得到更广泛的应用。

你知道火星相关的知识吗?根据你知道的知识,火星上天气如何?

7. 检索增强生成(Retrieval Augmented Generation,简称RAG)

这种方式先检索相关的信息,然后用这些信息来生成答案。

Meta AI 的研究人员引入了一种叫做检索增强生成(Retrieval Augmented Generation,RAG)(opens in a new tab)的方法来完成这类知识密集型的任务。RAG 把一个信息检索组件和文本生成模型结合在一起。RAG 可以微调,其内部知识的修改方式很高效,不需要对整个模型进行重新训练。

RAG 会接受输入并检索出一组相关/支撑的文档,并给出文档的来源(例如维基百科)。这些文档作为上下文和输入的原始提示词组合,送给文本生成器得到最终的输出。这样 RAG 更加适应事实会随时间变化的情况。这非常有用,因为 LLM 的参数化知识是静态的。RAG 让语言模型不用重新训练就能够获取最新的信息,基于检索生成产生可靠的输出。

Lewis 等人(2021)提出一个通用的 RAG 微调方法。这种方法使用预训练的 seq2seq 作为参数记忆,用维基百科的密集向量索引作为非参数记忆(使通过神经网络预训练的检索器访问)

使用检索增强生成(Retrieval Augmented Generation,简称RAG)这种方法来搜索“火星上天气如何”时,模型会首先执行信息检索任务,从知识库(例如维基百科)中检索与“火星天气”相关的信息。

例如,RAG可能找到以下信息:

"火星的气候主要由其薄薄的大气层决定,这层大气主要由二氧化碳组成。火星的温度可以极度寒冷,尤其是在冬季和夜晚。火星也会经历季节变化,虽然每个季节的长度比地球要长得多。尘暴是火星天气的一个显著特征,有时这些尘暴可以覆盖整个行星,持续数周甚至数月。"

然后,这些检索到的信息会被输入到文本生成模型,与原始的搜索提示“火星上天气如何”一起,生成最终的答案。

例如,最终的答案可能是:

"火星的气候由其薄薄的大气层决定,这层大气主要由二氧化碳组成。火星的温度可以极度寒冷,尤其是在冬季和夜晚。火星也会经历季节变化,不过每个季节的长度比地球要长得多。另外,尘暴是火星天气的一个显著特征,有时这些尘暴可以覆盖整个行星,持续数周甚至数月。"

这样,RAG方法提供了一个结合了信息检索和文本生成的方式来回答复杂的问题,使得生成的答案更加准确和可靠。

8. 自动推理和工具使用(Automatic Reasoning and Tool-use,简称ART)

 这种方式利用自动推理和工具来解决问题,是由Paranjape等人在2023年提出的一种新框架,该框架使用冻结的语言模型(LLM)来自动生成包含中间推理步骤的程序。ART的工作原理是在接到一个新任务时,从任务库中选择多步推理和使用工具的示范,然后在测试中,每当需要调用外部工具时,就暂停生成,将工具输出整合后再继续生成。ART可以引导模型总结示范,将新任务进行拆分并在恰当的地方使用工具。

在BigBench和MMLU基准测试中,ART在未见任务上的表现超过了少样本提示和自动CoT,并且配合人类反馈后,它的表现超过了手写的CoT提示。

简单来说,ART就是一种智能化的工具,它可以引导模型进行推理,同时还可以调用外部工具进行帮助,使得模型的性能得到提升。

  1. 火星是太阳系的一颗行星,它的大气和地球有很大的不同。
  2. 火星的大气主要由二氧化碳构成,含有少量的氮气和氩气,以及微量的氧气和水。
  3. 了解火星的平均温度以及季节性气候变化。
  4. 使用外部工具查询火星的最新天气数据。

9. 自动提示工程师(Automatic Prompt Engineer,简称APE)

下边的三个方法是有其相似性的,所以在最开始,先对这几个方法做一个说明

自动提示工程师(APE):

APE可能会生成一系列可能的指令如:“查询火星的当前天气”,“给出火星的气温情况”,或者“描述火星的气候特征”。然后,这些指令会被执行并评估其效果,最后选择评分最高的指令作为最终的提示。最终的问题可能是:“查询火星的当前天气”。

主动提示:

主动提示首先会生成可能的答案,例如:“火星的天气很冷”,“火星的气候非常干燥”,“火星的温度可能低于零度”。然后,会计算这些答案的不确定度,选择最具挑战性的问题,然后人工注释这个问题,得出正确答案。最终的问题可能是:“火星的气候特征是什么?”。

方向性刺激提示:

方向性刺激提示可能首先生成一个提示:“请描述火星的天气状况。”然后,这个提示会被用来指导大型语言模型解决这个问题。然后通过强化学习来优化这个过程,以提高答案的准确性。最终的问题可能是:“按照你的知识,请描述火星的天气状况。”。

模型自己设计提示,以解决问题。APE主要关注的是自动化生成和选择指令,它使用一个大型语言模型来生成可能的指令,然后通过执行这些指令并评估其效果来选择最合适的指令。这种方法的关键在于,它实际上是在解决一个优化问题,即找到能够最有效驱动模型行为的指令。

APE用于自动产生和选择指令,它将指令生成问题视为自然语言合成问题,利用大型语言模型(LLMs)作为黑盒优化问题的解决方案来生成和搜索候选解。

这个过程可以被分解为两步:

首先,一个大型语言模型(作为推理模型)接收输出演示以生成任务的指令候选项,这些候选解将指导接下来的搜索过程。

然后,使用目标模型执行这些指令,并根据计算的评估分数选择最合适的指令。

APE还发现了一个更好的零样本CoT提示,这个提示比人工设计的“让我们一步一步地思考”提示更好。

10. 主动提示(Active-Prompt)

主动提示的方法与APE在一定程度上相似,都是试图找到最有效的提示,但它的方式有所不同。主动提示首先生成一组可能的答案,然后通过计算这些答案的不确定度来选择最有挑战性的问题。这些问题然后由人类进行注释,这些注释被用来推断每个问题的最佳答案。这种方法的主要特点是它主动地寻找并使用人工注释的最具挑战性的问题,以优化模型的行为。

主动提示是一种新的提示方法,它旨在让大型语言模型(LLMs)更好地适应不同任务的特定示例提示。这种方法主要解决的问题是,传统的思维链(CoT)方法依赖于一组固定的人工注释示例,但这些示例可能不是对于所有任务都是最有效的。

以下是主动提示方法的主要步骤:

① 使用或不使用少量CoT示例查询LLM。这意味着,你可以选择是否使用已有的人工注释示例来引导LLM的行为。

② 对一组训练问题生成k个可能的答案。这些答案是LLM在接收到上一步骤的查询后生成的。

③ 基于这k个答案计算不确定度度量。这个度量是通过评估答案之间的不一致性来得到的,如果答案之间的差异越大,那么不确定度就越高。

④ 选择最不确定的问题由人类进行注释。这意味着选择那些LLM在回答时最不确定,也就是说,生成的答案差异最大的问题。

⑤ 然后使用新的注释示例来推断每个问题。这些新的人工注释示例将被用来更新LLM,使其能够更好地回答相似的问题。

总的来说,主动提示的目标是通过动态地生成和选择最有效的示例提示,使LLM能够更好地适应各种不同的任务。

11. 定向刺激提示(Directional Stimulus Prompting)

方向性刺激提示的关注点在于如何更好地引导模型生成所需的摘要。为了实现这一目标,它训练了一个可调节的策略语言模型来生成提示,这些提示被用来指导大型语言模型的行为。然后,通过强化学习来优化这个过程,以提高模型生成摘要的效果。这种方法的主要特点是它结合了强化学习和生成模型,以实现更具有针对性的引导。

以下是方向性刺激提示的主要步骤和特点:

① 训练一个可调节的策略语言模型(LM)来生成提示。这个策略模型可以是一个相对较小的模型,其主要任务是生成有效的、能够引导LLM行为的提示。

② 使用强化学习(RL)来优化LLM。强化学习是一种机器学习方法,它可以通过试错和反馈来学习如何在给定环境中做出最优决策。

③使用生成的提示来指导LLM的行为。这些提示是由策略模型生成的,并且被用来引导LLM生成摘要或回答问题。

与标准提示相比,方向性刺激提示的主要优点是它可以更好地引导LLM的行为,从而生成更高质量的摘要或回答。此外,由于策略模型可以是一个较小的模型,因此它可以更快、更有效地进行优化。

12. 推理行动框架(ReAct)

ReAct框架是由 Yao 等人在 2022 年提出的。是一种使大语言模型(LLMs)能够生成推理轨迹和执行任务特定操作的框架。

推理轨迹是指模型的思考过程,它包括计划解决问题的步骤、跟踪这些步骤的进展,并根据需要进行调整。这个过程可以帮助模型处理一些异常情况。

任务特定操作则是模型需要执行的具体动作,例如与外部数据源(如知识库或环境)进行交互,收集必要的信息。

ReAct 的主要优势是它允许模型与外部工具进行交互,获取额外的信息,从而得出更可靠和实际的答案。它在语言和决策任务上的表现优于许多最先进的基线模型。此外,通过使用 ReAct,模型的解释性和可信度也得到了提高。

ReAct 的工作方式是基于人类的行为和推理之间的协同作用。这种协同作用使人类能够学习新任务并做出决策或推理。

链式思考(CoT)是一种提示模型进行推理过程的方法,然而,由于它无法与外部世界进行交互或者更新自己的知识,所以可能会产生事实幻觉和错误传播等问题。

ReAct 就是为了解决这个问题而设计的,它结合了推理和行为,使模型能够执行动态推理,创建、维护和调整操作计划,同时还支持与外部环境的交互,以获取额外的信息。

使用 "火星上的天气如何?" 这个问题来说明 ReAct 框架是如何工作的。

1. 思考:首先,ReAct 会生成一个推理轨迹,它明确了需要解决的问题是查询 "火星上的天气状况"。

2. 操作:然后,它会执行一个与任务相关的操作,如在一个外部知识库(例如NASA的火星天气站)或者在互联网上进行搜索“火星的当前天气”。

3. 观察:得到的信息可能会是关于火星的天气的一些数据,例如, "火星的温度范围从-140度到30度,大部分时间都是寒冷和干燥的,大气压力非常低,只有地球的1%左右。火星上有强风、尘暴和旋涡。"

4. 思考:接着,ReAct 会更新推理轨迹,整理并理解得到的信息,形成一个更易于理解的答案。

5. 操作:最后,它会形成最终的答案,例如:"火星上的天气通常是寒冷和干燥的,温度在-140度到30度之间变化。火星上经常有强风、尘暴和旋涡,而且大气压力非常低,只有地球的1%左右。"

这就是一个 ReAct 框架如何解决问题的例子。在这个过程中,它结合了推理和行为,与外部知识库进行了交互,获取了必要的信息,并在每个步骤中更新了推理轨迹。

13. 多模态链式思考提示(Multimodal CoT Prompting)

通过提供多种模式的提示(例如,文本、图片等),来引导模型生成期望的输出。

Zhang等人在2023年提出了一种称为多模态思维链提示(Multimodal Chain-of-Thought Prompting,简称多模态CoT)的方法。这种方法不同于传统的侧重于语言模态的思维链提示方法,它将文本和视觉两种模态融入到一个两阶段框架中。

在第一阶段,多模态CoT基于多模态信息(即文本和视觉信息)生成理性。理性在这里可以理解为是模型对问题的理解和思考,是模型生成答案的基础。

第二阶段是答案推断,模型利用在第一阶段生成的理性信息,进行答案的推断和生成。

在ScienceQA基准测试中,这种多模态CoT模型(1B)的表现优于GPT-3.5,说明了多模态思维链提示方法在处理包含多种模态信息的问题时具有优势。

 

基于用户和模型交互分类

1. 直接输入问题:这类技术不需要任何特殊的输入格式,用户可以直接将问题输入到模型中。包括:
    - 零样本提示(Zero-Shot Prompting)

2. 基于样本或连贯逻辑的提示:这类技术需要用户提供一些与问题相关的样本来引导模型生成期望的答案。包括:

    - 少样本提示(Few-Shot Prompting)

    - 思维链提示(Chain-of-Thought Prompting)

    - 思维树提示(Tree of Thoughts,简称ToT)

3. 使用外部工具或信息:这类技术需要用户与外部工具或环境进行交互,获取必要的信息。包括:
    - 检索增强生成(Retrieval Augmented Generation,简称RAG)

    - 自动推理和工具使用(Automatic Reasoning and Tool-use,简称ART)

    - 推理行动框架(ReAct)

4. 引导模型自我生成和选择提示:这类技术需要用户引导模型自我生成和选择最有效的提示。包括:
    - 自动提示工程师(Automatic Prompt Engineer,简称APE)

    - 主动提示(Active-Prompt)

5. 提供多模态信息:这类技术需要用户提供多种模式的信息(例如,文本、图片等)来引导模型的行为。包括:
    - 多模态链式思考提示(Multimodal CoT Prompting)

以上的分类是根据用户与模型交互的方式进行的,实际应用中,这些技术往往会相互结合,共同解决更复杂的问题。

参考文档:

Prompt Engineering Guide | Prompt Engineering Guide

  • 20
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值