利用大语言模型开发先进的推理与规划算法 [译]

利用大语言模型开发先进的推理与规划算法 [译]

💡 原文中文,约3800字,阅读约需9分钟。
📝

内容提要

开源工具Branches用于原型化大语言模型的树状推理与规划算法。针对LLM逐行生成代码易出错、错误传播的问题,采用思维树方法:模型尝试多条解决路径,由Python解释器提供错误追踪反馈,模型反思并修正代码,从而提升HumanEval代码生成成功率。未来方向包括KV缓存加速、扩展记忆和引入人类反馈。

🔎

延伸解读

树状推理如何减少代码错误传播

文章指出,大语言模型逐行生成代码时,一旦某行出错,后续生成很可能被影响,形成“幻觉列车”。树状方法(思维树)让模型尝试多条解决路径,并在错误点展开新探索,而不是重新生成整个答案链。结合Python解释器的错误追踪反馈,模型能反思并修正代码,从而提升HumanEval的成功率。这比传统思维链更有效,因为后者仍受错误传播困扰。

Branches工具的实际用途与局限

Branches是开源工具,用于原型化和可视化大语言模型的树状推理与规划算法,已展示在HumanEval代码生成和24点游戏中的应用。它兼容基于图的推理算法,并允许模型对中间步骤打分、根据反馈优化搜索边界。但文章也提到,当前主流LLM服务商尚未广泛支持跨提示的KV缓存,推理速度提升仍需工程调整;同时,扩展记忆和人类反馈仍是未来方向,尚未在工具中完全实现。

与OpenAI代码解释器的关键差异

文章强调,Branches的演示与OpenAI的代码解释器不同:后者目前不能处理详细的错误反馈,只能知道代码运行失败,而Branches能利用Python解释器提供的完整错误追踪信息,让模型反思具体错误并修正。这种融入现实世界反馈的方式大幅提升了成功率。不过,文章也指出,即使借助outlines工具包确保代码可编译,也不代表代码一定无误,仍需仔细监督。

❓

Q&A

Branches 是什么工具?它主要用来做什么?

Branches 是 Normal Computing 开发的开源工具,用于构建和展示先进的大语言模型(LLM)推理和规划算法的原型。它既可以作为原型开发工具,也可以作为网络应用程序,设计上能与基于图的常用推理算法兼容,帮助用户直观展示和探索 LLM 的规划与推理过程。

为什么大语言模型在代码生成任务上容易出错?

大语言模型逐行生成代码,一旦某行出现错误,后续代码生成很可能被影响,导致错误传播。此外,代码生成涉及多元的规范、约束和测试,规范冲突或模糊会增加难度,而模型本身的概率特性也可能让代码出错,即使像 GPT-4 这样的强大系统也常遇到困难。

树状推理(Tree of Thoughts)如何提升代码生成的成功率?

树状推理让模型尝试多条解决路径,而不是只生成一条链。当代码出错时,外部的 Python 解释器提供详细的错误追踪反馈,模型反思错误并修正代码,从错误点继续探索,而不是重新生成整个答案。这种结合现实反馈的方式大幅提升了在 HumanEval 上的成功率。

Branches 在 HumanEval 基准测试中是如何工作的?

Branches 采用思维树(ToT)模式解决 HumanEval 的编程问题。模型尝试多个解决方案并进行测试,如果代码未通过测试或无效,Python 解释器会提供完整的错误追踪信息。模型对这些信息进行反思,总结错误并找到改进方向,从而生成修正后的代码。

与 OpenAI 的代码解释器相比,Branches 的反馈机制有什么不同?

Branches 的反馈机制能提供详细的错误追踪信息,包括完整的错误回溯,模型可以据此反思和修正代码。而 OpenAI 的代码解释器目前不能处理详细的反馈,只能知道代码没有成功运行,无法获得具体的错误信息。

未来有哪些方向可以改进树状推理方法?

文章提到三个方向:1)快速推理:利用键值(KV)缓存技术加速推理,因为提示头部在各节点间固定不变;2)扩展记忆:使用记忆型变换器(如 Extended Mind Transformers)突破上下文限制,提升搜索效率;3)人类反馈:引入人类反馈,让定制化的质性目标指引探索过程,并更好地融合到图形搜索算法和可视化中。

🏷️

标签

➡️

继续阅读