GoT 思维图:用图的各种变换,来模拟人脑的复杂网络,提升大模型推理关联能力
GoT 思维图:用图的各种变换,来模拟人脑的复杂网络,提升大模型推理关联能力
GoT(Graph of Thoughts)思维图模型是一种通过图的各种变换来模拟人脑复杂网络,从而提升大模型推理关联能力的技术。本文详细介绍了GoT的背景、原理、设计和应用,通过对比CoT(思维链)和ToT(思维树),阐述了GoT的优势和应用场景,特别是医疗诊断场景中的应用。
提出背景
- CoT(Chain-of-Thought,思维链):生成一条单一的推理路径。这种方式就像一个接一个地解决问题的步骤,每个步骤只依赖于前一个。
- ToT(Tree of Thoughts,思维树):生成多条推理路径,形成一个树状结构。这允许在推理时探索不同的分支,类似于你在面对决策时考虑不同的选择。
- GoT(Graph of Thoughts,思维图):不仅生成多条推理路径,而且这些路径可以交叉和重新连接,形成一个网络。这更类似于一个复杂的网络,其中每个思考点都可能与多个其他点相连,允许信息在网络中自由流动,从而产生更全面和灵活的解决方案。
GoT框架通过将推理过程建模为一个有向图,可以使各个思考单元(节点)之间不仅线性相连,还可以进行更复杂的交互,从而模拟人类思维中的非线性和复杂性。问题在于,怎么模拟?人的思维 = 复杂网络 = 图的各种变换!GoT使用图论来建模并增强LLMs的推理过程。如果将 LLM 的推理过程建模成图,那么就能自然地实现这些以及其它许多思维变换。
为什么使用 GoT?
在医疗问诊的场景中:
- CoT(思维链)
- 特点:CoT生成单一的线性推理路径。在医疗诊断中,这种方法可能按顺序考虑每一个症状和相关的疾病,但它通常不允许同时处理多个相互关联的症状。
- 局限性:在复杂的医疗案例中,单一路径可能无法充分捕捉到症状之间的交互作用,可能导致误诊或漏诊。
- ToT(思维树)
- 特点:ToT生成一个树形结构的推理路径,允许并行考虑多个诊断假设。这在某种程度上优于CoT,因为它可以探索多个可能的疾病和相关的症状。
- 局限性:尽管ToT提供了并行处理的能力,它的每个分支通常是独立的,这意味着不同分支之间的信息可能无法有效整合,仍可能忽略症状间的复杂关系。
- GoT(思维图)
- 特点:GoT通过创建一个图形结构,其中节点代表不同的诊断思考,边代表节点之间的逻辑关系。这种结构不仅支持并行处理,还允许节点之间的广泛互动。
- 优势:
- 互动性:节点之间可以有多种连接,允许医生从多个角度分析症状之间的关系。
- 灵活性:医生可以根据新信息(如实验室测试结果)动态调整推理路径。
- 全面性:通过聚合和精炼转换,GoT可以整合多个诊断假设,提供更全面的疾病分析,增加诊断的准确性。
考虑一个患者同时出现发烧、咳嗽和疲劳的情况。使用GoT,医生可以建立一个包含流感、普通感冒和肺炎等多个可能疾病的思维图。这个图将显示这些疾病如何可能与各种症状相关联,还可以根据诊断测试结果(例如血液分析)动态更新。如果发现某些症状组合特别符合肺炎,GoT可以帮助医生快速调整诊断焦点,并考虑是否需要进一步的影像学检查或抗生素治疗。
GoT的核心子解法
GoT由三个核心子解法组成:
- 子解法1:图形结构化
- 特征:使思维模型具备高度互联和灵活性。
- 之所以用图形结构化子解法,是因为图形能够有效地模拟复杂的关系和互动。例如,GoT通过图形结构化,可以将各个思维点(节点)通过边相互连接,从而支持非线性和多路径推理过程,这反映了现实世界问题处理的复杂性和互联本质。
- 逻辑链:这是一种网络结构,因为每个节点可以与多个节点直接连接,形成一个复杂的网络。
- 子解法2:自我评估
- 特征:增强模型的自适应能力和动态决策能力。
- 之所以用自我评估子解法,是因为自我评估允许模型根据当前的推理结果动态调整其后续的操作。例如,GoT可以在推理过程中根据已生成的思维节点的效果,决定如何扩展或修正思维图,以提高解决方案的准确性和效率。
- 逻辑链:这是一个链条结构,因为自我评估通常是顺序进行,一个评估的结果会影响下一步的决策。
- 子解法3:模块化任务处理
- 特征:通过分解复杂任务来简化问题解决过程。
- 之所以用模块化任务处理子解法,是因为模块化允许将大问题分解为更小、更易管理的子任务。例如,GoT通过将一个大的排序任务分解为多个小的排序任务,独立处理这些小任务后再合并结果,这样不仅提高了处理速度,也降低了错误率。
- 逻辑链:这是一个决策树形式,因为每个子任务的完成是基于之前子任务的完成情况,形成了一个阶段性的决策过程。
图的各种变换:聚合与生成
聚合是将多个信息源或数据点合并成一个综合的单元,以便进行更全面的分析或决策,如将多个患者症状汇总以做出诊断。生成是基于现有信息或数据点创造新的元素或思考路径,以探索新的可能性或解决方案,如基于对多个患者的症状数据进行分析,生成针对特定疾病可能性的详细诊断报告。聚合(Aggregation)和生成(Generation)这两种操作主要属于子解法1(图形结构化)。
- 聚合:
- 图论视角:多个节点的信息被聚合到一个节点中。
- 排序任务实例:将多个已排序的子数组合并成一个完整的已排序数组。
- 写作任务实例:将多篇文章合并成一个连贯的总结。
- 生成:
- 图论视角:一个节点分裂成多个新的节点,每个新节点依赖于原节点。
- 排序任务实例:将一个未排序的数组分裂成多个子数组,为后续的排序做准备。
- 写作任务实例:从一篇文章生成多个关键词摘要,以提高质量。
工程设计:细粒度控制
- 对于不同的任务,最佳的图结构是什么样的?
- 最佳的图结构:根据每个任务的特定需求选择图结构,如线性、树状或网络形式,以确保信息流动和处理最符合实际应用的逻辑。
- 怎么设计最有效的聚合思维方法,以最大化准确度并最小化成本?
- 设计最有效的聚合思维方法:通过评估哪些节点的信息相互关联并可以合并来减少冗余,选择合适的方法来整合这些信息,以增强决策的准确性同时降低处理的复杂性和成本。
提出了【细化变换】,这种变换允许用户通过高度的控制自由度,动态地改变和结合不同的思维节点。具体来说,这个功能让用户能够将表现最好的或最相关的信息点相结合,创造出新的、更有力的解决方案。
这种方式的有助于理解GoT的设计如何响应各种挑战,并通过结构化的方法提高问题解决效率和效果的清晰视图。
GoT 流程
- 系统架构:这部分展示了GoT框架的主要组件,如Prompter、Parser、Scoring & Validation、Controller。它们各自的功能是生成提示、解析LLM输出、评分验证,以及控制整个推理过程。
- API:列出了各个组件的可扩展API,例如Prompter的Generate和Aggregate操作,以及Parser的ParseGenerate和ParseAggregate等。这些API使得GoT框架能够灵活地应用于不同场景,支持用户自定义和扩展。
- 图形化的操作(GoO)与图推理状态(GRS):介绍了操作图和推理状态如何支持推理过程的管理和进展,以及如何保持整个推理过程的连贯性和动态更新。
- 排序用例:通过具体的示例解释了GoT如何处理数字排序问题。从接收初始输入的数字序列开始,展示了如何通过生成、聚合等操作分割、排序和合并子序列,以达到最终的排序输出。
- 详细操作流程:每一个步骤都配有具体的操作指令和图示,说明了如何从输入到输出,通过各种中间步骤处理和改进LLM的输出。这包括如何利用GoT的API来生成新的提示、聚合中间结果,以及如何重复某些操作来优化输出。
- Prompter(提示器)
- 功能:输入患者的症状,如发烧、咳嗽和胸痛。
- 作用:提示器将这些症状作为查询问题发送给LLM。
- Parser(解析器)
- 功能:解析LLM生成的回答,这些回答可能包括不同的诊断建议和相关的医学信息。
- 作用:提取出LLM回答中的关键信息,如提到的疾病名称和推荐的检查项目。
- Scoring module(评分模块)
- 功能:对LLM的回答进行评分,判断每个诊断建议的可靠性。
- 作用:确定哪些回答更有可能是准确的,如根据症状和统计数据评估肺炎的可能性。
- Controller(控制器)
- 功能:
- 决策:根据评分模块的输出选择最可能的诊断。
- 管理元素:指导如何进一步进行检查以确认诊断,例如指定进行X光检查。
- 作用:确保推理过程按照逻辑和有效性推进,以及及时调整策略。
- Graph of Operations (GoO)(操作图)
- 功能:定义了一系列预设的操作,如查询症状、获取诊断建议、请求额外检查等。
- 作用:保持推理流程的结构化和有序,确保所有必要的步骤都被执行。
- Graph Reasoning State (GRS)(图推理状态)
- 功能:动态记录整个推理过程的状态,包括已经提出的诊断假设和已执行的检查。
- 作用:随时更新诊断进程,确保所有信息都被考虑在内,避免遗漏关键数据。
在这个场景中,GoT框架通过其各个组件的协同工作,能够有效地管理从初步症状描述到最终诊断的整个流程。例如,如果初步的LLM诊断建议指向肺炎,但实验室测试(如血常规)和X光检查的结果与典型的肺炎表现不符,控制器可以决定调整诊断方向,探索其他可能性如支气管炎或肺结核,并更新操作图和推理状态以反映这些新信息。这种动态的调整过程有助于医生做出更准确、更全面的诊断决定。
GoT 分析
1. 属性(Attributes)
GoT的核心属性包括:
- 多维性:GoT通过其图形结构能够同时表示多种数据和决策路径。
- 灵活性:能够动态调整思考节点和边的配置,适应不同情境和需求。
- 可扩展性:结构允许随着数据量的增加而扩展,不受固定格式的限制。
- 互动性:支持用户与系统之间的互动,实现实时更新和反馈。
- 可视化:图形的表示方式直观展示复杂关系和决策过程。
2. 构成(Composition)
GoT的构成元素包括:
- 节点(Vertex):代表思考或决策的单元,如数据点、问题、假设或决策。
- 边(Edge):连接节点,表示节点之间的逻辑关系或数据流。
- 图(Graph):整个结构,由多个节点和边组成,形成一个网络,用以模拟复杂的思考或决策过程。
3. 交互(Interaction)
GoT的交互特性涉及:
- 节点间交互:节点之间通过边相互影响,传递信息或决策支持。
- 系统与用户交互:用户可以修改图形结构,添加或删除节点和边,以适应新的信息或策略。
- 系统与外部系统交互:GoT可以与外部数据库、API或其他决策支持系统集成,实现数据的动态输入和输出。
4. 生态(Ecosystem)
GoT的生态环境包括:
- 技术栈:依赖于数据科学、人工智能、图形数据库和前端可视化技术。
- 应用领域:广泛应用于医疗、金融、教育、政策制定等多个领域。
- 用户群:研究人员、数据分析师、决策制定者和商业领导者等。
5. 动态(Dynamics)
GoT的动态特性表现在:
- 实时更新:系统可以根据新输入的数据或用户互动实时更新图形。
- 自适应学习:可以整合机器学习算法,根据历史数据和用户反馈优化决策模型。
- 扩展性:随着使用的深入和外部环境的变化,系统结构和功能可以持续演进。
6. 趋势(Trends)
GoT可能的未来趋势包括:
- 更广泛的自动化:通过集成更先进的AI技术,实现更高程度的自动化决策。
- 跨平台集成:与更多类型的系统和平台集成,如物联网(IoT)设备和移动应用。
- 增强的用户定制性:提供更多定制选项,让用户可以根据具体需要调整系统的表现和功能。
- 更深入的数据分析能力:通过深度学习和大数据技术提高数据处理和分析的能力。
逻辑链
GoT 通过构建一个由节点和边组成的图形结构,模拟人类思维过程,实现复杂问题的分解、推理和解决。
- 节点的创建
- 每个节点代表一个思维或问题解决步骤。这些节点可以是问题的一个部分、一个中间步骤的解决方案、或是最终的结论。
- 例如,在解决数学问题时,每个数学操作(加、减、乘、除)或解决步骤可以是一个节点。
- 边的构建
- 边代表节点之间的逻辑或因果关系。这些边指导信息在节点之间的流动,表明哪些思维步骤依赖于其他步骤。
- 例如,如果一个数学问题的解决依赖于前一个计算结果,这两个计算节点之间将通过一条边连接。
- 思维变换
- 聚合变换:将多个相关节点的信息汇聚到一个新节点中,这有助于形成更广泛的视角或解决方案。
- 细化变换:对现有节点进行更深入的分析或补充,增加细节,提高解决方案的精确度。
- 生成变换:基于已有节点生成新的思维或节点,这有助于扩展思考范围和探索新的解决方案。
这三个步骤合起来,使得GoT能够全面地评估和扩展问题解决策略,从而更精确、全面和创新地解决复杂问题:
- 聚合变换:通过整合多个节点的信息到一个新节点,以简化问题结构并提供更全面的解决方案。
- 细化变换:增加现有节点的详细信息,提高问题解决方案的精度和深度。
- 生成变换:从已有节点创建新节点,以引入新的思考路径和潜在解决方案,增强模型的创新和适应能力。
- 评估与排序
- 使用特定的评估机制来判断各个节点的有效性和重要性。这些评估可能基于节点的贡献度、逻辑性、或是解决问题的能力。
- 根据评估结果对节点进行排序,决定哪些节点应该被优先考虑或是对问题解决最为关键。
- 迭代优化
- 在问题解决过程中,可能需要多次迭代和调整图形结构。这包括添加新的节点、调整或删除现有的边,或是重新评估和排序节点以更好地反映问题的解决路径。
通过这样的方式,GoT能够模拟复杂的思维过程,从而帮助解决涉及多个变量和步骤的问题,使得解决方案既系统又全面。
论文:Graph of Thoughts: Solving Elaborate Problems with Large Language Models
代码:GitHub - spcl/graph-of-thoughts