Tree of Thoughts(ToT):让大模型能动地解决问题


作者 | 酯基 

整理 | NewBeeNLP

后台留言交流』,加入 NewBee算法讨论组

大型语言模型已经在多种任务中大显身手,甚至在数学、逻辑推理等任务上都表现出色。但是由于自回归模型从左到右的输出模式,使得模型只能进行token级别的单向决策。而人类在进行复杂问题的决策时,往往会采用树状的思维方式进行规划。

基于这两点,作者设计了一种简单的 思维树(Tree of Thought, ToT) ,使用LLM模拟人类的决策过程,以解决复杂问题。

  • source:Tree of Thoughts: Deliberate Problem Solving with Large Language Models[1]

现有的LM问题解决方式可以分为一下几种:

  • Input-output (IO) prompting :将问题转化为输入/输出形式的prompt,如指令/few-shot示例,表示为
  • Chain-of-thought (CoT) prompting :引入思维链 ,表示为 ,输出表示为
  • Self-consistency with CoT (CoT-SC) :在CoT方法上的提升,通过CoT产生 个样本,选取其中出现频率最高的。

作者提出现有LM推理过程中解决问题的 两个短板

  • 不会探索不同的可能选择分支
  • 无法在节点进行前后向的探索

思维树(ToT, Tree of Thoughts)

ToT将问题建模为树状 搜索过程,其中每个节点为状态 。ToT包括四个步骤:问题分解、想法生成,状态评价以及搜索算法的选择。

1. 问题分解(Thought decomposition)

ToT的第一步首先在于将复杂问题拆解成为小问题。由于ToT方法要求模型在每一节点产生多种方案,因此对于问题拆解的要求较高,拆解后的问题不宜过大也不宜过小。

2. 想法生成器(Thought generator)

给定一个树节点 ,有两种生成k个方案的方法:

  • CoT prompt根据每个状态s生成 ,这种方式适用于方案空间丰富的场景(如写作)。
  • 使用propose prompt,,这种方式适用于方案有限的场景(如实验中的24点)。

3. 状态评价器(State evaluator)

利用LM对现有状态进行评估。与想法生成器相似,作者提出两种评估方式:

  • 对每个状态,让LM给出数值或分级的评价(好/中/差)
  • 让LM在不同的状态间进行投票式选择,投票多次后选择得票率最高的选项。

4. 搜索算法

针对树形结构,进行广度优先(Breadth-first search, BFS)与深度优先(Depth-first search, DFS)两种搜索算法,如下图所示:

其中,广度优先算法每一步保留b个最优结果,而深度优先算法每步先探索最优路径至得出答案或评价器认为无解。

实验

作者在三种需要计划和搜索的任务上分别进行了实验:二十四点、创造性写作与填词游戏。基础模型均使用GPT-4的对话补全模式。

24点任务设置模型在24点任务上的表现

IO、CoT等baseline方法在24点任务中仅能够取得不到10%的准确率,而ToT策略则将准确率提升到了74%.

在创新性写作任务上,ToT方法能够生成具有更好的连贯性的文章,并且更加符合人类偏好。

创新性写作任务示例ToT在创新性写作与填词游戏任务中的表现

总结

本文中,作者提出了一种方法,利用LM对复杂任务进行建模,使模型能够能动地进行规划和决策,大大提升了语言模型再复杂推理任务上的表现。作者认为这将是未来发展非常有潜力的方向。


一起交流

想和你一起学习进步!『NewBeeNLP』目前已经建立了多个不同方向交流群(机器学习 / 深度学习 / 自然语言处理 / 搜索推荐 / 图网络 / 面试交流 / 等),名额有限,赶紧添加下方微信加入一起讨论交流吧!(注意一定o要备注信息才能通过)



本文参考资料

[1]

Tree of Thoughts: Deliberate Problem Solving with Large Language Models: https://arxiv.org/abs/2305.10601


相关推荐

  • 终于发表了第一篇 CCF A 类顶会!
  • 实现订单 30 分钟未支付则自动取消,我有五种方案!
  • Object o = new Object() 占用多少字节?
  • 美团一面:为什么 MySQL 不建议使用 NULL 作为列默认值?5 分钟彻底搞懂!
  • 语雀停服八小时,P0级事故!故障原因和补偿来了!!
  • 协同发展,生态聚合丨1024程序员节暨「源聚一堂」开源技术沙龙(北京站)成功举办
  • 周鸿祎称程序员节是唯一不能放假的节日;苹果官宣十月 Mac 发布会:来势凶猛;Firefox 119 发布|极客头条
  • 用了这些IDEA插件以后,我写代码快了10倍!
  • 浅谈多人游戏原理和简单实现
  • 【深度学习】激光雷达分割与测距SOTA算法!已开源!
  • 【深度学习】NIPS 2022 表格数据还需要深度学习吗?
  • 【学术相关】教育部:研究生,可以换导师!
  • 文末福利|即将开始!3分钟带你揭晓稀土掘金创新论坛四大亮点,一起探讨AI时代下的管理变革
  • Nodejs 已发布 21.1.0 版本
  • 一文搞懂“支付·清结算·账务”全局
  • 导入个Excel页面直接卡死,看我如何处理T0生产事故~
  • 一篇文章让你搞懂到底什么是 CDN
  • select...for update 锁表了?
  • 建议前端开发者学习下色彩心理学,提升用户体验
  • 开发过程中,建议使用 VSCode 的 Thunder Client 插件替代 Postman, 让你显得更专业