在情感分析和机器翻译领域,即使没有任何实例,大型语言模型(LLM)的扩展也能取得良好效果。然而,它们在复杂的多步骤问题(如算术和常识推理)中却失效了。为了解决这个问题,可以针对特定任务对 LLM 进行微调,或者通过少量提示来教会 LLM。然而,这两种方法都有局限性。要创建高质量的推理,微调的成本很高,而仅进行少量提示对任务来说又不够有效。思维链 (Chain-of-Thought, CoT) 提示可以解决这两个问题。在本文中将探讨 CoT 提示以及如何应用 CoT 提示提升 LLM 的业务表现能力。
提示词工程(Prompt Engineering)
提示词工程是指编写结构合理、精心制作的提示语,以便生成式人工智能模型(如 LLM)能够更好地解释这些提示语。提示词告诉 LLM 要执行什么任务,生成什么样的输出。它可以包含指令、上下文、输入数据和输出指标。通过提示词工程,我们可以使用 LLM 执行各种任务,从简单的问题解答到复杂的创意文本生成。它基于一种新兴特性 —— 上下文学习(in-context learning),允许 LLM 从提示词中学习,提示词工程可提高 LLM 在当前任务中的表现。
关于提示词工程相关内容,可以参考如下内容:
juejin.cn/post/731449…
思维链(Chain-of-Thought) 提示
思维链提示是一种提示工程技术,通过它我们迫使 LLM 输出一系列导致所需答案的中间步骤,它提高了 LLM 的推理能力,因为它允许模型专注于一次解决一个步骤,而不是一次考虑整个问题。对于复杂的问题帮助会更明显,因为这些问题很难或不可能一步解决。它提供了一个可解释的窗口,让我们可以通过跟踪模型所采取的步骤序列来看到模型是如何得出答案的。
CoT 提示可以与具有大参数(~100B 参数)的LLM一起用于多个推理任务,包括数学文字问题、常识推理和符号操作。例如,在 PaLM 模型中使用 CoT 提示而不是标准的少样本,将 GSM8K 基准测试的性能从 17.9% 提高到 58.1%。CoT 提示可以在足够大的语言模型中轻松引出,而无需对模型进行特殊训练或微调。这使得 CoT 提示成为一种可扩展且易于使用的技术。
Few-Shot CoT
Few-Shot CoT 通过问题和答案提示 LLM,LLM 被提供了一些类似问题的解决方法的例子。这些例子以一种鼓励 LLM 思考问题并得出导致答案的思路的方式呈现。
Few-Shot CoT 比 Few-shot 基线更有效,因为它为 LLM 提供了类似问题的示例,可能比Few-Shot 基线更复杂,因为它需要创建示例提示。不过 Few-Shot CoT 的好处超过了额外的复杂性。
Zero-Shot CoT
Zero-Shot CoT 涉及将 “Let’s think step by step(让我们一步一步地思考)” 添加到原始提示中,使用两个提示提取推理和答案。
- 推理提取:在这一步中,语言模型思考问题,并得出导致答案的推理链。为此,我们给语言模型一个包含问题和触发句 “让我们一步一步地思考” 的提示。然后,语言模型将生成一句解释它是如何得出答案的句子。
- 答案提取:在第二步中,我们从语言模型的响应中提取最终答案。我们将提示、生成的句子和一个触发句子 “The answer is(答案是)” 连接起来。它告诉语言模型给我们答案,然后语言模型将生成一个包含问题答案的句子。
将 Zero-Shot CoT 与评估 LLM 的 Zero-Shot 推理能力的其他两种方法进行比较后,研究人员发现 Zero-Shot CoT 在各种推理任务上表现优于其他方法。如果您正在寻找一个在 CoT 提示上训练的较小模型,请考虑 Flan-T5 模型。它可用于 Zero-Shot NLP 任务,包括文本摘要、自然语言推理、翻译和常识推理。
CoT 诞生
CoT推理是 LLM 的一种新兴能力,可能是由于在超过 1000 亿参数的模型上进行缩放而产生的。它对较小的 LLM 的性能没有积极影响,只有在使用大规模的模型时才会产生性能增益。这有两个原因。首先,较小的 LLM 无法生成既流畅又逻辑的长思维链。这导致性能低于标准提示。其次,CoT 推理对于更复杂的问题更有效。它要求 LLM 能够识别解决问题所涉及的关键步骤,然后生成导致解决方案的思维链。较小的 LLM 可能无法像较大的 LLM 那样有效地做到这一点。
大型 LLM 中出现 CoT 推理的另一个原因可能是它们的预训练数据,更大的 LLM 通常在包括逐步推理的大规模数据集上进行训练,这可能有助于它们发展以思维链条方式推理的能力。遵循指令似乎并非 CoT 能力所必需,因为已经证明可以使用未经微调以遵循指令的 LLM 进行 Zero-Shot 和 Few-Shot CoT 推理。然而,遵循指令可能会提高 CoT 推理的质量。最终,需要进行更多研究来确定大型 LLM 中出现 CoT 推理的确切原因。
如何使用 CoT
执行思维链提示只需在提示的末尾添加 “Let’s think step by step (让我们一步一步地思考)”。这会迫使模型按步骤思考,并将问题分解为步骤或更小的部分。
如果遇到一个相当严格的问题,只能用特定的推理模式来解决,那么可以使用 Few-Shot CoT。需要提供一些解决特定问题所需的推理步骤的示例,然后 LLM 将尝试使用类似的步骤来解决给定的问题,或者可以使用这种技术以特定的方法来解决用户的问题。这些示例应该展示中间步骤和最终解决方案。一旦开发出思维链提示和示例,则可以将它们合并到模型中。最后,测试模型,并根据思维链提示和示例进行迭代,直到模型的性能令人满意。
CoT 关键维度
Self-consistency(自洽性)
自洽性是一种改进语言模型在需要多步推理的任务上性能的技术。在思维链提示的背景下,自洽性可以通过对同一问题进行多样化的思维链采样来提高模型的性能,然后可以训练模型从这些思维链中选择最一致的答案。
自洽性显著提高了 CoT 提示在许多流行的算术和常识推理基准上的性能,这是一种完全无监督的技术,可以与预训练的语言模型直接使用。它不需要额外的人工标注,也不需要其他的训练、模型或微调。它对采样策略和参数具有鲁棒性,在 PaLM-540B 上变化温度采样中的T、top-k采样中的k和nucleus采样中的p策略,自洽性始终提高了性能。
Robustness(健壮性)
相关研究人员进行了三组不同思维链注释的实验,每组注释由不同的注释者编写。他们发现,无论注释者如何,CoT 提示始终优于标准基准线,这表明CoT提示不依赖于特定的语言风格。研究人员还对从 GSM8K 训练集中随机抽样的示例进行了实验,这是一个独立的来源。他们发现,使用这些示例的 CoT 提示与手动编写的示例的 CoT 提示表现相当,这表明 CoT 提示不依赖于使用的特定示例。
研究人员还进行了使用不同数量的示例进行实验,他们发现 CoT 提示对不同数量的示例保持稳健,这表明CoT提示不需要大量示例才能发挥作用。研究人员使用了各种语言模型进行实验,包括LaMDA 137B,他们发现 CoT 提示对所有这些语言模型都有效,这表明CoT提示不依赖于特定的语言模型。总的来说,这些实验的结果表明CoT提示是一种改善语言模型在各种任务中表现的稳健技术,它不依赖于特定的语言风格、注释者、示例集或语言模型。
Sensitivity(敏感性)
CoT 中的敏感性是指模型的性能受提示设计影响的程度,如果提示设计不好,模型的性能可能会下降。提示词应该清晰、简洁,易于模型理解,避免使用模型可能不熟悉的行话或技术术语。提示词应该与模型试图解决的具体任务相匹配,如果提示与任务不匹配,模型可能无法生成正确答案。任务越复杂,模型对提示设计的敏感性可能越高。
Few-Shot CoT 的性能在提示示例问题类型和任务问题类型不匹配时下降。这表明Few-Shot CoT 对提示设计非常敏感,需要仔细匹配特定任务才能实现良好的性能。
Coherence(连贯性)
连贯性是指 CoT 理据的步骤是否按正确顺序进行。这意味着后续步骤不应是先前步骤的前提条件,而先前步骤也不应基于后续步骤。例如,一个解释中出现“32 + 42 = 74”在介绍“32”或“42”之前,就不具备连贯性,这是因为方程“32 + 42 = 74”是一个依赖于先前步骤介绍数字“32”和“42”的后续步骤。
研究人员设计了一组消融设置,以检验连贯性对类似 CoT 的理由的不同组成部分的影响,消融设置是一种通过移除系统的不同部分并观察对系统性能的影响来测试系统不同部分重要性的方法。研究发现,连贯性对类似 CoT 的理由的所有组成部分都很重要,当连贯性被移除时,系统的性能会下降。
CoT 类型
Multi-modal CoT(多模态 CoT)
传统的 CoT 侧重于语言模态,这意味着它只使用文本为模型提供推理的上下文。多模态 CoT 将文本和视觉融入到一个两阶段的框架中。第一阶段涉及基于多模态信息的推理生成,这意味着模型提供了文本和图像,并被要求生成一个解释文本和图像相关性的理由。框架的第二阶段是答案推理,这是模型利用它在第一步生成的信息性理由来推断问题的正确答案的地方。
1B 多模态 CoT 的表现优于 GPT-3.5 16%(准确率从75.17%提高到91.68%),并且在ScienceQA 基准测试中超越了人类表现。在 8 个问题类别中,我们的模型将配对图像的问题表现从 67.43% 提高到88.80%。UnifiedQA 和 GPT-3.5 等方法使用图像标题来理解图像内容,然而使用图像特征效果更好。未来的研究可以通过使用更好的图像特征、添加常识知识和过滤无关信息来改进 CoT 的推理能力。
Least-to-Most Prompting(逐步提示)
思维链提示是一种强大的自然语言推理技术,但它可能在需要解决比提示中显示的例子更难的问题时遇到困难。为了解决这一挑战,我们提出了一种新颖的提示策略,称为由易到难提示。
Least-to-Most 提示的工作原理是将复杂问题分解为一系列更简单的子问题,然后按顺序解决它们。每个子问题都由前一个子问题的答案促成。例如,要解决一个数学应用题,我们可能首先查询语言模型,将问题分解为子问题,比如 “第一件物品的成本是多少?” 和 “总成本是多少?”然后我们会查询语言模型,按顺序解决这些子问题,利用前一个子问题的答案来指导我们的查询。
Auto-CoT
Auto-CoT 是一种自动创建带有问题和推理链的演示的方法,它使用大型语言模型为每个演示生成推理链,使用提示“Let’s think step by step(让我们一步一步地思考)”。Auto-CoT有两个主要步骤。首先,它将给定数据集中的问题分成几个群组。然后,它从每个群组中选择一个代表性问题,并使用简单的启发式方法与 Zero-Shot CoT 一起生成推理链。演示问题的多样性对于减少 Zero-Shot CoT 在推理链中出现的错误非常重要。通过将问题分成几个群组,Auto-CoT 可以确保每个演示代表不同类型的问题。这有助于减少 Zero-Shot CoT 在推理链中出现错误的可能性。
Auto-CoT 在 10 个推理任务上进行了测试,包括算术推理(MultiArith,GSM8K,AQUA-RAT,SVAMP),常识推理(CSQA,StrategyQA)和符号推理(Last Letter Concatenation,Coin Flip),Auto-CoT 在 GPT-3 中达到或超过了手动 CoT 的性能。
CoT 应用
算术推理
CoT 提示在与 PaLM 540B 参数语言模型一起使用时,在包括算术推理的各种任务上与特定任务的精细调整模型具有可比性能。解决数学问题是语言模型的一项具有挑战性的任务。为了评估 LLM 解决数学问题的能力,使用了 MultiArith 和 GSM8K 两个基准。标准提示显示出这些基准的曲线相对平缓,这意味着增加模型大小并不能显著提高性能。然而,当使用 CoT 提示时增加模型规模显著提高了性能,特别是对于大型模型。
常识推理
CoT 提示也可用于常识推理任,这些任务需要基于常识知识进行对物理和人类互动的推理。目前的自然语言理解系统在常识推理方面面临挑战。CoT 提示在常识推理基准测试中进行评估,如CommonsenseQA、StrategyQA、日期理解和体育理解。在这些任务上的表现通常随着模型规模的增加而改善,CoT 提示相对于它提供了小幅改进。CoT 提示在提高体育理解任务的表现方面最为有效。
符号推理
CoT 提示使语言模型能够执行标准提示难以完成的符号推理任务。它还支持长度概括,使模型能够处理推理时间输入,这些输入比少样本示例中看到的输入更长。在研究中,为了测试 CoT 提示,使用了两个玩具任务进行评估。第一个是最后一个字母连接,模型将名字中的字母的最后一个字母连接起来。第二个是抛硬币,模型确定人们抛硬币后硬币是否保持正面朝上。
使用领域内和领域外的测试集来评估 PaLM 540B 在这两个任务上使用 CoT 和标准提示的性能。对于领域内评估,示例的步骤数与 Few-Shot 示例相同。对于领域外评估,示例的步骤数比示例中的步骤多。
PaLM 540B 与 CoT 在领域内评估中几乎达到了 100% 的解决率。标准提示在领域内和领域外的评估中都失败了。CoT 提示导致了性能的提高,但低于领域内评估。
问答系统
CoT 提示通过将复杂问题或提示分解为一系列更简单、逻辑的步骤来改进问题回答(QA)。这种方法有助于语言模型理解问题的结构以及其组成部分之间的关系。每个步骤都专注于问题的特定方面,帮助模型更有效地识别相关信息。CoT 鼓励模型进行多步骤推理,它可以迭代地从不同来源或文档中收集和组合信息。这使模型能够进行改进的推理,并将不同的知识片段连接起来得出准确的答案。通过明确指定推理步骤,CoT 提示可以帮助防止语言模型在回答复杂问题时可能引入的常见错误或偏见。此外,CoT 提示还可以让用户了解模型是如何得出特定响应的。
结语
CoT 在提示词工程中的应用还远未达到顶峰,它是一个不断发展的领域,随着技术的进步和我们对大模型理解的深入,将会有更多的创新和突破出现。让我们继续实验,继续探索,将这些见解应用到自己的项目中,不断追求更优雅、更高效的交互方式。