从 CoT 到 BoT:让 LLM 的推理能力更进一步
本文正文字数约 3100 字,阅读时间 8 分钟。
提升模型对复杂推理任务的熟练度,同时避免幻觉,始终是一个重要的研究课题。尽管投入了大量努力,LLM 在通用推理能力方面仍然存在短板。传统方法如 Chain of Thought(CoT)或 Tree of Thought(ToT),往往需要多个假设或大量的来回交互,消耗的计算资源相当可观。
而本文将介绍一种新的提示语框架:
BoT,即 Buffer of Thoughts
什么是 BoT
BoT 来自论文《Buffer of Thoughts: Thought-Augmented Reasoning with Large Language Models》。简单来说,它通过一个动态的、高级思维模板库(称为元缓冲区)来弥补通用推理能力的不足。当用户提出新问题后,LLM 会先简化和分析问题,提取关键要素,然后从动态数据集中检索相关的思维模板。这种改进的推理模式使得 LLM 更高效、更具自适应性。根据原论文的说法,在 BoT 的加持下,Llama 3 8B 模型甚至可能超越 Llama 70B 模型。
下图是 BoT 与其他框架的对比。
(论文编号 arXiv:2406.04271)
BoT 能够与模板相似的问题上实现高效推理,原因有三:
- 它可以利用以往的解决方案应对新挑战;
- 它可以消除多次查询迭代来提升效率;
- 它可以动态更新模板库,确保在遇到新任务时不断学习和进化。
BoT 的组成
BoT 主要包含两个部分:
元缓冲区(Meta-buffer)和缓冲区管理器(Buffer manager)
元缓冲区
元缓冲区是一个模板库,里面存储着各种思维模板,这些模板都是从 LLM 以往处理过的任务中提炼出来的,用于解决复杂问题。
缓冲区管理器
缓冲区管理器是 BoT 中的动态组织者,其作用包括:
- 在解决任务之后,用新的思维模板更新元缓冲区;
- 选择最相关的思维模板来解决新问题,并根据解决效果优化现有模板。
BoT 的工作机制
通用的思维增强(Thought-Augmented)推理过程从
问题蒸馏
元缓冲区
实例化过程
缓冲区管理器
也就是说,BoT 的工作机制包含以下 4 个部分:
问题蒸馏器
元缓冲区与检索
实例化
缓冲区管理器
下面详细讲解这四个部分。
问题蒸馏器(Problem Distiller)
问题蒸馏器相当于对输入任务的预处理,有两个主要目的:
- 提取问题的关键信息;
- 简化复杂任务,以便更好地搜索和检索思维模板。
它辅助 LLM 识别并提取问题中的重要信息和约束条件,这个过程可以通过一个元提示语(Mega Prompt)来完成。元提示语是高度概括的提示语,引导 LLM 处理复杂任务,相当于为模型提供全面的操作指南,确保任务得到系统化处理。下面是一段元提示语示例:
[问题蒸馏器]:
作为一名在信息蒸馏领域非常专业且智能的专家,你擅长从用户输入的查询中提取解决问题所需的关键信息,并能够根据问题的类型将这些信息转换为合适的格式。请将用户输入查询中解决问题所需的关键信息分类提取,蒸馏后的信息应包括以下内容:
1. 关键信息:
从用户输入中提取的关键变量的数值和信息,这些信息将被交给相关领域的专家进行任务解决,确保提供解决问题所需的所有必要信息。
2. 限制条件:
问题的目标以及相应的约束条件。
3. 蒸馏任务:
基于 1 和 2 扩展问题,总结一个可以应对用户查询的元问题,并处理更多的输入和输出变化。结合扩展问题的实际场景,以及从原始问题中得出的关键变量类型和信息约束,限制扩展问题中的关键变量。之后,使用用户查询输入的关键信息作为示例输入来解决该问题。
元缓冲区与检索
元缓冲区是思维模板库,LLM 可以借用过去解决问题的思路来应对新问题。当任务在蒸馏器中处理完毕后,BoT 会遍历思维模板库,选取与任务最相似的模板。这一过程通过计算任务与思维模板之间的嵌入相似度来完成。
实例化
实例化是将通用思维模板调整为适应具体问题的过程。分为两种情况:如果任务与某个思维模板相似,则使用实例化提示语来实例化该模板,并结合蒸馏信息处理;如果任务是全新的,BoT 会使用一个通用的思维模板,随后缓冲区管理器进行观察和学习,可能创建更具体的模板并保存到元缓冲区中。这样,模板库不断进化,更好地应对未来类似问题。
下面是一段实例化提示语示例:
用户:[问题描述] + [解决步骤或代码]
为了提取并总结解决此类问题的高级范式和通用方法,请在回复中遵循以下步骤:
1. 核心任务总结:
识别并描述问题的基本类型和核心挑战,例如,将其分类为数学问题(如求解二次方程)、数据结构问题(如数组排序)、算法问题(如搜索算法)等。分析解决此问题的最有效方法。
2. 解决步骤描述:
概述通用的解决步骤,包括如何定义问题、确定变量、列出关键方程或约束条件、选择合适的解决策略和方法,以及如何验证结果的正确性。
3. 通用解答模板:
基于上述分析,提出一个可以广泛应用于此类问题的模板或方法,包括可能的变量、函数、类定义等。如果是编程问题,提供一组基础类和接口,可用于构建具体问题的解决方案。
请确保你的回复高度简洁且结构清晰,以便将特定解决方案转化为可推广的方法。
【可选】以下是一些思维模板的示例:(根据核心任务总结的分析,选择跨任务或任务内的示例。)
具体的实例化提示语可以在原论文中找到。
缓冲区管理器
缓冲区管理器是维护和优化元缓冲区的关键角色。它基于解决任务时获得的新见解和效果来更新思维模板。每当解决了一个全新或显著不同的问题时,管理器会评估是否需要创建新的思维模板,确保模板库始终精准有效且不冗余。它检查元缓冲区是否已具备相关知识:如果有,直接调用;如果没有,则考虑创建新模板来应对新问题。
BoT vs. 单次查询 vs. 多次查询
本章节结果来自于上文提到的论文《Buffer of Thoughts: Thought-Augmented Reasoning with Large Language Models》。
相比其他提示语框架,BoT 优势何在?论文作者在各种数据集上进行了评估,涉及数据理解、Python 编程题、多语言小学数学(MGSM)等任务。结果显示,BoT 在几乎所有任务上都表现显著优势。关键之一是效率——与多次查询提示方法相比,BoT 平均只需要
12%
BoT 与 Llama 3 8B 模型的结合甚至有潜力超越单一的 Llama 3 70B 模型。也就是说,在使用较少计算资源的情况下,BoT 仍能提供非常强大的性能。
总结
BoT 是一种新颖且有前景的提示语框架,它将推理问题分解为基本限制和关键信息,基于已有解决方案和模板构建任务,改善了其他提示语技术的不足。不过,目前 BoT 还缺少完整的实际应用,需要期待它在未来有更多发展。如果想要直接尝试,可以使用论文作者提供的开源代码。
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名