Way2AI · Prompt Engineering 综述
- 1. Prompt Engineering
- 1.1. New Tasks Without Extensive Training
- 1.2. Reasoning and Logic
- 1.2.1. Chain-of-Thought (CoT) Prompting
- 1.2.2. Automatic Chain-of-Thought (Auto-CoT) Prompting
- 1.2.3. Self-Consistency
- 1.2.4. Logical Chain-of-Thought (LogiCoT) Prompting
- 1.2.5. Chain-of-Symbol (CoS) Prompting
- 1.2.6. Tree-of-Thoughts (ToT) Prompting
- 1.2.7. Graph-of-Thoughts (GoT) Prompting
- 1.2.8. System 2 Attention (S2A) Prompting
- 1.2.9. Thread of Thought (ThoT) Prompting
- 1.2.10. Chain-of-Table Prompting
- 1.3. Reduce Hallucination
- 1.4. User Interface
- 1.5. Fine-Tuning and Optimization
- 1.6. Knowledge-Based Reasoning and Generation
- 1.7. Improving Consistency and Coherence
- 1.8. Managing Emotions and Tone
- 1.9. Code Generation and Execution
- 1.10. Optimization and Efficiency
- 1.11. Understanding User Intent
- 1.12. Metacognition and Self-Reflection
- 2. Conclusion
- 3. Source
Prompt Engineering
按应用领域进行分类,简要概述提示技术的发展历程,从最初的零样本提示技术,一直到现在的最新进展。
New Tasks Without Extensive Training
Zero-Shot Prompting
零样本提示为我们如何利用大语言模型(LLM)提供了全新的视角。这种技术无需依赖大量的训练数据,而是通过精心设计的提示,引导模型去完成前所未有的任务。具体的说,模型在提示中接收到了任务的描述,但并没有标注数据来训练特定的输入-输出映射。然后,模型就会利用自身已有的知识,根据给定的提示为新任务生成预测。
Few-Shot Prompting
少样本引导是通过提供一些输入-输出示例,帮助模型理解特定任务的一种方法,这与零样本引导(不提供任何示例)有所不同。即便只提供少数几个高质量的示例,也已经能够在一定程度上提升模型在复杂任务上的表现。
然而,少样本引导需要额外的 Token 来包含这些示例,对于更长的文本输入来说,可能会带来一些处理上的困难。
此外,提示示例的选取和组织方式对模型的行为有着显著影响,例如模型可能会倾向于选择使用频率较高的词汇,这种偏见可能会影响少样本引导的结果。
尽管少样本引导能够增强处理复杂任务的能力,特别是在像 GPT-3 这样的大型预训练模型中,但是,精心设计的引导策略对于实现最佳性能和减少模型的无意识偏见至关重要。
Reasoning and Logic
Chain-of-Thought (CoT) Prompting
CoT 提示能够更有效地引导大语言模型产生结构化且深思熟虑的回应。我们通过一系列的实验,展示了CoT提示的独特优势,强调了它能够引导大语言模型按照逻辑链条进行推理的能力。这种方式使得模型的回应展现出对给定提示更深入的理解。例如,对于一个需要多步推理的数学文字题目,CoT提示能够呈现出整个推理过程和最终答案,这仿佛就像人类如何将问题分解为逻辑中间步骤一样。
Automatic Chain-of-Thought (Auto-CoT) Prompting
“Let’s think step by step”, 自动引导大语言模型(LLMs)形成推理链。Auto-CoT 注意到在单独生成的推理链中可能会出现错误,因此采取了多样化采样的策略以提高模型的鲁棒性。它会提出各种各样的问题,并为每个问题生成多个不同的推理链,从而形成一个最终的示例集。这种自动化的多样化采样策略可以最大限度地减少错误,同时提高了少样本(few-shot)学习的效果,免去了手动制作推理链的繁重工作。
Self-Consistency
与常用的“贪心解码”(每一步都选择最可能的选项)相比,“自我一致性”的解码策略能在使用CoT(Chain-of-Thought,逐步推理)技术指导大语言模型时,更好地提升推理性能。对于那些存在多个可能解决路径的复杂推理任务,"自我一致性"策略能从语言模型的解码器中采样出多样化的推理链条。接着,它通过对这些采样链条进行统计处理(即“边缘化”),来确定最具一致性的最终答案。这种方法的优势在于,对于需要深入分析的问题,通常存在更多的推理路径,这种多样性正是我们找到解决方案的关键。
Logical Chain-of-Thought (LogiCoT) Prompting
大语言模型 (LLMs) 要解决各种领域的复杂多步问题,具备逻辑推理能力是至关重要的。现有的方法,比如 CoT 提示,虽然倡导逐步推理,但在验证机制上却不够有效。
LogiCoT 采用了"反证法"的思想,对模型生成的每一步推理进行验证,并在发现错误时提供有针对性的反馈进行修正。通过这样一种"思考-验证-修正"的循环过程,LogiCoT 能有效地减少模型在推理过程中的逻辑错误和误导性信息。
Chain-of-Symbol (CoS) Prompting
大语言模型常常在处理涉及复杂空间关系的任务时遇到困难,因为它们主要依赖于自然语言,这可能导致歧义和偏见。
CoS 使用简洁的符号来替代自然语言。CoS 的优势在于:它可以提供清晰、简洁的提示,增强大语言模型的空间推理能力,并提高人类对模型的理解。然而,CoS 也面临着一些挑战,比如如何扩展和泛化,如何与其他技术集成,以及如何解释基于符号的大语言模型的推理过程等。
Tree-of-Thoughts (ToT) Prompting
ToT 通过构建一个包含中间推理步骤的树形结构,来拓展链式思维(CoT)提示的方法,这些步骤被称为 “思维”。每一个"思维"都代表一段有条理的语言序列,指向最终的解决方案。这样的结构让大语言模型能够通过评估每个"思维"在解决问题上的进展,进行更深入的推理。思维树结合了模型生成和评估"思维"的能力,以及广度优先或深度优先等搜索算法。这使得模型能在推理链中进行系统性的探索,预先扩展可能有希望的解决方向,同时在找到错误的解决方案时能够回溯。
Graph-of-Thoughts (GoT) Prompting
GoT 对传统的顺序方法进行了改进,使其更好地对应人类思维的非线性特性。这个框架支持动态的交互,回溯和评估各种想法,允许从不同的分支中整合和组合思维,打破了思维树的线性结构。它的主要贡献在于,将推理过程模拟成一个有向图,并提供了一个带有多种转换操作的模块化架构。这个框架被视为一种灵活且动态的语言模型提示方式,能够捕捉人类思维过程的复杂性,并提升模型的能力。
System 2 Attention (S2A) Prompting
在基于 Transformer 的大语言模型 (LLM) 中,柔性的关注机制可能会过度考虑无关的信息,这对于生成有效的 token 不利。
S2A 利用大语言模型的推理能力,通过重新整理输入的上下文,只关注与任务相关的信息。S2A 采用了两步过程,通过重塑上下文和生成更精确的回应,来提高其关注能力和回应质量。S2A 的效果在各种任务中得到了验证,包括回答基于事实的问题,生成长篇文章,以及解决数学文字题目。
Thread of Thought (ThoT) Prompting
ThoT 的设计灵感来自人类的认知过程,它能有条不紊地分析大量的信息,将这些信息划分为易于处理的小部分。这个过程分为两个阶段,首先,LLM 会概括和审查每一段信息,然后再精炼这些信息,以便给出最后的回应。ThoT 的灵活性体现在它可以作为一个多功能的插件,用于增强不同模型和提示方法的推理能力。
Chain-of-Table Prompting
像 CoT、PoT 和 ToT 这样的方法主要是通过自由形式的文本或代码来进行推理,但在处理包含大量数据和复杂结构的表格时,却遭遇了一些困难。
Chain-of-Table 的核心思想是通过动态地在表格上生成并执行常见的 SQL 或 DataFrame 操作,实现步骤之间的逐步推理。这一过程的反复迭代可以改进中间的推理结果,从而提升大语言模型的预测能力,使其能够通过形象的逻辑推理链条进行预测。
Reduce Hallucination
Retrieval Augmented Generation (RAG)
大语言模型 (LLMs) 已经带来了文本生成的革命性变化,但其依赖有限、静态的训练数据,使得在需要外部知识的任务中,准确的响应成为了难题。传统的提示方法并不能解决这个问题,因为它需要耗费大量的重新训练。
RAG 为我们提供了新的解决方案,它将信息检索巧妙地融入到提示过程中。RAG 能够分析用户的输入,制定出精准的查询,并在预先构建的知识库中查找相关的资源。检索到的信息片段被纳入到原始的提示中,为其提供了丰富的上下文背景。这样增强后的提示,使大语言模型能够生成具有创新性和准确性的响应。RAG 的敏捷性突破了静态限制,对于需要实时知识的任务,它无疑是一种改变游戏规则的技术。
ReAct Prompting
与以往将推理和行动分别处理的研究不同,ReAct 让大语言模型(LLMs)有能力同时进行推理过程和特定任务的行动生成。这种交织的过程增强了推理和行动之间的协同效应,使模型在处理异常情况时能够更好地引导、追踪和更新行动计划。ReAct 被广泛应用于各种语言处理和决策制定任务中,并在与当前SOTA相比较的基线测试中展现出了显著的优势。尤其值得一提的是,在问题回答(HotpotQA)和事实验证(Fever)任务中,ReAct 通过与简单的维基百科API的交互,有效地解决了错误传播和产生不真实信息的问题,从而产生了更易于理解的任务解决路径。
Chain-of-Verification (CoVe) Prompting
CoVe 包含四个步骤:模型首先生成初步的回答,然后提出一些验证问题以检查自己的回答,接着独立地解答这些问题,最后根据验证结果修正并产生最终的回答。这种经过深思熟虑的多步骤验证方式,提升了大语言模型的逻辑推理能力,使其即使在面对矛盾信息时也能减少错误。CoVe 的设计理念是模拟人类的验证过程,以此提高大语言模型输出的连贯性和精确性。在列表问题、问答和长篇生成等实验中,CoVe 成功地在保证事实准确性的同时,减少了虚构现象。通过提出具有针对性的验证问题,模型能更好地发现并纠正自身的不准确之处。
Chain-of-Note (CoN) Prompting
检索增强型语言模型(Retrieval-augmented language models,RALMs)的设计初衷是为了提升大型语言模型(Large Language Models)的能力,通过融合外部知识,以减少模型在生成过程中产生的不真实信息。然而,这些检索到的信息并非总是可靠的,有可能会引导模型产生错误的回应。常规的 RALMs 在评估自身知识是否充足时,往往会遇到困难,尤其是在缺乏足够信息时,这些模型通常无法给出“我不知道”的答案。
1 | # For standard RALM |
CoN 能够系统地评估文档的相关性,强调关键且可靠的信息,过滤掉无关的内容,从而使得模型的回应更加精确,更具上下文相关性。
CoN 不仅是一个提示模板,而且还包含了一个经过微调的可以记笔记模型。因此CoN可以看作是RAG和Fine-Tuning的结合。
Chain-of-Knowledge (CoK) Prompting
CoK 从人类解决问题的方式中获得灵感,将复杂的任务系统地分解成一系列有序的步骤。这个过程首先是全面的推理准备阶段,建立问题的上下文,并对问题进行框架化。然后,它进入动态知识适应阶段,从各种来源如内部知识库、外部数据库以及给定的提示中,精心收集相关的证据。
User Interface
Active Prompting
Active-Prompting 引入了一种新的机制,可以确定哪些问题对于注释最具影响力。这种方法借鉴了基于不确定性的主动学习的思想,通过使用各种度量标准来描述不确定性,并选择最具不确定性的问题进行注释。
Fine-Tuning and Optimization
Automatic Prompt Engineer (APE)
APE 通过动态地生成和选择对特定任务最有影响力的提示,从而克服了传统手工设计的、固定不变的提示的缺点。这种巧妙的方法会分析用户的输入,制定一系列可能的指令,然后利用强化学习来挑选出最佳的提示。这种提示能够根据不同的上下文环境进行实时调整,提高了模型的适应性。
Knowledge-Based Reasoning and Generation
Automatic Reasoning and Tool-use (ART)
ART 赋予了大语言模型通过多步骤过程进行推理,以及无缝地利用外部专业知识的能力,从而使其能够应对复杂问题,超越了简单的文本生成。
ART通过整合专业知识和计算工具,打开了大语言模型的多功能性,使其的输出能与现实世界紧密联系。这使得大语言模型能够在科学研究、数据分析,甚至决策支持等多元领域发挥作用。
ART不仅超越了传统的提示技术,还通过结构化程序自动化了推理步骤,从而消除了手工制作的需要。其动态的工具整合能力确保了与外部工具的顺畅协作,可以暂停生成过程以融入外部工具的输出结果,然后无缝地恢复生成流程。在一些具有挑战性的基准测试(例如Big-Bench和MMLU)上,实验证明了ART的有效性,其表现甚至超过了传统的提示技术,有时甚至能够达到手工制作示例的效果。
Improving Consistency and Coherence
Contrastive Chain-of-Thought (CCoT) Prompting
传统用于大语言模型的CoT提示方法往往忽视了一个关键环节:从错误中吸取教训。
而 CCoT 不仅提供了正确的推理示例,还展示了错误的推理过程。试想你在探索一张地图,既有明确的正确路径,也标出了需要避开的误区,这就是CCoT带来的优势!
Managing Emotions and Tone
Emotion Prompting
EmotionPrompt 解决了大语言模型理解情绪线索能力的不确定性。他们从心理学研究中汲取灵感,探索语言对人类表现的影响,将11个情绪刺激语句融入到提示中,旨在提升大语言模型的情绪智能。实验结果显示,这些情绪刺激语句的加入,能够有效地融入到模型的运作中,从而在各种任务中显著提升大语言模型的表现。
Code Generation and Execution
Scratchpad Prompting
尽管基于 Transformer 的语言模型在生成基础编程任务的代码上表现卓越,但在涉及到需要精确逻辑推理的复杂、多步骤算法计算中,它们却面临挑战。
Scratchpad 更注重任务设计,而非模型的修改,使得模型能在给出最终答案之前,生成一系列的中间计算步骤。
Program of Thoughts (PoT) Prompting
语言模型在解决数学表达式时的表现并不理想,主要原因在于它们容易出现算术错误,无法处理复杂的方程,且在表达大量迭代过程时效率低下。
PoT 倡导在计算步骤中使用外部的编程语言解释器,以提高语言模型的数值推理能力。
Structured Chain-of-Thought (SCoT) Prompting
SCoT 通过将程序结构(如序列、分支和循环结构)融入推理步骤,从而提升了大语言模型在生成结构化源代码方面的表现。这种方法明确地引导大语言模型从源代码的角度思考需求,相比于 CoT 提示,其在代码生成方面的效果得到了显著提升。
Chain-of-Code (CoC) Prompting
CoC 通过利用编写代码的方式来改善LM的推理能力,适用于逻辑和语义任务。CoC 鼓励LMs把语义子任务格式化为灵活的伪代码,这样就可以让解释器捕捉到未定义的行为,并通过一个被称为"LM模拟器"(LMulator)的工具来模拟这些行为。
Optimization and Efficiency
Optimization by Prompting (OPRO)
OPRO 使用自然语言的提示,根据问题的描述,逐步生成解决方案,从而使得快速适应不同任务和个性化优化过程成为可能。通过在诸如线性回归和旅行商问题这样的经典问题上的案例研究,展示了LLMs在优化问题上的巨大潜力。此外,OPRO还探索了如何优化提示,以在自然语言处理任务中最大化准确性,这也突显出LLMs的敏感性。
Understanding User Intent
Rephrase and Respond (RaR) Prompting
RaR 让大语言模型有能力在一次提示中对问题进行重新表述和扩展,从而提高了模型理解问题和回答问题的准确性。他们还开发了一种两步骤的 RaR 变种,这种变种结合了重新表述和回应的大语言模型,显著提高了各种任务的性能。研究强调,相比于人类随意提出的问题,重新表述的问题能够增强语义的清晰度,解决问题本身的模糊性。
Metacognition and Self-Reflection
Take a Step Back Prompting
Step Back 方法包含两个步骤,即“抽象”和“推理”的整合。通过广泛的实验,将“Step Back”应用于PaLM-2L在STEM(科学、技术、工程和数学)、知识问答和多跳推理等各种推理密集型任务中,实验结果表明,这种方法能显著提升模型的推理能力。
Conclusion
提示工程未来的发展潜力巨大,元学习和混合提示架构等新兴趋势预示着它的能力将得到进一步提升。然而,我们在发展的同时,必须高度重视道德问题,强调负责任的开发和部署,确保其能够积极地融入我们的生活中。
Source
- Blog Link: https://neo1989.net/Way2AI/Way2AI-A-Systematic-Survey-of-Prompt-Engineering-in-LLM/
- Copyright Declaration: 转载请声明出处。