知识链:知识图谱提升大模型的推理能力,解决多个知识点结合推理时出错
- 提出背景
- 解法拆解
- 逻辑链
- CoK 框架
- hop 步骤
- 处理肺炎疑似病例
- 2-hop规则的应用
- 3-hop规则的应用
- 4-hop规则的应用
- CoK(T&E)方法的优势
- CoK 算法步骤
- 数据集构建
- 知识链对比mindmap
- 知识存储和管理
- 推理能力和应用
- 灵活性和可解释性
- 怎么结合俩者?
- 1. 数据和知识的集成
- 2. 模型训练和推理优化
- 3. 用户交互和系统应用
- 4. 技术实施
- 5. 评估和迭代
论文:https://arxiv.org/pdf/2407.00653
提出背景
点 1:询问哪种症状常见于流感。
- 大模型正确回答了包括发烧、咳嗽和肌肉痛。
点 2:询问抗病毒药物奥司他韦通常用于治疗哪种疾病。
- 大模型提供了准确的信息,确认它用于治疗流感。
点 3:大模型错误地认为一个患有持续性咳嗽和胸痛的病人应该使用奥司他韦,而实际上这些症状可能指向肺炎,应该使用抗生素而非抗病毒药物。
- 这展示了LLMs在将多个医学知识点结合进行诊断时可能出错。
这些例子表明,尽管LLMs在处理单一医学知识点上表现良好,但在进行涉及多个症状和治疗选择的复杂医学推理时可能会失败。
这种推理失败可能导致诊断错误或不适当的治疗建议。
在实际应用中,这要求医疗人员保持警惕,对大模型的建议进行仔细审核,并根据临床经验进行最终决策。
我们提出了一个名为“知识链”的新框架,它旨在帮助大型语言模型更好地进行知识推理。
知识推理是指模型从已知的信息中推导出新的知识。
在这个框架中,我们首先通过对知识图谱进行规则挖掘来构建一个名为“KNOWREASON”的数据集。
这个数据集帮助模型学习如何进行推理。
然后,我们注意到模型在简单训练下容易过度拟合这些规则,所以我们在框架中加入了一种试错机制。
这种机制模仿人类学习知识时的过程,通过不断尝试和调整来优化模型的推理能力。
通过大量实验,我们发现这个框架不仅能提高模型在知识推理上的表现,也能在其他一般性推理任务上取得好结果。
解法拆解
-
知识图谱和任务定义
- 目的: 存储事实并推导新知识。
- 解法: 利用知识图谱存储实体和关系,并通过规则推理来连接这些实体和关系。
- 子解法: 使用组合规则(多个关系原子的结合)推导新知识。
- 之所以使用组合规则,是因为可以通过已知关系推导出未知关系,从而扩展知识图谱的信息。
- 子解法: 使用组合规则(多个关系原子的结合)推导新知识。
-
知识链数据构建
- 目的: 构建用于训练LLMs的知识数据集。
- 解法: 通过规则挖掘、知识选择和样本生成三个步骤构建数据。
- 子解法1: 规则挖掘
- 之所以进行规则挖掘,是因为需要从知识图谱中提取有用的推理规则来构建数据。
- 子解法2: 知识选择
- 之所以进行知识选择,是为了确保数据集中的信息是准确和适当的,避免模型学习到错误或偏见的知识。
- 子解法3: 样本生成
- 之所以进行样本生成,是为了将规则和知识转换成模型可理解的自然语言格式,以便进行训练和评估。
- 子解法1: 规则挖掘
-
知识链学习
- 目的: 提高LLMs的知识推理能力。
- 解法: 采用初级训练和试错机制两种方法。
- 子解法1: 初级训练(行为克隆)
- 之所以使用初级训练,是因为这是一个直接的方法来教会模型如何应用规则进行推理。
- 子解法2: 试错机制
- 之所以使用试错机制,是因为它模拟人类探索知识的过程,可以帮助模型在缺乏支持事实的情况下重新评估和选择更合适的推理路径。
- 子解法1: 初级训练(行为克隆)
逻辑链
- 这些解法形成一个逻辑链,从知识存储到知识应用:
- 知识存储(知识图谱建立实体和关系)-> 知识提取(规则挖掘)-> 知识选择(确保数据质量)-> 知识转化(样本生成)-> 知识应用(LLMs训练和试错机制)
这种结构不仅有助于理解每个步骤的目的和方法,还清楚地展示了从数据准备到模型训练的整个流程。
CoK 框架
图2提供了CoK框架的三个主要组成部分:
-
数据集构建:
- 规则挖掘: 从知识图谱中挖掘出规则,如 “LiveIn(X,Y) ← WorkFor(X,Z1) ∧ LocateIn(Z1,Y)”。
- 知识选择: 根据规则选择相关的知识点。
- 样本生成: 基于挖掘出的规则和知识点生成样本。
-
Vanilla CoK:
- 展示了使用传统方法训练LLMs可能导致的问题,如规则过拟合和幻觉(错误推理)。
- 示例中,模型错误地将工作地点与居住地点直接等同,未能正确推理。
-
CoK (Trial and Error):
- 引入了试错机制的CoK框架,使得LLMs能够模拟人类的内部知识探索过程。
- 这种方法有助于模型在面对不确定信息时进行更有效的规则选择和应用,例如,在不知道具体公司信息的情况下避免错误地将个人居住地推断为公司所在地。
这图向我们展示了如何通过改进的数据处理和模型训练方法,使大型语言模型在进行复杂知识推理任务时能表现得更加准确和鲁棒。
hop 步骤
想象我们有一个用于医疗诊断的知识图谱,这个图谱中存储了关于症状、疾病、治疗方法和药物的各种信息。
在这个情景中,“hop” 是指连接一个实体到另一个实体所需的步骤数,比如从症状到可能的疾病,再到可能的治疗方法。
这些步骤数越多,涉及的信息就越复杂。
数据集的构成:
- 实体:包括症状(如咳嗽、发烧)、疾病(如流感、肺炎)、治疗方法(如服用抗生素)、药物(如阿莫西林)。
- 关系:描述实体之间的联系,例如“咳嗽和发烧是流感的症状”,“抗生素用于治疗肺炎”。
“Hop” 举例:
- 2-hop 规则:如果一个病人有咳嗽和发烧(第一步连接症状到疾病),并且这些症状与流感关联(第二步连接症状到疾病),那么诊断为流感。
- 3-hop 规则:如果诊断为流感(第一步),那么推荐服用抗病毒药物(第二步连接疾病到治疗方法),特别是奥司他韦(第三步连接治疗方法到具体药物)。
- 4-hop 规则:如果一个病人有咳嗽和发烧(第一步连接症状到疾病),诊断为流感(第二步),推荐服用抗病毒药物(第三步连接疾病到治疗方法),并且如果病人对奥司他韦过敏(第四步连接药物到患者信息),则推荐使用金刚烷胺。
在这种情况下,随着“hop”数的增加,所需处理的信息和规则变得更加复杂,需要更精确和具体的规则来确保诊断和治疗的准确性。
每个额外的“hop”都增加了连接不同医学概念的复杂性,这反映在数据集中用于训练计算机模型的规则数量上的减少。
这种规则的精细化有助于提高模型在实际医疗应用中的准确性和可靠性。
处理肺炎疑似病例
假设有一个病人来到医院,主诉是持续咳嗽和高烧。
2-hop规则的应用
- 第一跳:病人报告咳嗽和高烧。
- 第二跳:根据规则,“持续咳嗽加高烧可能是肺炎的症状”。
这个2-hop规则比较简单,直接从症状推到可能的疾病。
3-hop规则的应用
- 第一跳:病人报告咳嗽和高烧。
- 第二跳:诊断为可能的肺炎。
- 第三跳:如果是肺炎,根据规则,“肺炎应使用特定类型的抗生素治疗”。
这个3-hop规则引入了治疗步骤,考虑了疾病到治疗的推理。
4-hop规则的应用
- 第一跳:病人报告咳嗽和高烧。
- 第二跳:诊断为可能的肺炎。
- 第三跳:应使用抗生素治疗。
- 第四跳:基于病人过往的医疗记录,他对某些抗生素有过敏反应,因此需要选择其他类型的抗生素。
在这个4-hop规则中,考虑了病人的个人医疗历史,这增加了推理的复杂性和特异性。
CoK(T&E)方法的优势
在实际应用中,可能存在多种可能的疾病和治疗方案,特别是在症状不是特别典型的情况下。
CoK(T&E)方法通过不断试错来测试不同的规则和路径,能够帮助找到最适合具体病人情况的诊断和治疗方案。
这种方法能处理更复杂的推理链,提高诊断的准确性和个性化治疗的可能性。
随着跳数的增加,处理更复杂的推理链,以及CoK(T&E)方法如何帮助提升处理这些复杂情况的能力。
CoK 算法步骤
这个算法是一种“试错”方法,帮助计算机模型理解和使用知识图谱(一种存储大量信息的工具)中的信息来解答问题。算法的步骤大致如下:
- 开始:算法启动,准备开始处理。
- 重复执行:算法不断重复以下步骤直到找到满意的答案。
- 选择规则:从知识库中选一个可能有用的规则来尝试解决问题。
- 查找信息:检查这个规则需要的信息是否都在模型的知识库中。
- 记录问题:如果需要的信息不完整,记录下来这个问题,然后尝试另一个规则。
这样,算法通过不断尝试直到找到一个能解决问题的规则。
假设我们有一个病人来到医院,主要症状是咳嗽和发烧。
我们的目标是利用知识图谱和算法来推断病人可能患有的疾病。
知识图谱:
- 包含关于常见症状和疾病的信息,例如咳嗽和发烧可能与流感、普通感冒或肺炎有关。
- 关系示例:咳嗽和发烧是流感的症状,抗生素是肺炎的治疗方法等。
算法步骤:
- 开始:输入病人的症状到算法中。
- 选择规则:算法首先从知识图谱中选择一个与咳嗽和发烧相关的规则,比如“如果病人有咳嗽和发烧,那么他可能患有流感。”
- 查找信息:算法检查模型中是否有足够的信息支持这个规则。例如,它会查找与流感相关的其他症状或数据,如体温高于38度、全身疼痛等。
- 记录问题:如果发现模型中缺少必要的信息,如病人的详细体温记录,算法会记录这个缺陷。
- 重复执行:如果当前规则不足以确诊,算法会选择另一个规则,比如“咳嗽和发烧是肺炎的症状。”然后重复查找和验证的过程。
- 达到结果:如果找到了一个规则,其所需的所有信息都得到了模型的支持,算法就会停止搜索,并提供可能的诊断,如“病人很可能患有流感。”
通过这种方式,算法可以帮助医生快速地筛选和验证不同的诊断假设,提高诊疗的效率和准确性。
这种方法特别适用于需要处理大量数据和复杂情况的医疗问诊,确保病人能够得到最合适的治疗建议。
数据集构建
这段描述涉及到的“KNOWREASON”数据集、实体、关系、规则、样本以及跳数的概念都是在描述如何用一个复杂的数据结构来支持和训练大型语言模型(LLMs),尤其是在处理多步骤逻辑推理任务时的性能。
实体和关系:
- 实体:在知识图谱中,实体是指那些被描述的事物,比如人、地点、物体或概念。
- 关系:关系则是连接两个实体的链接,说明它们之间的逻辑或自然关系。
规则和跳数:
- 规则:在知识图谱中用于推理的逻辑语句,帮助模型从一个实体和状态推导出另一个实体和状态。
- 跳数:在这里,跳数(hop)指的是从一个实体到达另一个实体所需的中间步骤数。
- 例如,从“症状”到“疾病”再到“治疗”可以视为两跳(2-hop)。
- 跳数越多,说明推理过程涉及的逻辑链条越长。
数据集:
- 规则数量随跳数减少:这说明在处理更长的逻辑链条(即更高的跳数)时,可用的规则数量实际上是减少的。
- 这可能是因为随着跳数增加,所需处理的信息更为复杂和特定,因此能满足这些条件的规则自然较少。
- 平均样本跳数:这个指标衡量了数据集中样本平均涉及的跳数。
- CoK(Trial and Error, T&E)方法能够处理的推理链更长,这表明该方法能更好地应对复杂的推理任务,因为它的平均跳数比传统的CoK方法要高。
“KNOWREASON”数据集被设计来让模型通过更复杂的推理路径进行学习和推断,而且CoK(T&E)方法特别适用于处理这些复杂的多步骤逻辑推理任务。
这使得模型在面对需要深层次推理的实际问题时,能够表现得更好。
知识链对比mindmap
比较“知识链”方法与MindMap时,可以从几个关键方面来考虑,包括知识的存储、处理、推理能力,以及在医疗问诊等实际应用中的实用性。
知识存储和管理
知识链:
- 强调通过规则挖掘从知识图谱中提取信息,这些信息被用来训练和优化大模型的推理能力。
- 主要侧重于构建一个高质量的数据集(KNOWREASON),该数据集专门用于训练模型进行高效的知识推理。
MindMap:
- 使用知识图谱来直接增强模型的推理能力,知识图谱不仅作为数据源,而且直接参与到推理过程中。
- MindMap的知识存储更为动态,可以实时更新和查询,适用于需要即时反馈和决策的场景。
推理能力和应用
知识链:
- 通过改进的训练方法(如试错机制)提高大模型的自我学习和适应能力,模拟人类的探索过程。
- 更适合于需要模型自我发展和持续学习的环境,强调通过实验和错误纠正来优化推理路径。
MindMap:
- 利用已经建立的规则和逻辑链进行快速和准确的推理,适合快速决策支持。
- 在医疗问诊中,MindMap可以更直接地利用结构化知识来提供诊断支持,减少对模型不断训练的依赖。
灵活性和可解释性
知识链:
- 增加大模型的灵活性,允许它在未知的或少见的情况下进行推理。
- 通过试错机制,可能提高模型的可解释性,因为模型需要评估和解释每一次推理尝试的结果。
MindMap:
- 更强的可解释性,因为所有推理都基于明确的知识图谱和预定义的逻辑链。
- 在处理具体症状和疾病间的直接关系时显示出更高的透明度和准确性。
两种方法各有所长,知识链通过提高大模型的自适应和探索能力,适合于需要长期发展和自主学习的应用。
而MindMap则更侧重于利用现有的、结构化的医疗知识来提供快速、准确的医疗诊断和决策支持。
怎么结合俩者?
结合“知识链”方法和MindMap确实是一个有前景的方向,可以创建一个更强大、更全面的推理系统,特别适合于复杂和动态的应用场景如医疗问诊。
这种结合可以充分利用各自的优势,改进整个系统的学习能力、推理精度和可解释性。
1. 数据和知识的集成
- 共享知识图谱:将知识链方法中挖掘和优化的知识规则集成到MindMap的知识图谱中。
- 这样,MindMap不仅可以利用这些规则进行更准确的推理,而且可以持续更新这些规则以反映最新的医学发现。
- 数据集融合:利用知识链中的数据集(如KNOWREASON)来训练MindMap中的推理模型,使得这些模型能够在实际应用中更好地应用这些规则和知识。
2. 模型训练和推理优化
- 互补训练机制:结合MindMap的结构化知识推理能力和知识链的试错学习方法。
- 例如,在MindMap的基础上实施试错学习机制,使系统能够在现有知识的基础上探索和学习新的推理路径。
- 反馈循环:将从MindMap推理过程中得到的反馈用于调整和优化知识链中的推理规则,以此不断提高推理精度和效率。
3. 用户交互和系统应用
- 动态问诊支持:在实际的医疗问诊应用中,结合两种系统的优势来设计问诊流程。
- 使用知识链的动态学习能力来调整问诊问题,同时利用MindMap的知识图谱来提供准确的医疗建议和解释。
- 增强的解释性输出:通过集成系统生成的解释性输出,不仅基于MindMap的逻辑链,还包括知识链试错过程中的决策依据,使得医生和患者能够更好地理解推理过程。
4. 技术实施
- 技术栈协同:确保两种系统在技术层面的兼容性,比如在同一个计算环境中运行,使用可以互相调用的APIs,以及数据格式和交换协议的统一。
5. 评估和迭代
- 持续评估:定期评估这种集成系统的性能,包括推理准确性、用户满意度和操作效率,根据评估结果进行必要的调整。
通过这些策略,可以创建一个既能利用大规模知识进行准确推理,又能不断学习和适应新情况的高级医疗问诊系统。
这种系统将更好地满足临床环境中对于精确、可解释和动态适应性的需求。