目前大语言模型在日常交流对话中,展现出强大的能力,但是如果遇到一些复杂提问,如解决24点游戏问题等需要具备逻辑思维较为密集的场景,往往LLMs 表现能力不佳,那么今天就介绍一下LLMs 中解决这类思维较为密集问题的技术CoT,ToT 技术。作者翻看全网对ToT 技术的讲解,发现没有一篇将所有涉及到的重点讲清楚,现在我将深入对ToT 思想论文《Tree of Thoughts: Deliberate Problem Solving with Large Language Models》进行深入讲解。希望大家喜欢。
注意:前面文章较多的介绍了模型架构,Transformer, MoE 等技术,这些技术专注于LLMs 的模型架构设计,训练等,今天要讲解的CoT 和ToT 是在确定的模型架构训练好之后,对于某些逻辑密集型问题生成(generate)策略优化寻找最优解的技术,属于LLMs 的生成方案搜索下游的技术方案。
其实无论是CoT、ToT 都是prompt 技术,在解决复杂逻辑问题的应用,具体结合LLMs 的生成又是怎么的呢?
CoT、ToT 原理图
CoT 在LLMs 生成上就是一个线性的,将需要解决的问题,按照先后步骤进行分解,然后直到问题解决,CoT-SC 在CoT 基础上做出了一些改进,在要解决问题之前,规划出多种方案,然后在每种方案上,以投票的方式给出最佳的最终输出。
ToT 则是以树的方式逐步使用LLMs 进行生成,什么样的问题需要在LLMs 上添加ToT 的解决方案,借用原论文的一句话:A genuine problem-solving process involves the repeated use of available information to initiate exploration, which discloses, in turn, more information until a way to attain the solution is finally discovered.—— Newell et al. 翻译过来就是一个富有挑战性的问题的解决过程,需要反复利用已有信息,进行探索,进而发掘更多有用信息,直到最终发现问题解决方案。这种反复利用探索,其实就是人类以非线性的树结构解决问题的方案,具体ToT 方案怎么实施的呢?具体分为4个步骤:
1.Thought decomposition 即将问题进行相关步骤分解
Thought decomposition
2.Thought generator 思维生成
生成器
给定状态s,生成 k 个候选结果,具体有两种生成形式,一个是思维采样sample,另外一种的propose prompt 方式
Thought generator
3.State evaluator 状态评价器
对于中间生成的不同状态点,状态评估器评估它们解决问题的进展,以及问题解决的方向,类似启发式搜索算法确定哪些状态需要继续探索以及以何种顺序进行探索。尽管启发式方法是解决搜索问题的标准方法之一,但它们通常是编程实现或者类似AlphaGo MTCS 通过学习方式实现的,在这里我们提出第三种方法,即利用语言模型思考状态的合理性;如果适用的话,这种有意识的启发式方法可以比编程规则更灵活,并且比学习模型更节省样本。类似于思维生成器,我们考虑两种策略来独立使用或同时使用评估这些状态。讲解到这里,希望大家明白一个很重要的事实,就是ToT 中状态评估器,其实是通过prompt 方式,挖掘LLM 能力,评价状态的结果也是生成的。
状态评估方式
4.Search algorithm
论文给出了广度优先遍历和深度优先遍历算法:
广度和深度优先搜索算法
具体伪代码如下:
ToT 搜索算法
广度优先算法中具体涉及到G(), 就是LLM 大语言模型的generator,然后还有一个statesevaluator ,也是基于LLM G() 生成的; 希望大家能静下心来阅读一下广度优先和深度优先的伪代码,其和一般的树遍历思想并无什么不同。
最后给出论文代码链接:
https://github.com/ysymyth/tree-of-thought-llm.
原创文章,作者:曾确令,如若转载,请注明出处:https://www.zengqueling.com/lzctjjfzljwt/