今天分享的是北京大学、加州大学伯克利分校和斯坦福大学联合发表的一篇文章:思维缓冲器 Buffer of Thought:大语言模型的推理增强新方法
论文题目:Buffer of Thoughts: Thought-Augmented Reasoning with Large Language Models
论文链接:https://arxiv.org/pdf/2406.04271
代码地址:https://github.com/YangLing0818/buffer-of-thought-llm
这篇论文提出了思维缓冲区(Buffer of Thoughts,BoT),一种新颖且多功能的思维增强推理方法,旨在提升大型语言模型的准确性、效率和鲁棒性。通过元缓冲区来存储一系列信息丰富的高级思维,即思维模板,这些模板是从跨多种任务的问题解决过程中提炼出来的。对于每个问题,推理时会先检索相关的思维模板,并根据任务模板自适应实例化任务。为了确保可扩展性和稳定性,通过缓冲区管理器来动态更新元缓冲区,从而随着解决更多任务增强元缓冲区的容量。
在推理阶段,大模型需要从复杂问题中提取中问题的关键信息、潜在约束以及上下文的变量和参数,并执行准确推理。这会给单个LLM带来很大的负担。
为了解决这一问题,BOT通过在推理前添加一个问题提取器,将任务的关键信息提取和理解与最终的推理分开。问题提取器提取的关键信息包括:
然后,BoT会将这些提炼后的信息重新组织成清晰易懂的格式,用于后续的推理阶段。此外,问题蒸馏器还可以将具体问题转化为高级概念和结构。这个转化过程将复杂的现实问题分解为更简单的多步计算,使后续匹配高级思想模板更加容易。
思想缓冲区的核心在于元缓冲区(Meta-Buffer)的设计。元缓冲区是一个轻量级的库,包含一系列通用的高级思维模板,这些模板是从不同问题解决过程中提取并精炼出来的,这个思维模板其实就类似于RAG的概念,在推理前先进行思维的检索。
将提取后的思维模板分为六类:文本理解、创造性语言生成、常识推理、数学推理、代码编程和应用调度。
为了进一步提高BoT的可扩展性和稳定性,这篇文章还设计了一个缓冲区管理器(Buffer-Manager),用于动态更新元缓冲区。具体来说,每当LLMs解决一个新问题后,缓冲区管理器就会对整个问题解决过程进行总结提炼,将新的思想模板添加到元缓冲区中。随着LLMs解决的问题越来越多,元缓冲区的"经验"也会越来越丰富,推理能力也将不断提升。
为了提取一个通用的思维模板,使用基于LLM的模板提炼器,其prompt设置为:
研究团队在 10 个具有挑战性的任务上对 BoT 进行了评估,这些任务涵盖数学和算法推理、领域特定知识和文学创作等多个方面,包括 “24 点游戏”、几何形状问题、国际象棋一步将死问题、Python 编程谜题、多语言小学数学问题以及十四行诗创作等。实验使用 GPT-4 作为 BoT 的基础模型,并与标准提示、单查询方法和多查询方法等进行了比较。
实验结果表明,在复杂推理任务中,BOT超越了所有基准实验。如在24点游戏任务中,相比于GPT-4直接推理,准确性提升了79.4%。相比于ToT(在该任务上表现不错),实现了8.4%的准确性提高。
BoT在多种任务中能够实现与单查询方法相当的推理时间,同时在效率上远低于传统的多查询方法,如ToT。例如,在24点游戏任务中,单查询方法和多查询方法都需要通过迭代和启发式搜索来识别可行的解决方案。这个过程特别耗时且低效,尤其是多查询方法,涉及到执行多次查询搜索和回溯阶段。
BoT直接以代码格式检索思维模板,从而实例化程序来遍历数字和符号的组合,消除了从头构建推理结构的需求,仅需一次查询即可解决问题,大大减少了复杂推理所需的时间。
在消融实验中,分别探究了问题蒸馏器(problem-distiller)、元缓冲区(meta-buffer)和缓冲区管理器(buffer-manager)对实验的影响。
在这项工作中,提出了“思维缓冲区”(Buffer of Thoughts)的概念,从而解决了单查询推理和多查询推理中存在的效率低及泛化能力差的问题。BoT的核心思想借鉴了人类解决问题的思维过程。当我们人类去解决一个新问题时,往往会先回想之前解决过的类似问题,提取其中的解题思路和方法论,然后运用到新问题中去。
论文在10个具有挑战性的密集推理任务上进行了广泛的实验,对于基准实验都有显著的提升。但是对于类似于人类的创造力的问题时,BOT的能力是有限的,因为这类问题通常不依赖于特定的思维模板。