Tree of Thoughts: 大语言模型推理问题解决框架

论文概览

这篇论文提出了一个革命性的框架——Tree of Thoughts (ToT),彻底颠覆了传统大语言模型的推理方式。作者指出,当前LLM的token级从左到右决策机制存在根本性缺陷,无法处理需要探索、战略前瞻或初始决策起关键作用的任务。

核心实现:从"系统1"到"系统2"的跨越

理论基础:认知科学的AI应用

论文巧妙地将人类认知的"双系统"理论引入AI领域,这是一个革命性的认知架构设计

  • 系统1:快速、自动、无意识的关联式思维(对应LLM的token级决策)
  • 系统2:缓慢、深思熟虑、有意识的规划式思维(对应ToT框架)

这种设计理念的核心洞察在于:传统LLM的从左到右token级决策机制本质上是一种"系统1"思维,虽然能够快速生成连贯文本,但在需要探索、战略前瞻或初始决策起关键作用的任务上存在根本性缺陷。

技术架构:模块化设计哲学

flowchart TD
    A[问题输入] --> B[思维分解]
    B --> C[候选思维生成]
    C --> D[状态评估]
    D --> E[搜索算法选择]
    E --> F[最优路径探索]
    F --> G[最终输出]
    
    B --> B1[Game of 24: 3步方程]
    B --> B2[创意写作: 1步计划]
    B --> B3[填字游戏: 5-10步单词]
    
    C --> C1[独立采样策略]
    C --> C2[顺序提议策略]
    
    D --> D1[独立状态评估]
    D --> D2[跨状态投票]
    
    E --> E1[广度优先搜索BFS]
    E --> E2[深度优先搜索DFS]
    
    subgraph "系统1到系统2的转换"
        H[快速生成 --> 深思熟虑评估]
        I[直觉决策 --> 战略规划]
        J[单一路径 --> 多路径探索]
    end

四大核心组件的深度技术实现

1. 思维分解 (Thought Decomposition):问题空间的结构化映射

核心思想:将问题解决过程分解为语义连贯的中间步骤,这是ToT框架的基础性创新

实现策略

  • 粒度控制:根据问题特性设计不同粒度的思维单元
  • 语义连贯性:确保每个思维单元都有明确的语义边界
  • 可评估性:每个思维单元都能独立评估其解决前景

技术实现细节

# 基于tot.methods.bfs.solve()的实现
def solve(args, task, idx):
    # 思维分解通过迭代生成实现
    for step in range(max_steps):
        # 生成候选思维
        thoughts = generate_thoughts(current_states)
        # 评估思维质量
        evaluations = evaluate_states(thoughts)
        # 选择最有前景的思维
        selected_states = select_best_states(evaluations)

关键洞察:思维单元要"足够小"以便生成多样化样本,又要"足够大"以便评估解决前景。这种粒度平衡是ToT成功的关键因素。

2. 思维生成器 (Thought Generator):多样性与连贯性的平衡

独立采样策略

  • 适用场景:思维空间丰富的任务(如创意写作)
  • 技术特点:生成独立的、不相互依赖的思维样本
  • 实现机制:通过--method_generate=sample参数控制

顺序提议策略

  • 适用场景:思维空间受限的任务(如Game of 24)
  • 技术特点:生成顺序的、相互依赖的思维步骤
  • 实现机制:通过--method_generate=propose参数控制

技术优势

  • 避免重复:通过多样化的生成策略减少思维冗余
  • 提高探索效率:针对不同任务特性选择最优生成策略
  • 可控性:通过--n_generate_sample参数精确控制生成数量

深度实现分析

# 基于tot.tasks.crosswords的实现示例
def propose_prompt_wrap(self, x, y):
    # 获取当前环境状态
    current_state = self.env.render()
    # 构建生成提示
    prompt = f"Current state: {current_state}\nGenerate next thoughts..."
    return prompt

def propose_outputs_unwrap(self, x, y, outputs):
    # 解析LLM输出,提取候选思维
    candidates = []
    for output in outputs:
        # 解析置信度评分
        confidence = parse_confidence(output)
        candidates.append((output, confidence))
    return candidates
3. 状态评估器 (State Evaluator):LLM自评估的突破性创新

独立评估机制

  • 技术原理:对每个状态进行独立价值评估
  • 实现方式:通过--method_evaluate=value参数启用
  • 评估标准:基于状态与目标的相关性和解决前景

跨状态投票机制

  • 技术原理:通过比较不同状态选择最有前景的选项
  • 实现方式:通过--method_evaluate=vote参数启用
  • 投票策略:相对评估而非绝对评分

创新突破:首次使用LLM自身进行启发式评估,而非传统的手工规则或学习模型。这种自评估机制是ToT框架的核心创新之一。

技术实现深度分析

# 基于tot.tasks.crosswords的评估实现
def evaluate(self, x, y):
    # 构建评估提示
    prompt = self.value_prompt.format(
        current_state=self.env.render(),
        target_goal=self.get_goal()
    )
    
    # 调用LLM进行评估
    response = gpt(prompt, model=self.model)
    
    # 解析评估结果
    sure_count = count_sure_states(response)
    maybe_count = count_maybe_states(response)
    impossible_count = count_impossible_states(response)
    
    # 计算综合评分
    score = calculate_composite_score(sure_count, maybe_count, impossible_count)
    return score
4. 搜索算法 (Search Algorithm):经典算法与AI推理的融合

广度优先搜索(BFS)

  • 适用场景:浅层树结构,需要探索多个并行路径
  • 技术特点:每步保留最promising的b个候选
  • 实现参数:通过--n_select_sample控制beam width
  • 优势:支持前瞻和回溯,实现全局最优决策

深度优先搜索(DFS)

  • 适用场景:深层树结构,需要深入探索特定路径
  • 技术特点:支持回溯和剪枝
  • 实现机制:主要用于Crosswords任务
  • 优势:内存效率高,适合约束满足问题

算法融合创新

# BFS搜索的核心实现逻辑
def bfs_search(args, task, initial_state):
    current_states = [initial_state]
    
    for step in range(max_steps):
        # 生成候选思维
        all_thoughts = []
        for state in current_states:
            thoughts = generate_thoughts(state, args.n_generate_sample)
            all_thoughts.extend(thoughts)
        
        # 评估所有思维
        evaluations = evaluate_states(all_thoughts, args.n_evaluate_sample)
        
        # 选择最优状态
        if args.method_select == 'greedy':
            selected_states = select_top_k(evaluations, args.n_select_sample)
        else:  # sample
            selected_states = sample_by_score(evaluations, args.n_select_sample)
        
        # 检查是否找到解决方案
        for state in selected_states:
            if is_solution(state):
                return state
        
        current_states = selected_states
    
    return None

系统1到系统2转换的技术机制

转换流程设计

"系统1: 快速生成" "ToT框架" "系统2: 深思熟虑" "LLM API" 初始问题输入 快速生成多个候选思维 返回候选思维集合 启动深思熟虑模式 评估每个思维的价值 返回评估结果 选择最有前景的思维 继续深入探索 基于选定思维生成下一层 返回新的候选思维 重新评估所有状态 返回更新后的评估 更新搜索树 loop [直到找到解决方案] 返回最终解决方案 "系统1: 快速生成" "ToT框架" "系统2: 深思熟虑" "LLM API"

关键技术特点

  1. 渐进式转换:从快速生成到深思熟虑的平滑过渡
  2. 反馈循环:每次评估结果都指导下一轮生成
  3. 动态调整:根据任务特性自动选择最优策略
  4. 资源优化:在探索广度和计算成本之间找到平衡

架构设计的工程优势

模块化设计

  • 基础LM:可替换不同的语言模型后端
  • 思维分解:支持不同粒度的任务分解
  • 生成策略:可配置的思维生成方法
  • 评估机制:灵活的状态评估策略
  • 搜索算法:可扩展的搜索框架

适应性框架

  • 任务无关性:支持各种类型的推理任务
  • 模型无关性:可与不同的LLM集成
  • 资源可配置:根据计算资源调整搜索参数

零训练要求

  • 即插即用:仅需预训练LM,无需额外训练
  • 快速部署:新任务可在几分钟内配置完成
  • 成本效益:避免了昂贵的模型微调过程

技术实现的创新价值

认知科学融合

  • 理论指导:基于人类认知的双系统理论
  • 实践验证:在多个任务上验证了理论的有效性
  • 跨学科突破:将认知科学理论成功应用于AI系统

搜索范式革新

  • 传统算法现代化:将经典搜索算法与LLM语义理解能力结合
  • 启发式优化:使用LLM自身作为启发式函数
  • 动态调整:根据任务特性自动选择最优搜索策略

自评估机制

  • 突破性创新:首次使用LLM自身进行启发式评估
  • 质量保证:避免了手工规则的主观性和局限性
  • 可扩展性:评估能力随LLM能力提升而提升

这种从"系统1"到"系统2"的技术跨越,不仅解决了当前LLM在复杂推理任务上的根本性缺陷,更为未来AI系统的发展指明了方向:真正的智能不仅需要强大的关联能力,更需要深思熟虑的规划能力

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐