AI 文摘

大模型性能优化之Prompt工程全面梳理:从zeroshot到chainofthought再到花式XOT


  • By AiBard123
  • February 23, 2024 - 2 min read



作者: 老刘说NLP 来源: 老刘说NLP

今天是2024年2月15日,星期四,赣州,天气晴,今天是大年初六,大家继续新年快乐。

我们继续来看看一些有趣的工作,这次围绕prompt工程Prompt Engineering,关于这块,我们在2023年提及了许多,但最好还是来一个汇总总结。

提示工程组成部分一般可以分成如下部分:根据大量数据训练的 LLM、指令instruction、上下文context,以及用户输入users input。

昨日读到一个工作,《A Systematic Survey of Prompt Engineering in Large Language Models: Techniques and Applications》(地址:https://arxiv.org/abs/2402.07927 )按应用领域对prompt工程进行了分类,提供了对提示工程最新进展的结构化概述,从实际应用出发,对现有的策略进行了总结:

很难得的一个整理工作,本文进一步整理,给出索引论文地址、基本思路及实现示意图,供大家一起参考,会很有收获。

一、无需训练的新任务prompt策略

在面对无需训练的新任务New Tasks Without Extensive Training方面 ,包括如下几种策略:

1、Zero-shot Prompting

Zero-ShotPrompting无需大量训练数据,而是依靠精心设计的提示,引导模型完成新任务。

具体来说,模型在提示中接收到任务描述,但缺乏训练特定输入输出映射的相关数据,模型利用已有的知识,根据新任务的提示生成预测结果。

论文地址:《Language Models are Few-Shot Learners》,https://arxiv.org/abs/2005.14165v4

2、Few-shot Prompting

Few-ShotPrompting为模型提供了一些输入-输出示例,以诱导模型理解给定任务。

与zeroshot相比,即使提供几个高质量的示例,也能提高模型在复杂任务中的表现,不过,fewshot需要额外的标记来包含示例,这对于较长的文本输入来说可能会变得难以承受。

此外,提示示例的选择和组成也会对模型行为产生重大影响,而偏向频繁出现的单词等偏差仍会影响少量提示的结果。虽然少量提示增强了复杂任务的处理能力,尤其是在像GPT-3这样的大型预训练模型中,但谨慎的提示设计对于实现最佳性能和减少意外的模型偏差至关重要。

论文地址:《Language Models are Few-Shot Learners》,https://arxiv.org/abs/2005.14165v4

二、逻辑推理Reasoning and Logic的prompt策略

在逻辑推理Reasoning and Logic方面 ,包括以下几种:

1、Chain-of-Thought (CoT) Prompting

面对复杂的推理,LLM经常会磕磕绊绊,从而限制了其潜力。为了弥补这一缺陷,思维链(CoT)提示技术,作为一种以促进连贯和逐步推理过程的方式提示LLMs能有效地诱导LLM做出更有条理、更深思熟虑的回答。

例如,提示将显示一个多步骤数学问题的推理过程和最终答案,并模仿人类如何将问题分解为逻辑中间步骤。

论文地址:《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》,https://arxiv.org/pdf/2201.11903.pdf

2、Automatic Chain-of-Thought (Auto-CoT)

手工创建高质量的CoT示例既耗时又不理想,Auto-CoT,通过“Let’sthinkstep”提示自动指导大模型生成推理链。

考虑到在单独生成的链中存在误差的可能性,Auto-CoT通过不同的采样来增强鲁棒性,通过对各种问题进行采样,并为每个问题生成多个不同的推理链,形成最终的示例集合,这种自动化的多样化采样最大限度地减少了错误。

论文地址:《Automatic Chain of Thought Prompting in Large Language Models》,https://arxiv.org/pdf/2210.03493.pdf

3、Self-Consistency

在CoT提示中引入了自一致性解码策略,与贪婪解码相比,这种解码策略可以提高推理性能。对于具有多个有效路径的复杂推理任务,自一致性Self-Consistency通过从语言模型的解码器中采样产生不同的推理链。然后,通过边缘化这些采样链来确定最一致的最终答案。

这种方法利用了需要深思熟虑的分析的问题往往需要更大的推理多样性,最终生成解决方案。

论文地址:《 Self-consistency improves chain of thought reasoning in language models》,https://arxiv.org/pdf/2203.11171.pdf

4、Logical CoT (LogiCoT) Prompting

执行逻辑推理的能力对于llm解决跨不同领域的复杂、多步骤问题至关重要。如CoT提示,鼓励逐步推理,但缺乏有效的验证机制。逻辑思维链(LogiCoT)提示,利用符号逻辑的原则以连贯和结构化的方式增强推理。

具体来说,LogiCoT运用归谬论的概念来验证模型生成的推理的每一步,并提供有针对性的反馈来修正不正确的步骤。LogiCoT可以通过思考-验证-修改循环减少逻辑错误和幻觉。

论文地址:《LogiCoT: Logical Chain-of-Thought Instruction-Tuning》,https://arxiv.org/pdf/2305.12147.pdf

5、Chain-of-Symbol (CoS) Prompting

大模型经常在涉及复杂空间关系的任务中挣扎,因为他们依赖于自然语言,容易产生歧义和偏见。为了克服这一限制,CoS使用浓缩符号代替自然语言。

CoS提供了清晰简洁的提示,提高了llm的空间推理能力,并提高了人类的可解释性,但也面临着诸如可伸缩性、通用性、内嵌性等挑战。

论文地址:《Chain-of-Symbol Prompting Elicits Planning in Large Langauge Models》,https://arxiv.org/pdf/2305.10276.pdf

6、Tree-of-Thoughts (ToT) Prompting

思维树(ToT)通过管理中间推理步骤的树形结构(称为“思想”)来扩展CoT提示。每一个思考都代表了一个连贯的语言序列,这种结构允许语言模型通过评估解决问题的思想所产生的进展来进行有意识的推理。

ToT集成了模型产生和评估思考的能力,使用了搜索算法,如广度优先或深度优先搜索。这使得在推理链中进行系统的探索,具有前瞻性,以扩展有前途的方向,并在解决方案不正确时回溯。

论文地址:《Tree of Thoughts: Deliberate Problem Solving with Large Language Models》,https://arxiv.org/pdf/2305.10601.pdf

7、Graph-of-Thought (GoT) Prompting

人类思维过程固有的非线性特性对传统的顺序提示方法提出了挑战。“思维图”提示推进了传统的序列方法,以更好地适应人类思维的非线性特征。这个框架允许思想的动态相互作用、回溯和评估,允许来自不同分支的思想的聚集和组合,脱离思维树的线性结构。

论文地址:《Graph of Thoughts: Solving Elaborate Problems with Large Language Models》,https://arxiv.org/pdf/2308.09687.pdf

8、System 2 Attention Prompting

基于transformer的llm中的软注意机制容易包含不相关的上下文信息,对token生成产生不利影响。为了解决这个问题,S2A利用llm的推理能力,通过重新生成输入上下文来选择性地关注相关部分。S2A采用两步流程,通过上下文再生和细化上下文的回复生成来提高注意力和回复质量。

论文地址:《System 2 Attention (is something you might need too)》,https://arxiv.org/pdf/2311.11829.pdf

9、Thread of Thought (ThoT) Prompting

思维线索(ThoT)到人类认知的启发,系统地将广泛的上下文检查成可管理的部分进行增量分析,采用两阶段方法,大模型首先总结和分析每个部分,然后提炼信息以获得最终回复。ThoT的灵活性是一个多功能的“即插即用”模块,增强了不同模型和提示方法的推理能力。

论文地址:《Thread of Thought Unraveling Chaotic Contexts》,https://arxiv.org/abs/2311.08734

10、Chain of Table Prompting

像CoT、PoT和ToT这样的方法通过自由格式的文本或代码表示推理步骤,这些方法在处理复杂的表场景时面临挑战。

Chain-of-Table通过动态生成和执行表上常见的SQL/DataFrame操作,使用分步表推理。这个过程的迭代特性增强了中间结果,使大模型能够通过逻辑可视化的推理链进行预测。

论文地址:《Tab-CoT: Zero-shot Tabular Chain of Thought》,https://arxiv.org/pdf/2305.17812.pdf

三、减少幻觉Reduce Hallucination常用策略

在减少幻觉Reduce Hallucination方面 ,对应的策略包括:

1、Retrieval Augmented Generation (RAG)

检索增强生成(RAG)作为一种新颖的解决方案出现,将信息检索无缝地编织到提示过程中。RAG分析用户输入,制作目标查询,并在预先构建的知识库中搜索相关资源。检索到的片段被合并到原始提示中,并用上下文背景丰富它。

论文地址:《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》,https://arxiv.org/pdf/2005.11401.pdf

2、ReAct Prompting

ReAct使llm能够同时生成推理痕迹和特定任务的动作。这种交错的过程增强了推理和推理之间的协同作用操作,在处理异常的同时促进模型在诱导、跟踪和更新操作计划。

论文地址:《ReAct: Synergizing Reasoning and Acting in Language Models》,https://arxiv.org/abs/2210.03629

3、Chain-of-Verification (CoVe):

验证链(CoVe)涉及一个系统的四步过程,包括模型生成基线回复,计划验证问题以检查其工作,独立回答问题,并生成包含验证的修订回复。通过这种深思熟虑的多步骤方法验证其工作,LLM提高了逻辑推理能力,即使在矛盾的信息中也减少了错误。

论文地址:《Chain-of-Verification Reduces Hallucination in Large Language Models》,https://arxiv.org/pdf/2309.11495.pdf

4、Chain-of-Note (CoN) Prompting

提示链(CoN) 检索增强语言模型(ralm)通过结合外部知识来增强大型语言模型,以减少事实幻觉。但是,无法保证检索信息的可靠性,从而可能导致错误的回复。

标准的检索增强很难评估他们的知识是否充足,并且在缺乏信息时常常无法回答“未知”。为了应对这些挑战,通过处理有噪声的、不相关的文档和准确地处理未知场景来提高鲁棒性。

CoN系统地评估文档相关性,强调关键和可靠的信息,过滤掉不相关的内容,从而产生更精确和上下文相关的回复。

论文地址:《Chain-of-Note: Enhancing Robustness in Retrieval-Augmented Language Models》,https://arxiv.org/pdf/2311.09210.pdf

5、Chain-of-Knowledge (CoK) Prompting

CoK系统地将复杂的任务分解为协调良好的步骤。该流程使用综合推理准备阶段,在此阶段建立上下,然后进入一个动态的知识适应阶段,从各种来源(如内部知识库、外部数据库和给定提示)精心收集证据。

论文地址:《Chain-of-knowledge: Grounding large lan- guage models via dynamic knowledge adapting over het- erogeneous sources》,https://arxiv.org/pdf/2305.13269.pdf

四、代码生成及执行Code Generation and Execution

在代码生成及执行Code Generation and Execution方面 ,策略包括:

1、Scratchpad Prompting

该方案引入了“刮板”概念。该建议使模型能够在提供最终答案之前生成任意序列的中间token。

论文地址:《Show Your Work: Scratchpads for Intermediate Computation with Language Models》,https://arxiv.org/pdf/2112.00114.pdf

2、Program of Thoughts (PoT) Prompting

由于语言模型容易出现算术错误,无法处理复杂的方程,以及在求解大量迭代时效率低下,因此语言模型在求解数学表达式时不是最优的。为了增强语言模型中的数值推理,思维程序(Program-of-thoughts,PoT)提示,提倡使用外部语言解释器进行计算步骤。

论文地址:《Program of Thoughts Prompting: Disentangling Computation from Reasoning for Numerical Reasoning Tasks》,https://arxiv.org/abs/2211.12588

3、Structured Chain-of-Thought (SCoT) Prompting

广泛使用的CoT提示包括在生成代码之前生成中间的自然语言推理步骤。尽管它在自然语言生成中很有效,但当应用于代码生成任务时,CoT提示显示出较低的准确性。结构化思维链(SCoTs)通过将程序结构(序列、分支和循环结构)整合到推理步骤中。

论文地址:《Structured Chain-of-Thought Prompting for Code Generation》,https://arxiv.org/abs/2305.06599

4、Chain of Code (CoC) Prompting

代码链(CoC)通过利用逻辑和语义任务的代码编写来改进LM推理。CoC鼓励lm将语义子任务格式化为灵活的伪代码,允许解释器捕捉未定义的行为并用“LMulator”模拟它们。

论文地址:《Chain of Code: Reasoning with a Language Model-Augmented Code Emulator》,https://arxiv.org/pdf/2312.04474.pdf

五、其他方面的prompt策略

1、在用户互动User Interaction方面 ,对应策略为:Active-Prompt

该方案引入了active-prompt作为解决llm适应各种推理任务挑战的解决方案。 与现有的依赖于固定的人工注释示例集的CoT方法不同,Active-Prompt引入了一种机制来确定最有效的注释问题。

论文地址:《Active Prompting with Chain-of-Thought for Large Language Models》,https://arxiv.org/abs/2302.12246

2、在微调以及优化Fine-Tuning and Optimization方面 ,策略为Automatic Prompt Engineer (APE)

APE通过动态生成和选择对特定任务最有影响的提示,摆脱了静态、手工设计提示的限制,该方法分析用户输入,制作候选指令,然后利用强化学习来选择最佳提示,并使其适应不同的环境。

论文地址:《Large Language Models Are Human-Level Prompt Engineers》,https://arxiv.org/pdf/2211.01910.pdf

3、在知识推理与生成Knowledge-Based Reasoning and Generation方面 ,策略为Automatic Reasoning and Tool-use (ART)

有限的推理能力和缺乏外部工具的利用阻碍了大模型在复杂任务中的潜力,引入了自动推理和工具使用(ART)来解决这一关键障碍,使大模型能够通过多步骤流程进行推理,并集成外部专业知识。

论文地址:《Art: Automatic multi-step reasoning and tool-use for large language models》,https://arxiv.org/pdf/2303.09014.pdf

4、在提升一致性及生成Improving Consistency and Coherence效果上 ,策略为Contrastive Chain-of-Thought Prompting (CCoT)

对比思维链(CCoT)提示大模型传统的思维链提示往往忽略了一个关键因素:从错误中学习。

对比思维链提示(CCoT)在原始提示的同时提供有效和无效的推理演示。

论文地址:《Contrastive Chain-of-Thought Prompting》,https://arxiv.org/pdf/2311.09277.pdf

5、在管理情绪及语气提升Managing Emotions and Tone效果上 ,策略为Emotion Prompting

EmotionPrompt在提示语中添加了11个情绪刺激句,以提高LLM的情商。实验结果表明,这些刺激的无缝整合,显著提高了LLM在各种任务中的表现。

论文地址:《EmotionPrompt: Leveraging Psychology for Large Language Models Enhancement via Emotional Stimulus》,https://arxiv.org/pdf/2307.11760v3.pdf

6、在优化效率Optimization and Efficiency方面 ,策略为Optimization by Prompting

与传统方法不同,OPRO利用自然语言提示,根据问题描述迭代生成解决方案。

论文地址:《Large Language Models as Optimizers》,https://arxiv.org/pdf/2309.03409.pdf

7、在理解用户意图Understanding User Intent上 ,策略为Rephrase and Respond (RaR) Prompting

RaR允许大模型在一个提示中重新措辞和扩展问题,展示了改进的理解和回答准确性,与随意提出的人类查询相比,重新措辞的问题有助于增强语义清晰度和解决固有的模糊性。

论文地址:《Rephr​ase and Respond: Let Large Language Models Ask Better Questions for Themselves》,https://arxiv.org/pdf/2311.04205.pdf

8、在自反馈Metacognition and Self-Reflection方面 ,策略为Take a Step Back Prompting

Step-Back提示技术包括两个步骤,将抽象和推理进行结合。

论文地址:《Take a Step Back: Evoking Reasoning via Abstraction in Large Language Models》,https://arxiv.org/abs/2310.06117

总结

本文主要介绍了大模型prompt工程上的一个归纳性工作,在此之上,可以看到prompt工程所采用的策略、支撑的应用、所用的数据集以及对应的评测指标,这些都是可以关注的点。

参考文献

1、https://arxiv.org/pdf/2402.06925.pdf

关于我们

老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。

老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。

对于想加入更优质的知识图谱、事件图谱、大模型AIGC实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。

更多AI工具,参考Github-AiBard123国内AiBard123

可关注我们的公众号:每天AI新工具