微信扫码
与创始人交个朋友
我要投稿
我们可能已经发现,很多LLM应用在运行一段时间之后都会面临精度不高、效率低下等难题。近日,来自北京大学、UC Berkeley等机构的研究者提出了一种新颖而通用的"思想增强型推理(Thought-Augmented Reasoning)"方法——Buffer of Thoughts(BoT)缓冲区思维,希望能够进一步提升LLMs在复杂推理任务上的表现。
图片来自xiumaodalle
BoT的核心思想借鉴了人类解决问题的思维过程。当我们人类去解决一个新问题时,往往会先回想之前解决过的类似问题,提取其中的解题思路和方法论,然后运用到新问题中去。这和我前段时间介绍过的ICLR2024重磅 | DeepMind和斯坦福大学的类比推理Prompt,让LLM自主为你处理复杂问题很类似。BoT就是希望赋予LLMs这样一种"经验式推理"的能力。另一个名为SELF-DISCOVER的框架也展示了应用检索增强生成(Retrieval-Augmented Generation, RAG)原则以有效和可推广的方式提高LLMs推理的性能。BoT和SELF-DISCOVER都利用了RAG的关键方面,即可重用知识组件的存储,基于相关性的检索以及它们的动态组合,来增强AI推理能力。SELF-DISCOVER可以移步Claude预测:中国作为负责任的大国,一旦伊以冲突升级,除了发挥外交影响力,还要做好战略预判包括动员战略预备力量,用到SELECT-ADAPT-IMPLEMENT这个方法。
BoT的核心原理
思想缓冲区的核心在于元缓冲区(Meta-Buffer)的设计。元缓冲区是一个轻量级的库,包含一系列通用的高级思维(Thought-Template),这些模板是从不同问题解决过程中提取并精炼出来的。与传统方法不同,BoT的思想模板可以在解决不同问题时自适应地实例化,从而增强LLMs的精度和灵活性。
在Step-1中,Translator模块将输入的自然语言前提(Premises)和问题(Question)转化为符号化表示(Symbolic Premises)。这一阶段将自然语言上下文翻译成符号格式。SymbCoT摒弃了完全依赖
与传统的单查询推理(Single-Query)和多查询推理(Multi-Query)不同,BoT引入了一个新的关键组件——Meta Buffer,它是一个存储高层次思想模板(Thought-Template)的轻量级库。
具体来说,整个推理过程可以分为以下四个步骤:
问题提炼(Problem Distillation):首先,BoT会使用一个问题蒸馏器(Problem Distiller)从输入问题中提取关键信息,并将其转化为一种标准化的形式,以便后续处理。
思想模板检索(Thought Retrieval):然后,BoT会根据提炼后的问题,从Meta Buffer中检索出最相关的思想模板。这个过程可以看作是一种基于相似度的匹配。
思想模板实例化(Instantiated Reasoning):接下来,BoT会根据具体问题,对检索到的思想模板进行实例化,生成一个完整的推理过程。这个过程可以看作是在通用思想模板的基础上,填充问题特定的信息。
推理执行(Reasoning Execution):最后,BoT会执行实例化后的推理过程,得到最终的问题解答。
与此同时,BoT还引入了一个缓冲区管理器(Buffer Manager),用于动态地更新Meta Buffer。具体来说,每当BoT解决一个新问题后,缓冲区管理器就会对整个问题解决过程进行总结提炼,将新的思想模板添加到Meta Buffer中,使其经验不断丰富。
这种"思想增强型推理"的过程,可以看作是人类解决问题的一种模拟。我们在面对一个新问题时,往往会先回想以前解决过的类似问题,提取其中的解题思路和方法(即BoT中的思想模板),然后再根据具体问题进行调整和应用。这种推理方式,不仅可以提高推理的效率和准确性,还可以在不同问题之间建立联系,实现知识的迁移和复用。应该在此处Mark一下,这可能是以后很多应用的一个基础。
相比于传统的推理方法,BoT的优势主要体现在以下几个方面:
高效性:通过从Meta Buffer中检索相关思想模板,BoT可以避免每次遇到新问题都要从头构建推理过程,大大提高了推理效率。
准确性:通过实例化通用思想模板,并结合问题特定信息,BoT可以生成更加准确和可靠的推理结果。
可扩展性:通过缓冲区管理器动态更新Meta Buffer,BoT可以不断学习和积累新的推理知识,实现持续的自我完善。
通用性:BoT提出的"思想增强型推理"是一种通用的范式,可以应用于各种类型的推理任务,具有很强的适用性。
研究者将思想模板分为六类:文本理解、创造性语言生成、常识推理、数学推理、代码编程和应用调度。这样的分类有助于模板检索,找到最适合解决不同问题的解决方案。
对于每个任务,BoT通过计算问题描述与提取信息之间的嵌入相似性,来检索与提取问题高度相似的思想模板。检索过程可以表示为:
其中,N是元缓冲区的大小,f(·)是一个常规文本嵌入模型,Tj表示检索到的思想模板。研究者设置了一个阈值δ(推荐值为0.5∼0.7),用于确定当前任务是否为新任务。如果是新任务,BoT会使用预定义的通用思想模板进行推理。
在模板蒸馏之后,BoT需要考虑是否将蒸馏出的模板更新到元缓冲区。如果初始化一个空的元缓冲区或遇到一个没有合适思想模板的问题,新的思想模板将直接存储在元缓冲区中。如果用检索到的思想模板解决问题,可能会在实例化过程中产生新的见解。为了避免元缓冲区的冗余,同时保持新生成的有价值的思想,BoT会计算新模板描述DTnew和已有模板描述{DTi}的嵌入向量之间的相似性,并根据以下规则更新元缓冲区:
否则,这意味着元缓冲区已经具备解决此任务的必要知识,不需要进行更新。这种动态更新策略有效地减少了模板检索的计算负担,同时保证了元缓冲区的轻量特性。
问题蒸馏器(Problem Distiller)
大多数复杂任务包含隐含约束、复杂的对象关系以及其上下文中的错综变量和参数。因此,在推理阶段,LLMs需要克服提取关键信息、识别潜在约束和执行准确推理的三大挑战。这些挑战会给单个LLM带来显著负担。BoT通过在推理过程前添加一个问题蒸馏器(Problem Distiller),将任务信息的提取和理解阶段与最终推理阶段分离开来。
问题蒸馏器可以从输入任务中提取关键元素,包括:
问题求解的基本参数和变量;
输入任务的目标及相应约束。
然后,BoT会将这些提炼后的信息重新组织成清晰易懂的格式,用于后续的推理阶段。此外,问题蒸馏器还可以将具体问题转化为高级概念和结构。这个转化过程将复杂的现实问题分解为更简单的多步计算,使后续匹配高级思想模板更加容易。
此外,为了进一步提高BoT的可扩展性和稳定性,研究者还设计了一个缓冲区管理器(Buffer-Manager),用于动态更新元缓冲区。具体来说,每当LLMs解决一个新问题后,缓冲区管理器就会对整个问题解决过程进行总结提炼,将新的思想模板添加到元缓冲区中。随着LLMs解决的问题越来越多,元缓冲区的"经验"也会越来越丰富,推理能力也将不断提升。
实验结果
BoT的实验结果令人振奋。研究者在10个具有挑战性的推理任务上测试了BoT,结果显示BoT相比现有的SOTA方法,平均有11%~51%的精度提升,而计算开销只有传统方法的12%。这意味着,BoT不仅能大幅提高LLMs的推理能力,还能显著降低计算成本。
更令人兴奋的是,BoT展现出了很强的小模型赋能能力。实验表明,使用BoT的Llama-8B模型有可能超过单独的Llama-70B模型。这意味着,我们未来可以用更小的模型、更低的算力,实现甚至超越大模型的推理效果,极大拓展了中小企业和个人开发者的想象空间。
我们还应该了解一下BoT在不同任务上思想模板的分布以及推理过程各部分的平均时间开销。
在上面左图中,我们可以看到BoT在MGSM、Python Puzzles、Sonnet Writing等任务上生成了较多的思想模板,而在Checkmate-in-One和Penguins等任务上生成的模板较少。这表明BoT能够根据不同任务的特点和复杂度,自适应地提取和积累相应的推理策略。对于场景更加多样的MGSM任务,BoT倾向于生成更多的思想模板以覆盖不同的问题类型;而对于Checkmate-in-One和Penguins这种相对单一的任务,BoT则倾向于提炼出更加精简和针对性的模板。
右图则展示了BoT推理过程中每个部分的平均时间开销。可以看到,实例化推理(reasoner)的时间占比最大,而问题提炼(problem-distiller)和模板检索(meta-buffer)的时间相对较短。这个时间分布反映了BoT各个组件的计算复杂度:问题提炼主要是提取关键信息,模板检索是基于相似度匹配,而实例化推理需要根据具体问题动态生成推理路径,因此计算量最大。BoT的时间开销分布比较均衡,体现了其推理流程的效率。
用BoT能做什么
BoT所倡导的思想模板库的理念,在很多现实领域都有广阔的应用前景。结合我对BoT算法的理解,我认为以下几个领域最有可能率先受益于这一新颖的范式:
1. 教育领域的智能辅导系统
传统的教育模式往往是"一刀切"式的,无法针对每个学生的特点提供个性化的指导。而借助BoT的思想,我们可以开发出一套智能的教育辅导系统。系统预先构建一个"解题Prompt模板库",涵盖各个学科的常见问题类型。当学生提出一个新问题时,系统可以自动检索匹配最相关的解题模板,并根据学生的具体问题生成个性化的解题引导。这种"因材施教"式的辅导,可以大大提高学生的学习效率和兴趣。
2. 医疗领域的智能诊断系统
医学诊断通常需要医生具备丰富的临床经验和专业知识。而借助BoT的思想,我们可以开发一套智能诊断系统,预先录入各种常见疾病的诊断思路模板。医生在面对一个新的病例时,系统可以自动推荐相关的诊断思路,协助医生进行分析判断。这种人机协同的诊断方式,不仅能提高诊断效率,还能减少误诊风险,让患者获得更及时准确的治疗。
3. 法律领域的智能案例分析工具
法律工作者往往需要处理大量案例,找出其中的关键信息和规律。利用BoT的理念,我们可以开发一个智能案例分析工具,预先提炼各类案件的分析思路模板。用户在录入一个新案例时,系统可以自动匹配相似案例的分析模板,协助用户快速厘清案情,抓住关键争议点。这不仅能提高法律工作者的工作效率,还能帮助他们从海量案例中总结出更多有价值的经验教训。
4. 创意领域的智能灵感助手
创意工作往往需要大量的灵感和思路。利用BoT的思想,我们可以开发一个智能创意助手,预先收集各个领域的创意思维模板。用户在面临一个创意任务时,系统可以推荐相关的思维模板,帮助用户快速展开头脑风暴,激发更多创意火花。比如在广告创意领域,系统可以根据产品特点,自动匹配相应的文案、视觉表现手法等创意模板,为创意人提供更多灵感。这将极大刺激创意产业的发展。
随着算法的不断成熟和完善,我相信会有越来越多的领域可以引入BoT的理念,让人工智能真正融入到各行各业的业务场景中去,创造出更多令人惊喜的价值。
下面我将用一个创意领域灵感助手的三张图来简单介绍BoT蒸馏Prompt的运行结果,前两张图是Prompt直接给到GPT 4o,第三张图是我用DSPy的dspy.ProgramOfThought来定义创意生成器复现BoT方法跑出的结果,模型是国内的DeepSeek。
有这么一个广告创意问题:
task = "为一款新的运动鞋设计一则广告,目标受众是20-30岁的城市白领,预算在50万以内,要突出鞋子的时尚和舒适性。"
template_library = [
"先写一个引人注目的标题,再围绕产品特点列举三个卖点,最后以一个有趣的结尾收束。",
"以一个贴近目标受众生活的小故事开头,通过故事情节自然引出产品及其优势,结尾点明品牌slogan。",
"从当下热点话题切入,引出产品与热点的关联,进而介绍产品卖点,以一句富有创意的品牌宣言结尾。",
# ...
]
下图是用文章中的Prompt蒸馏方法得到的
下图是我根据论文的方法结合蒸馏prompt的方法以及BoT主要思想得到
##定义创意生成器
class IdeaGenerator(dspy.ProgramOfThought):
def __init__(self):
super().__init__(signature=GenerateIdeaSignature)
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-05-28
2024-08-13
2024-04-26
2024-08-21
2024-07-09
2024-06-13
2024-08-04
2024-04-11
2024-07-18
2024-07-01