GoT 思维图:使用图论来建模并增强LLMs的推理过程

GoT 思维图:使用图论来建模并增强LLMs的推理过程

    • 提出背景
      • [为什么使用 GoT?](#为什么使用 GoT?)
    • [GoT = 子解法1(图形结构化)+ 子解法2(自我评估)+ 子解法3(模块化任务处理)](#GoT = 子解法1(图形结构化)+ 子解法2(自我评估)+ 子解法3(模块化任务处理))
    • [GoT 流程](#GoT 流程)
        • [1. Prompter(提示器)](#1. Prompter(提示器))
        • [2. Parser(解析器)](#2. Parser(解析器))
        • [3. Scoring module(评分模块)](#3. Scoring module(评分模块))
        • [4. Controller(控制器)](#4. Controller(控制器))
        • [5. Graph of Operations (GoO)(操作图)](#5. Graph of Operations (GoO)(操作图))
        • [6. Graph Reasoning State (GRS)(图推理状态)](#6. Graph Reasoning State (GRS)(图推理状态))
    • [GoT 分析](#GoT 分析)
      • [1. 属性(Attributes)](#1. 属性(Attributes))
      • [2. 构成(Composition)](#2. 构成(Composition))
      • [3. 交互(Interaction)](#3. 交互(Interaction))
      • [4. 生态(Ecosystem)](#4. 生态(Ecosystem))
      • [5. 动态(Dynamics)](#5. 动态(Dynamics))
      • [6. 趋势(Trends)](#6. 趋势(Trends))
    • [GoT 应用](#GoT 应用)
      • [1. 生成操作](#1. 生成操作)
      • [2. 分割操作](#2. 分割操作)
      • [3. 改进操作](#3. 改进操作)
      • [4. 聚合操作](#4. 聚合操作)
      • [5. 评分操作](#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框架通过将推理过程建模为一个有向图,可以使各个思考单元(节点)之间不仅线性相连,还可以进行更复杂的交互,从而模拟人类思维中的非线性和复杂性。

为什么使用 GoT?

在医疗问诊的场景中:

CoT(思维链)

  • 特点:CoT生成单一的线性推理路径。在医疗诊断中,这种方法可能按顺序考虑每一个症状和相关的疾病,但它通常不允许同时处理多个相互关联的症状。
  • 局限性:在复杂的医疗案例中,单一路径可能无法充分捕捉到症状之间的交互作用,可能导致误诊或漏诊。

ToT(思维树)

  • 特点:ToT生成一个树形结构的推理路径,允许并行考虑多个诊断假设。这在某种程度上优于CoT,因为它可以探索多个可能的疾病和相关的症状。
  • 局限性:尽管ToT提供了并行处理的能力,它的每个分支通常是独立的,这意味着不同分支之间的信息可能无法有效整合,仍可能忽略症状间的复杂关系。

GoT(思维图)

  • 特点:GoT通过创建一个图形结构,其中节点代表不同的诊断思考,边代表节点之间的逻辑关系。这种结构不仅支持并行处理,还允许节点之间的广泛互动。
  • 优势
    • 互动性:节点之间可以有多种连接,允许医生从多个角度分析症状之间的关系。
    • 灵活性:医生可以根据新信息(如实验室测试结果)动态调整推理路径。
    • 全面性:通过聚合和精炼转换,GoT可以整合多个诊断假设,提供更全面的疾病分析,增加诊断的准确性。

考虑一个患者同时出现发烧、咳嗽和疲劳的情况。

使用GoT,医生可以建立一个包含流感、普通感冒和肺炎等多个可能疾病的思维图。

这个图将显示这些疾病如何可能与各种症状相关联,还可以根据诊断测试结果(例如血液分析)动态更新。

如果发现某些症状组合特别符合肺炎,GoT可以帮助医生快速调整诊断焦点,并考虑是否需要进一步的影像学检查或抗生素治疗。

GoT = 子解法1(图形结构化)+ 子解法2(自我评估)+ 子解法3(模块化任务处理)

  1. 子解法1:图形结构化

    • 特征:使思维模型具备高度互联和灵活性。

    • 之所以用图形结构化子解法,是因为图形能够有效地模拟复杂的关系和互动。

      例如,GoT通过图形结构化,可以将各个思维点(节点)通过边相互连接,从而支持非线性和多路径推理过程,这反映了现实世界问题处理的复杂性和互联本质。

    • 逻辑链:这是一种网络结构,因为每个节点可以与多个节点直接连接,形成一个复杂的网络。

  2. 子解法2:自我评估

    • 特征:增强模型的自适应能力和动态决策能力。

    • 之所以用自我评估子解法,是因为自我评估允许模型根据当前的推理结果动态调整其后续的操作。

      例如,GoT可以在推理过程中根据已生成的思维节点的效果,决定如何扩展或修正思维图,以提高解决方案的准确性和效率。

    • 逻辑链:这是一个链条结构,因为自我评估通常是顺序进行,一个评估的结果会影响下一步的决策。

  3. 子解法3:模块化任务处理

    • 特征:通过分解复杂任务来简化问题解决过程。

    • 之所以用模块化任务处理子解法,是因为模块化允许将大问题分解为更小、更易管理的子任务。

      例如,GoT通过将一个大的排序任务分解为多个小的排序任务,独立处理这些小任务后再合并结果,这样不仅提高了处理速度,也降低了错误率。

    • 逻辑链:这是一个决策树形式,因为每个子任务的完成是基于之前子任务的完成情况,形成了一个阶段性的决策过程。

聚合与生成

聚合是将多个信息源或数据点合并成一个综合的单元,以便进行更全面的分析或决策,如将多个患者症状汇总以做出诊断。

生成是基于现有信息或数据点创造新的元素或思考路径,以探索新的可能性或解决方案,如基于对多个患者的症状数据进行分析,生成针对特定疾病可能性的详细诊断报告。

聚合(Aggregation)和生成(Generation)这两种操作主要属于子解法1(图形结构化)。

  1. 聚合

    • 图论视角:多个节点的信息被聚合到一个节点中。
    • 排序任务实例:将多个已排序的子数组合并成一个完整的已排序数组。
    • 写作任务实例:将多篇文章合并成一个连贯的总结。
  2. 生成

    • 图论视角:一个节点分裂成多个新的节点,每个新节点依赖于原节点。
    • 排序任务实例:将一个未排序的数组分裂成多个子数组,为后续的排序做准备。
    • 写作任务实例:从一篇文章生成多个关键词摘要,以提高质量。

GoT 流程

  • 系统架构:这部分展示了GoT框架的主要组件,如Prompter、Parser、Scoring & Validation、Controller。它们各自的功能是生成提示、解析LLM输出、评分验证,以及控制整个推理过程。
  • API :列出了各个组件的可扩展API,例如Prompter的GenerateAggregate操作,以及Parser的ParseGenerateParseAggregate等。这些API使得GoT框架能够灵活地应用于不同场景,支持用户自定义和扩展。
  • 图形化的操作(GoO)与图推理状态(GRS):介绍了操作图和推理状态如何支持推理过程的管理和进展,以及如何保持整个推理过程的连贯性和动态更新。
  • 排序用例:通过具体的示例解释了GoT如何处理数字排序问题。从接收初始输入的数字序列开始,展示了如何通过生成、聚合等操作分割、排序和合并子序列,以达到最终的排序输出。
  • 详细操作流程:每一个步骤都配有具体的操作指令和图示,说明了如何从输入到输出,通过各种中间步骤处理和改进LLM的输出。这包括如何利用GoT的API来生成新的提示、聚合中间结果,以及如何重复某些操作来优化输出。
1. Prompter(提示器)
  • 功能:输入患者的症状,如发烧、咳嗽和胸痛。
  • 作用:提示器将这些症状作为查询问题发送给LLM。
2. Parser(解析器)
  • 功能:解析LLM生成的回答,这些回答可能包括不同的诊断建议和相关的医学信息。
  • 作用:提取出LLM回答中的关键信息,如提到的疾病名称和推荐的检查项目。
3. Scoring module(评分模块)
  • 功能:对LLM的回答进行评分,判断每个诊断建议的可靠性。
  • 作用:确定哪些回答更有可能是准确的,如根据症状和统计数据评估肺炎的可能性。
4. Controller(控制器)
  • 功能
    • 决策:根据评分模块的输出选择最可能的诊断。
    • 管理元素:指导如何进一步进行检查以确认诊断,例如指定进行X光检查。
  • 作用:确保推理过程按照逻辑和有效性推进,以及及时调整策略。
5. Graph of Operations (GoO)(操作图)
  • 功能:定义了一系列预设的操作,如查询症状、获取诊断建议、请求额外检查等。
  • 作用:保持推理流程的结构化和有序,确保所有必要的步骤都被执行。
6. 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 应用

生成操作

  • 模板"针对以下问题生成一系列可能的解决方案:{问题描述}。"

分割操作

  • 模板"将以下数据分割成{数量}部分:{数据描述}。"

改进操作

  • 模板"审查以下解决方案并纠正任何错误:{解决方案描述}。"

聚合操作

  • 模板"将以下数据点合并成一个综合总结:{数据点描述}。"

评分操作

  • 模板"评估以下解决方案,并根据它们的有效性进行排名:{解决方案描述}。"

这些模板中的占位符(例如{问题描述}{数量}等)允许用户在实际使用中替换为具体的任务或数据信息,从而使提示词动态适应不同的具体情境。

在医疗问诊的场景中,使用Graph of Thoughts (GoT) 。

1. 生成操作

  • 应用场景:生成潜在的诊断列表。
  • 具体提示词"针对以下症状生成一系列可能的诊断:患者报告有持续头痛、恶心和视力模糊。"

2. 分割操作

  • 应用场景:分割复杂的医疗检查结果。
  • 具体提示词"将以下全面血液检查结果分割成关键参数和次要参数两部分:{血液检查数据}。"

3. 改进操作

  • 应用场景:修正初步诊断。
  • 具体提示词"审查以下初步诊断并纠正任何错误:初步诊断为糖尿病,但患者血糖水平正常。"

4. 聚合操作

  • 应用场景:汇总患者的多次访问记录。
  • 具体提示词"将以下患者的多次访问记录合并成一个综合病历:访问记录包括多次心脏检查和药物治疗反应。"

5. 评分操作

  • 应用场景:评估不同治疗方案的有效性。
  • 具体提示词"评估以下治疗方案,并根据它们的有效性进行排名:方案一为使用药物A治疗高血压,方案二为采用药物B加运动治疗。"
相关推荐
TENET信条14 小时前
day53 第十一章:图论part04
开发语言·c#·图论
TENET信条2 天前
代码随想录 day50 第十一章 图论part01
图论
闻缺陷则喜何志丹2 天前
【C++动态规划 图论】3243. 新增道路查询后的最短距离 I|1567
c++·算法·动态规划·力扣·图论·最短路·路径
TENET信条2 天前
代码随想录 day52 第十一章 图论part03
图论
南宫生2 天前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
single5943 天前
【c++笔试强训】(第四十一篇)
java·c++·算法·深度优先·图论·牛客
_nut_3 天前
图论基础算法/DFS+BFS+Trie树
算法·深度优先·图论
南宫生3 天前
力扣-图论-70【算法学习day.70】
java·学习·算法·leetcode·图论
2401_834481993 天前
Day50 图论part01
图论
南宫生4 天前
力扣-图论-19【算法学习day.69】
java·学习·算法·leetcode·图论