GoT 思维图:使用图论来建模并增强LLMs的推理过程
- 提出背景
- 为什么使用 GoT?
- GoT = 子解法1(图形结构化)+ 子解法2(自我评估)+ 子解法3(模块化任务处理)
- 聚合与生成
- GoT 流程
- 1. Prompter(提示器)
- 2. Parser(解析器)
- 3. Scoring module(评分模块)
- 4. Controller(控制器)
- 5. Graph of Operations (GoO)(操作图)
- 6. Graph Reasoning State (GRS)(图推理状态)
- GoT 分析
- 1. 属性(Attributes)
- 2. 构成(Composition)
- 3. 交互(Interaction)
- 4. 生态(Ecosystem)
- 5. 动态(Dynamics)
- 6. 趋势(Trends)
- GoT 应用
- 1. 生成操作
- 2. 分割操作
- 3. 改进操作
- 4. 聚合操作
- 5. 评分操作
论文:https://arxiv.org/pdf/2308.09687
代码:https://github.com/spcl/graph-of-thoughts
CoT(Chain-of-Thought,思维链):生成一条单一的推理路径。这种方式就像一个接一个地解决问题的步骤,每个步骤只依赖于前一个。
ToT(Tree of Thoughts,思维树):生成多条推理路径,形成一个树状结构。这允许在推理时探索不同的分支,类似于你在面对决策时考虑不同的选择。
GoT(Graph of Thoughts,思维图):不仅生成多条推理路径,而且这些路径可以交叉和重新连接,形成一个网络。
这更类似于一个复杂的网络,其中每个思考点都可能与多个其他点相连,允许信息在网络中自由流动,从而产生更全面和灵活的解决方案。
GoT使用图论来建模并增强LLMs的推理过程。
GoT框架通过将推理过程建模为一个有向图,可以使各个思考单元(节点)之间不仅线性相连,还可以进行更复杂的交互,从而模拟人类思维中的非线性和复杂性。
在医疗问诊的场景中:
CoT(思维链)
ToT(思维树)
GoT(思维图)
考虑一个患者同时出现发烧、咳嗽和疲劳的情况。
使用GoT,医生可以建立一个包含流感、普通感冒和肺炎等多个可能疾病的思维图。
这个图将显示这些疾病如何可能与各种症状相关联,还可以根据诊断测试结果(例如血液分析)动态更新。
如果发现某些症状组合特别符合肺炎,GoT可以帮助医生快速调整诊断焦点,并考虑是否需要进一步的影像学检查或抗生素治疗。
子解法1:图形结构化
特征:使思维模型具备高度互联和灵活性。
之所以用图形结构化子解法,是因为图形能够有效地模拟复杂的关系和互动。
例如,GoT通过图形结构化,可以将各个思维点(节点)通过边相互连接,从而支持非线性和多路径推理过程,这反映了现实世界问题处理的复杂性和互联本质。
逻辑链:这是一种网络结构,因为每个节点可以与多个节点直接连接,形成一个复杂的网络。
子解法2:自我评估
特征:增强模型的自适应能力和动态决策能力。
之所以用自我评估子解法,是因为自我评估允许模型根据当前的推理结果动态调整其后续的操作。
例如,GoT可以在推理过程中根据已生成的思维节点的效果,决定如何扩展或修正思维图,以提高解决方案的准确性和效率。
逻辑链:这是一个链条结构,因为自我评估通常是顺序进行,一个评估的结果会影响下一步的决策。
子解法3:模块化任务处理
特征:通过分解复杂任务来简化问题解决过程。
之所以用模块化任务处理子解法,是因为模块化允许将大问题分解为更小、更易管理的子任务。
例如,GoT通过将一个大的排序任务分解为多个小的排序任务,独立处理这些小任务后再合并结果,这样不仅提高了处理速度,也降低了错误率。
逻辑链:这是一个决策树形式,因为每个子任务的完成是基于之前子任务的完成情况,形成了一个阶段性的决策过程。
聚合是将多个信息源或数据点合并成一个综合的单元,以便进行更全面的分析或决策,如将多个患者症状汇总以做出诊断。
生成是基于现有信息或数据点创造新的元素或思考路径,以探索新的可能性或解决方案,如基于对多个患者的症状数据进行分析,生成针对特定疾病可能性的详细诊断报告。
聚合(Aggregation)和生成(Generation)这两种操作主要属于子解法1(图形结构化)。
聚合:
生成:
Generate
和Aggregate
操作,以及Parser的ParseGenerate
和ParseAggregate
等。这些API使得GoT框架能够灵活地应用于不同场景,支持用户自定义和扩展。在这个场景中,GoT框架通过其各个组件的协同工作,能够有效地管理从初步症状描述到最终诊断的整个流程。
例如,如果初步的LLM诊断建议指向肺炎,但实验室测试(如血常规)和X光检查的结果与典型的肺炎表现不符,控制器可以决定调整诊断方向,探索其他可能性如支气管炎或肺结核,并更新操作图和推理状态以反映这些新信息。
这种动态的调整过程有助于医生做出更准确、更全面的诊断决定。
GoT的核心属性包括:
GoT的构成元素包括:
GoT的交互特性涉及:
GoT的生态环境包括:
GoT的动态特性表现在:
GoT可能的未来趋势包括:
生成操作
"针对以下问题生成一系列可能的解决方案:{问题描述}。"
分割操作
"将以下数据分割成{数量}部分:{数据描述}。"
改进操作
"审查以下解决方案并纠正任何错误:{解决方案描述}。"
聚合操作
"将以下数据点合并成一个综合总结:{数据点描述}。"
评分操作
"评估以下解决方案,并根据它们的有效性进行排名:{解决方案描述}。"
这些模板中的占位符(例如{问题描述}
、{数量}
等)允许用户在实际使用中替换为具体的任务或数据信息,从而使提示词动态适应不同的具体情境。
在医疗问诊的场景中,使用Graph of Thoughts (GoT) 。
"针对以下症状生成一系列可能的诊断:患者报告有持续头痛、恶心和视力模糊。"
"将以下全面血液检查结果分割成关键参数和次要参数两部分:{血液检查数据}。"
"审查以下初步诊断并纠正任何错误:初步诊断为糖尿病,但患者血糖水平正常。"
"将以下患者的多次访问记录合并成一个综合病历:访问记录包括多次心脏检查和药物治疗反应。"
"评估以下治疗方案,并根据它们的有效性进行排名:方案一为使用药物A治疗高血压,方案二为采用药物B加运动治疗。"