随着2024年大模型技术的突飞猛进,特别是推理模型在数学、编程和科学领域的卓越表现,人们越来越关注如何充分挖掘大型语言模型(LLM)的潜力。Xinyun Chen (Google DeepMind) 在加州大学伯克利分校高级LLM Agent课程中的演讲,为我们揭示了一系列在推理时优化LLM性能的关键技术。本文将深入探讨这些推理时技巧,包括提示工程、思维链(Chain-of-Thought, CoT)方法、解空间探索以及推理时自改进,帮助读者更好地理解和应用这些技术,最终释放LLM的强大推理能力。

提示工程:引导LLM走向正确推理

提示工程是影响LLM性能的关键因素。与模型调优相比,它属于推理时技术,无需改变模型本身。传统的提示方式在推理基准测试中表现不佳,因为提示仅包含最终解决方案的格式信息,而缺乏推导解决方案的原理。

  • 小样本思维链提示(Few-shot Chain-of-Thought Prompting): 在问题之前,预先提供一个包含问题/答案对的示例,其中答案详细解释了推导最终答案的原理或步骤。例如,对于一个数学题,不仅给出答案,还详细列出了解题的每一步骤和所使用的公式。这种方法尤其在模型规模增大时,性能提升更为显著。
  • 零样本思维链提示(Zero-shot Chain-of-Thought Prompting): 无需提供任何示例问题/答案对,仅在提示末尾添加一句引导性语句,例如“让我们一步一步思考”。虽然其性能不如小样本思维链提示,但显著优于不使用思维链的零样本提示。例如,直接提问“计算5+32”,与提问“计算5+32。让我们一步一步思考”相比,后者更容易引导LLM按照运算优先级进行计算。
  • 类比提示(Analogical Prompting): 指示LLM在解决问题之前生成示例或高层次的知识。例如,在解决一个编程问题前,先让LLM生成一些类似问题的示例代码或相关的编程概念。这种方法的优点是不需要手动标注,生成的示例/知识也与问题本身高度相关。但缺点是自生成的示例和知识可能存在噪声。尽管如此,类比提示仍然优于零样本思维链提示和手动小样本思维链提示。

由于提示设计对LLM性能的影响非常敏感,如何减少人工提示工程?使用LLM作为优化器,LLM作为评分器,并使用优化轨迹来迭代改进提示(Large Language Models as Optimizer论文)。LLM生成的提示性能与小样本CoT性能相匹配。

思维链(CoT):模拟人类的推理过程

思维链(CoT) 提示技术是提升LLM推理能力的核心手段。它允许LLM进行可变的思维过程计算,并适应不同难度的任务。更复杂的问题会导致CoT中更多的推理步骤。

  • 原理:CoT的关键在于引导LLM逐步展示其思考过程,将复杂问题分解为一系列易于理解和验证的中间步骤。这些步骤模仿了人类的推理过程,帮助LLM避免直接跳跃到错误结论。
  • 优势
    • 透明性:CoT提高了LLM决策过程的透明度,使我们能够更容易地理解其推理逻辑。
    • 可调试性:通过检查CoT的中间步骤,我们可以更容易地发现LLM在哪个环节出现了错误,并进行针对性的修正。
    • 泛化能力:CoT可以应用于各种推理任务,包括数学问题、常识推理和逻辑推理
  • 推理策略
    • 由易到难提示(Least-to-most Prompting):一种使用由易到难概括的分解方法。
    • 问题简化:将问题简化为子问题或行动序列
    • 顺序解决子问题
    • 动态由易到难提示(Dynamic least-to-most prompting):为每个子问题选择不同的示例/提示,以便模型拥有足够的上下文来解决问题。
    • 自我发现提示(Self-discovery prompting):指示LLM组合特定于任务的推理策略,因为不同的推理策略可能对不同的子任务有利。

举例说明,在解决一个复杂的物理问题时,我们可以引导LLM首先陈述相关的物理定律,然后逐步应用这些定律来分析问题,最后得出结论。

解空间探索:避免单一路径的陷阱

为了避免LLM陷入单一的错误推理路径,我们需要鼓励其探索更广阔的解空间。这意味着允许LLM生成多个可能的解决方案,并从中选择最佳的一个。

  • 方法
    • 生成多个候选方案:对于每个问题,生成多个可能的答案。
    • 生成多个可能的下一步推理步骤:在当前部分思路的基础上,生成多个潜在的下一步推理步骤。
  • 选择最佳分支
    • 自洽性(Self-consistency): 选择分支中最常生成的最终响应。当有更多样本可供选择时,以及/或者当样本是多样化生成时(LLM温度变化),自洽性的性能会提高。一致性与准确性高度相关。在这两种情况下,LLM对其预测的结论更有把握,并且最常出现的答案更可能是正确的。
    • 通用自洽性:通过要求LLM执行基于一致性的选择(“根据多数共识选择最一致的响应。”),将自洽性方法应用于自由形式的开放式生成任务(例如,摘要)。
    • 基于LLM的验证器或奖励模型:使用单独的LLM来选择多个生成答案中的最佳答案。
    • 逐步评分器:评估中间思想,并使用该评估来告知要采取的后续步骤。例如,树状思想(ToT)。

例如,在解决一个编码问题时,我们可以让LLM生成多个不同的代码实现,然后使用单元测试来评估这些实现的正确性,最终选择通过所有测试的代码。

推理时自改进:持续提升LLM的性能

即使经过精心的提示和解空间探索,LLM仍然可能犯错。为了进一步提升LLM的性能,我们需要引入推理时自改进机制,使其能够从错误中学习,并不断优化其推理策略。

  • 方法
    • 反思(Reflexion):指示LLM生成其输出的反馈,并在可用时使用外部评估。
    • 自我完善(Self-refine):然后进行自我完善,以便LLM根据内部反馈和外部评估来完善输出。
    • 自我调试(Self-debugging):一种用于代码生成错误纠正的方法。
  • 反馈类型
    • 简单反馈:代码正确还是错误。
    • 单元测试反馈:包括执行结果。
    • 代码解释反馈:通过逐行解释实现来模拟橡皮鸭调试。
    • 跟踪反馈:模拟代码的逐行执行跟踪。

例如,对于一个数学问题,如果LLM的答案是错误的,我们可以要求它分析自己的推理过程,找出出错的步骤,并进行修正。

Token预算和推理成本的优化

Token预算或推理成本取决于任务和模型,以及模型的自我反思和纠正能力。通常,应该使用最适合该任务的模型。对于较容易的问题,使用较小的模型。对于更具挑战性的问题,使用较大的模型。在任何一种情况下,最好通过经验计算和优化token预算。

设计有效推理技巧的一般原则

使用通用方法,随着更多计算资源的可用,这些方法将继续扩展并显示出更高的性能。创建像我们一样可以发现的AI代理,而不是包含我们所发现的。提高发现过程的透明度。

总结:释放LLM推理能力的未来

通过本文的探讨,我们深入了解了推理时技巧对于提升LLM推理能力的重要性。从提示工程到思维链方法,从解空间探索到推理时自改进,这些技术共同构成了一套强大的工具,帮助我们释放LLM的潜力。掌握这些技巧,不仅能够提升LLM在特定任务上的表现,更能够推动LLM技术的发展,构建更加智能、可靠的人工智能系统。未来,随着技术的不断进步,我们有理由相信,LLM将在各个领域发挥更加重要的作用,为人类创造更大的价值。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注