论文 | LEAST-TO-MOST PROMPTING ENABLES COMPLEXREASONING IN LARGE LANGUAGE MODELS

论文主题: 这篇论文提出了“从简单到复杂提示”(Least-to-Most Prompting)这一新的提示策略,旨在解决大语言模型在解决比提示示例更复杂的问题时表现不佳的难题。

核心思想

  • 将复杂问题分解成一系列更简单的子问题。
  • 按顺序解决这些子问题,利用先前子问题的答案来辅助解决当前子问题。
  • 两阶段提示:分解阶段和子问题解决阶段。

优势

  • 泛化能力强: 能够将提示中未见过的问题解决得更好。
  • 无需训练或微调: 提示策略本身不需要训练或微调。
  • 可解释性强: 模型输出的推理过程清晰易懂。

实验结果

  • 符号操作: 在处理长度可变的问题时,从简单到复杂提示比思维链提示表现更优。
  • 组合泛化: 使用 GPT-3 模型,从简单到复杂提示在 SCAN 基准测试中取得了 99.7% 的准确率,而思维链提示只有 16%。
  • 数学推理: 在 GSM8K 和 DROP 基准测试中,从简单到复杂提示也优于思维链提示,尤其是在解决需要多步推理的问题时。

局限性

  • 分解提示泛化性差: 不同领域的分解提示需要单独设计。
  • 分解泛化困难: 即使在同一领域,分解复杂问题也难以实现。

结论与讨论

  • 从简单到复杂提示是提升大语言模型推理能力的重要一步。
  • 提示方法可以进一步改进,例如将提示转换为双向对话,以便更有效地学习。

未来研究方向

  • 探索如何使分解提示在不同领域之间更具有通用性。
  • 研究如何更有效地指导模型进行分解泛化。
  • 将从简单到复杂提示与其他提示方法结合使用,进一步提升模型的推理能力。

文中如何将复杂的问题分解为子问题?

论文中使用了思维链提示(Chain-of-thought Prompting)的思想,但将其与分解提示(Decomposition Prompting)结合,形成了“从简单到复杂提示”(Least-to-Most Prompting)。

分解提示 的核心思想是将复杂问题分解成一系列更简单的子问题,每个子问题都比前一个子问题更容易解决。分解提示的关键在于:

  • 构建示例: 设计一系列示例,展示如何将复杂问题分解成子问题。
  • 明确步骤: 在提示中明确指出每个子问题需要解决什么。

思维链提示 则通过引导模型进行推理过程的输出,帮助模型理解问题的本质和解决思路。

从简单到复杂提示 结合了这两种提示方法的优点,通过分解提示将复杂问题分解成子问题,再通过思维链提示引导模型逐步解决这些子问题,最终得到问题的答案。

具体操作:

  1. 分解阶段:
    • 设计包含分解示例的提示,例如:
      • 示例: “The last letter of ‘thinking’ is ‘k’… So, ‘think, machine’ outputs ‘ke’.”
      • 问题: 将 “think, machine, learning” 分解成更简单的子问题。
    • 将模型生成的分解结果作为后续步骤的输入。
  2. 子问题解决阶段:
    • 设计包含思维链示例的提示,例如:
      • 示例: “The output of ‘run left’ concatenates: the output of ‘turn left’, the output of ‘run’… So the output of ‘run left’ is ‘TURN LEFT’ + ‘RUN’.”
      • 先前答案: 模型在分解阶段生成的子问题答案。
      • 问题: 解决当前子问题。
    • 将模型生成的子问题答案作为后续步骤的输入,直到解决所有子问题,得到最终答案。

这种分解和解决相结合的方式,能够有效地引导模型逐步理解复杂问题,并将其解决。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 11:44:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 11:44:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 11:44:01       58 阅读
  4. Python语言-面向对象

    2024-07-13 11:44:01       69 阅读

热门阅读

  1. AM243-IPC

    AM243-IPC

    2024-07-13 11:44:01      22 阅读
  2. 【2024暑期实习】接到新需求该如何做?

    2024-07-13 11:44:01       22 阅读
  3. MATLAB中Simulink.exportToTemplate用法

    2024-07-13 11:44:01       22 阅读
  4. C#面:中间件的使用场景有哪些?

    2024-07-13 11:44:01       21 阅读
  5. vue3 学习笔记08 -- computed 和 watch

    2024-07-13 11:44:01       24 阅读
  6. R语言学习笔记6-数据框

    2024-07-13 11:44:01       20 阅读