【AI论文精读13】RAG论文综述2(微软亚研院 2409)P5-可解释推理查询L3
AI知识点总结:【AI知识点】
AI论文精读、项目、思考:【AI修炼之路】
P1,P2,P3,P4
五、可解释推理查询(L3)
ps:P2有四种查询(L1,L2,L3,L4)的举例对比
5.1 概述
在这一部分(P5)及下一部分(P6)中,我们将探讨需要外部数据来提供推理依据才能解决的问题。这类查询不仅要求理解事实内容,还需要能够理解并应用与数据上下文相关的领域特定推理依据。这些查询可根据推理依据的性质分为两类:基于可解释推理的查询和基于隐藏推理的查询。
可解释推理查询(Interpretable Rationale Queries) 是基于外部数据提供明确推理依据的一类相对简单的查询。处理这类查询的辅助数据通常包括明确的解释,展示了解决问题的思维过程。这类数据可以有多种形式进行组织:
-
纯文本:文本描述是呈现可解释推理的最常见形式。这些文本可能包括专门的或官方的文件,如手册或指南,以及特定领域的手册或操作指南。此类文本阐述了在复杂场景中进行决策的推理过程。例如,FDA 指南中描述了制药厂处理的指导原则,或医生使用的药物指南,展示了像FDA官员或医生在处理特定案例时的思路。
-
结构化指令:有时,推理关系或决策路径会以结构化的方式呈现出来。这些推理可以理解为文本驱动的Moore机或文本驱动的Mealy机。在计算理论中,Moore机是输出值仅由当前状态决定的有限状态机【4】。状态转移条件通常通过文本表达,LLM需要对这些文本进行解释,而不像传统程序依赖原生代码运行。例如,考虑一个客户支持代理按照手册处理用户的产品更换或退款请求。Mealy机则是由当前状态和输入共同决定输出值的有限状态机【5】。区别在于,某些动作(如API调用)不仅由状态决定,还取决于与从前一状态转移相关的文本消息。自然而然地,这些领域特定的推理依据可以以工作流程、决策树或伪代码等形式呈现。
以下是一些此层次查询的示例:
- 如何诊断和治疗有特定症状描述的胸痛患者?(给定胸痛管理指南)
- 在现实生活场景中,如何回应用户的问题?(给定一个客户服务工作流程)
图4的解释
推理查询的示例
图4展示了两种类型的推理查询所依赖的外部数据类型。可解释推理更依赖清晰的、结构化的文本和规则,而隐藏推理则需要从历史数据或复杂的知识体系中挖掘出推理依据。
1. 可解释推理(Interpretable Rationales)
-
纯文本(Plain Texts):
- 包含详细指导或规则的文本,例如:
- 手册或指南(Handbooks or Guidelines):如医疗指南、法规指南等。
- 操作手册(Operation Manual)
- 包含详细指导或规则的文本,例如:
-
结构化指令(Structured Instructions):
- 这些是更具体的推理逻辑,通常以结构化的形式呈现,例如:
- 工作流程图(Workflow Diagram)
- 伪代码(Pseudocode)
- 决策树(Decision Tree):表示决策过程中的每一步选择。
- 这些是更具体的推理逻辑,通常以结构化的形式呈现,例如:
2. 隐藏推理(Hidden Rationales)
隐藏推理的详细解释见P6
-
领域内数据(In-domain Data):
- 历史记录(Historical Records):包含过去事件、决策或操作的详细记录,模型可以从中挖掘推理依据。
- 模拟数据(Simulated Data):通过模拟实验或测试数据来推断出潜在的推理过程。
-
初步知识(Preliminary Knowledge):
- 这些是经过归纳或验证的知识体系,模型通过这些体系来完成推理任务:
- 综合公理系统(Comprehensive Axiomatic Systems):指那些经过严格验证的公理或理论体系。
- 经验归纳知识(Empirically Induced Knowledge):基于经验归纳出的知识,通常来源于大量的实证数据。
- 已验证的中间结论(Verified Intermediate Conclusions):从初步数据或逻辑中推导出的中间结论,用来支持复杂推理。
- 这些是经过归纳或验证的知识体系,模型通过这些体系来完成推理任务:
5.2 挑战与解决方案
在处理可解释推理查询时,主要的挑战在于如何将领域特定的推理依据以可理解的方式集成到大型语言模型(LLMs)中。这一类查询不仅需要外部数据,还需要将推理逻辑与决策过程清晰呈现。以下是主要的挑战及对应的解决方案:
1. 提示词调优成本高:
- 挑战:提示词调优(Prompt Tuning) 往往需要耗费大量时间和计算资源。每个不同的查询通常需要不同的背景知识和决策标准,进而需要设计针对性的提示词示例。虽然手动设计的提示词可以产生很好的效果,但这种方法非常耗时,且需要大量人工投入。此外,针对不同查询生成定制化提示词的训练模型过程也会带来较大的计算负担。
- 解决方案:为了降低提示调优的成本,可以使用自动化提示词生成工具或框架,如基于零样本学习或少样本学习的模型,能够在更少的示例下生成有效的提示词。某些研究还提出了自适应提示调优算法,能够根据模型反馈进行动态调整。这些方法可以在一定程度上减少对人工设计的依赖并提高效率。
2. 可解释性有限:
- 挑战:LLMs对提示词的反应通常不透明。在许多情况下,研究人员无法访问LLMs的内部参数,这使得理解不同提示词对模型行为的具体影响变得复杂。由于这种透明度的缺失,研究人员很难一致性地理解和验证LLM对不同提示词的响应的可解释性。
- 解决方案:为了提高提示词和模型行为的可解释性,研究人员可以使用注意力机制(Attention Mechanism) 等可视化工具来分析模型如何处理提示词和输入。此外,开发模型解读工具或集成现有的解释框架(如LIME、SHAP)也可以帮助识别LLM在响应提示词时重点关注的部分,从而更好地理解模型的决策过程。
5.3 提示调优(Prompt Tuning)
对于可解释推理查询,关键问题在于如何有效地将外部数据中的推理依据整合到LLM中,并确保模型能够准确遵循这些依据来做出反应。
一些解决方案:
Text2MDT【112】展示了从医疗指南和教科书中自动提取医疗决策树的两种方法,帮助梳理冗长医疗文本中的逻辑链条,使推理更加清晰。MedDM【113】则引入了一种可以被LLM执行的临床指导树(CGT)格式,用于进行多轮对话推理。InstructRec【114】专注于在推荐系统中利用LLM的能力,通过自然语言描述用户偏好、任务和上下文,打造基于语言的推荐系统。
提示调优技术:
简单地将推理依据以自然语言提示的形式嵌入LLM中,往往不能取得最佳效果,而且手动设计提示非常耗时。因此,提示调优技术应运而生,专门用于提升LLM根据特定推理依据作出响应的能力。
-
基于强化学习的提示调优:
- TEMPERA框架【115】:该框架通过将有限的指令、例子和词汇器(verbalizers)整合到强化学习的操作空间内,以LLM生成正确响应的概率作为奖励,引导模型在多个数据集上探索最佳的提示配置。
- Rlprompt【116】:同样采用强化学习方法,训练一个适配器来帮助较小的语言模型生成最佳的提示,根据LLM响应的准确性反馈进行调优。
-
定向刺激提示(Directional Stimulus Prompting):
这一策略利用LLM在下游任务上的表现作为奖励机制,训练模型提取和使用定向刺激(如特定的提示或关键词)作为提示,从而确保LLM的动作更符合预期结果。 -
基于离散提示空间的优化:
- GrIPS【117】:使用一个小数据集作为评分集,通过尝试各种提示修改(包括删除、交换、释义和添加)来快速、有效地找到最优提示配置。
-
LLM辅助的提示调优:
最近的进展 【118, 119】还显示出使用LLMs自身来促进提示调优的趋势。- OPRO【120】:通过LLM来生成基于历史数据和性能指标的新提示解决方案,并对这些提示进行评分,简化了提示调优过程。
- Reflexion框架【121】:引入了基于语言反馈的提示调优方法,利用LLM分析输出结果,并将反馈存储在一个情景记忆缓冲区中,从而在未来的交互中优化决策过程。
5.4 思维链提示(CoT Prompting)
CoT(Chain-of-Thought)思维链提示 旨在让大语言模型(LLM)参与复杂的推理链条,这是与一般事实查询推理不同的过程。对于涉及复杂推理的场景,诸如思维链(Chain-of-Thoughts)【122】、思维树(Tree-of-Thoughts)【123】或思维图(Graph-of-Thoughts)【124】等方法在此类情况下非常有效。
1. 手动设计 CoT 提示
对于经过充分研究并具有广泛适用性的场景,手动设计 CoT 提示成为一种可行的解决方案。例如,Ji et al. (2023)【125】提出了一种自我反思的方法,该方法将知识获取与答案生成相结合。他们通过使用外部工具并设计提示,构建了三种自我反思循环:事实知识获取循环(Factual Knowledge Acquiring Loop)、知识一致性答案循环(Knowledge-Consistent Answering Loop)、以及问题蕴涵答案循环( Question-Entailment Answering Loop),从而将外部推理融入到模型的处理过程中。
此外,Wu et al. (2024)【126】对临床记录中的错误类型进行了手动分析,并开发了三种不同的 CoT 提示来引导 GPT-4 模型【127】,聚焦于干预、诊断和管理错误。这种有针对性的提示帮助自动化执行错误检测、跨度识别和临床记录的修正任务。
2. 自动化 CoT 提示生成
尽管手动设计 CoT 提示非常有效,但需要大量的人力和时间成本。为了解决这一问题,Automate-CoT【128】提出了一种从最小标注数据集生成扩展推理链的方法。这种方法使用了一种方差缩减策略(variance-reduced policy gradient),以评估每个 CoT 链的重要性,帮助选择最有效的提示组合。
3. 利用 CoT 提示构建基于代理的工作流
另一种利用 CoT 提示的方式是围绕 LLM 构建代理工作流。这通常需要开发一个更为全面的系统,以应对各种现实世界中的场景。根据 Wang et al. 的研究,此类系统可大致分为四个模块:画像模块(Profiling)、记忆模块(Memory)、规划模块(Planning)和行动模块(Action)【129】。可解释推理(Interpretable Rationale)可以以不同的形式集成到多个模块中,使代理能够根据环境或人类反馈进行自适应调整和迭代。
4. 自动评估推理链质量
最近的研究进展如 LLM Reasoners【130】和 SocREval【131】聚焦于自动评估推理链的质量。这些方法不仅有助于构建鲁棒的数据增强型 LLM 应用,还提高了系统对复杂推理任务的处理能力。
5. 基于可解释推理的应用
基于可解释推理(Interpretable Rationale) 的应用涵盖了多个领域。例如,CoML【132】将自动化机器学习(AutoML) 的知识作为提示集成到 LLM 中,动态检索历史实验记录中的有用信息,并将这些元素组合起来,赋予 LLM 解决新任务中的机器学习问题的能力。MetaGPT【133】开发了一种用于软件开发的多代理系统,其中项目的不同利益相关者分别被表示为一个代理。这种设置使得多个代理能够根据现实中的工作流程进行协作,有效地完成软件开发任务。
类似的复杂代理系统也被设计用于客户服务【134】和医学问答【135】等领域,在这些领域中,代理被专门设计来处理特定类型的查询,比如理解复杂的用户请求或提供准确的医学信息。这些系统不仅提升了互动质量,还提高了响应的效率和准确性,展示了 LLM 在结合完善的代理工作流设计时的多样性和潜力。
未完待续。。。
相关文章:

【AI论文精读13】RAG论文综述2(微软亚研院 2409)P5-可解释推理查询L3
AI知识点总结:【AI知识点】 AI论文精读、项目、思考:【AI修炼之路】 P1,P2,P3,P4 五、可解释推理查询(L3) ps:P2有四种查询(L1,L2,L3,…...

优达学城 Generative AI 课程3:Computer Vision and Generative AI
文章目录 1 官方课程内容自述第 1 课:图像生成简介第 2 课:计算机视觉基础第 3 课:图像生成与生成对抗网络(GANs)第 4 课:基于 Transformer 的计算机视觉模型第 5 课:扩散模型第 6 课࿰…...

UE5 C++ 通过绑定编辑器事件实现控制柄顶点编辑
开发中经常会遇到编辑器环境中制作工具拖拽控制柄编辑内容的需求,此时可以通过Editor事件拿到对应回调,进行相应更新: 1.创建Mesh编辑Actor类 创建一个Mesh编辑Actor类,提供Mesh顶点编辑的相关逻辑。 .h: #pragma once#inclu…...

云计算ftp 服务器实验
创建VLAN 10 划分端口 创建VLAN 10 的地址 10.1.1.1 服务器的地址是 10.1.1.2 这是服务上的配置 服务器上选择ftp 启动 ,文件目录选择一下 在 交换机上 ftp 10.1.1.2 服务器的地址 把刚才创建的shenyq txt 文件下载下到本地交换机 我们能看到交换…...

node.js服务器基础
node.js的事件循环 node.js是基于事件驱动的,通常在代码中注册想要等待的事件,设定好回调函数,当事件触发的时候就会调用回调函数。如果node.js没有要处理的事件了,那整个就结束了;事件里面可以继续插入事件,如果有事…...

2-SAT 问题详解:逻辑约束与图论的结合
2-SAT 问题详解:逻辑约束与图论的结合 2-SAT(Two Satisfiability Problem)是布尔可满足性问题(SAT)的特殊形式,它解决的是含有二元子句的布尔表达式的可满足性问题。2-SAT 问题常用于分析系统中的逻辑约束…...

使用NetTopologySuite读写gpkg文件
直接上代码: 优势是什么?纯C#开发,不存在兼容和字符问题。 using NetTopologySuite; using NetTopologySuite.Features; using NetTopologySuite.Geometries; using CdIts.NetTopologySuite.IO; using CdIts.NetTopologySuite.IO.GeoPackag…...

什么是http?列出常见方法并解他们?
HTTP 方法是客户端(通常是浏览器)用来向服务器表明其意图的方式。常见的 HTTP 方法有以下几种: 一、GET 解释:用于请求指定的资源。它是最常见的 HTTP 方法之一。GET 方法应该只用于获取数据,而不应该有任何副作用。例…...

通过修改注册表来提高导出图像的分辨率(PPT尝试)
通过修改注册表来提高 PowerPoint 导出图片的分辨率,可以导致导出的图片尺寸大于您期望的 1920 x 1080 像素。例如,将 ExportBitmapResolution 设置为 300 DPI,可能会导致输出图像的尺寸变得非常大,比如 10240 x 5760 像素。这是因…...

OpenCV 环境配置
首先下载opencv,在opencv官网进行下载。 按照上面的步骤,点击进去 滑至底部,不切换至不同页,选择合适的版本进行下载(Window系统选择Windows版本进行下载)。 接下来以4.1.2版本为例: 点击之后会进入这个页面ÿ…...

使用通义千问模拟ChatGPT-o1进行思考,并以类似于ChatGPT-o1的形式输出
prompt 你是ChatGPT O1,旨在通过第一性原理思维和基于证据的推理来解决用户问题。你的目标是提供清晰、循序渐进的解决方案、基础概念,并从头开始构建答案。 ### 指导原则: 以下是为大模型采用这种方法而设计的系统提示: 1. 理解…...

维生素对于生活的重要性
在探索健康奥秘的旅途中,维生素作为人体不可或缺的微量营养素,扮演着至关重要的角色。它们虽不直接提供能量,却是酶促反应、细胞代谢、免疫功能乃至心理健康的基石。今天,让我们一同深入探讨人体所需补充的维生素,这些…...

STM32学习--4-1 OLED显示屏
接线图 OLED.c #include "stm32f10x.h" #include "OLED_Font.h"/*引脚配置*/ #define OLED_W_SCL(x) GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(x)) #define OLED_W_SDA(x) GPIO_WriteBit(GPIOB, GPIO_Pin_9, (BitAction)(x))/*引脚初始化*/ void …...

原生 App 上架 Mac App Store 过程总结
随着 macOS 系统的普及,越来越多的开发者希望将他们的原生应用程序发布到 Mac App Store,以便触达更广泛的用户群体。在这篇文章中,我们将详细总结原生 App 上架 Mac App Store 的整个过程,包括必要的准备工作、开发流程、测试、申…...

[实时计算flink]双流JOIN语句
Flink SQL支持对动态表进行复杂而灵活的连接操作,本文为您介绍如何使用双流JOIN语句。 背景信息 实时计算的JOIN和传统批处理JOIN的语义一致,都用于将两张表关联起来。区别为实时计算关联的是两张动态表,关联的结果也会动态更新,…...

metahuman如何导入UE5
1.启动 通过EPIC启动UE5(UE5内置有Bridge, 但是UE4是需要单独下在Bridge软件) 2.打开Quixel Bridge 在window(窗口)中打开Quixel Bridge 3.Bridge界面 在弹出的Bridge界面选择模型 需要先下载,然后再导入 4.下载模型 点击需要的模型右上方的绿色箭头下载 5.下…...

Python知识点:基于Python技术,如何使用TensorFlow进行自动驾驶模型训练
开篇,先说一个好消息,截止到2025年1月1日前,翻到文末找到我,赠送定制版的开题报告和任务书,先到先得!过期不候! 使用TensorFlow进行自动驾驶模型训练的Python技术详解 自动驾驶技术是人工智能领…...

Django的请求与响应
Django的请求与响应 1、常见的请求2、常见的响应3、案例 1、常见的请求 函数的参数request是一个对象,封装了用户发送过来的所有请求相关数据。 get请求一般用来请求获取数据,get请求也可以传参到后台,但是传递的参数显示在地址栏。 post请求…...

[java]Iterable<Integer> 和Iterator<Integer>的区别和用法
Iterable<Integer> 和 Iterator<Integer> 在 Java 中都是用于处理集合数据的重要接口,但它们的角色和用途有所不同。以下是它们之间的主要区别: 1. 接口角色 Iterable<T>:这是一个接口,它定义了如何获取一个…...

JavaScript进行数据可视化:D3.js入门
在数据驱动的世界中,数据可视化是理解和传达数据信息的重要手段。D3.js是一个强大的JavaScript库,它允许开发者将数据转换为可交互的图形和图表。本文将为您介绍D3.js的基本概念、特点以及如何入门使用它进行数据可视化。 D3.js简介 什么是D3.js&#…...

字符串拼接方法性能对比和分析
对字符串进行拼接主要有三种方法: 1.加号 2.concat方法 3.StringBuilder或者StringBuffer的append方法 下面看下性能对比,测试方法为各循环十万次,对比耗费时间。 测试性能 1.”"拼接 long start System.currentTimeMillis();String …...

[Halcon矩阵] 通过手眼标定矩阵计算相机旋转角度
📢博客主页:https://loewen.blog.csdn.net📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢本文由 丶布布原创,首发于 CSDN,转载注明出处🙉📢现…...

推荐几本编程入门书目
对于编程入门,推荐以下几本书籍,这些书籍覆盖了不同的编程语言,适合零基础的学习者逐步掌握编程基础: 1. 《Python编程快速上手——让繁琐工作自动化》 特点:以简单易懂的方式介绍了Python的基础知识和编程概念&#…...

每天一个数据分析题(五百零五)- 提升方法
提升方法(Boosting),是一种可以用来减小监督式学习中偏差的机器学习算法。基于Boosting的集成学习,其代表算法不包括? A. Adaboost B. GBDT C. XGBOOST D. 随机森林 数据分析认证考试介绍:点击进入 题…...

华为云ECS部署DR模式的LVS
1 概述 LVS是linux内核模块,用于4层的负载均衡,它有多个工作模式,例如NAT模式、DR模式。 DR模式的数据流是这样的: client ---> Director Server(即LVS服务器,带VIP) ---> Real Serve…...

如何在 Jupyter Notebook 执行和学习 SQL 语句(上)
在Jupyter Notebook中使用SQL,你可以通过以下步骤创建一个数据库并连接到该数据库: 1. 安装SQLite和SQLAlchemy SQLite 是一个轻量级的数据库系统,适合本地小型项目。SQLAlchemy 是一个强大的数据库连接工具,可以在Jupyter中方便…...

数据结构-5.7.二叉树的层次遍历
一.演示: 1.初始化队列: 2.根结点入队: 3.判断队列是否为空,此时有根结点,说明不为空,则队头结点即根结点出队并访问,再先进它的左结点,最后进它的右结点: 4.之后对进来…...

RISC-V知识点目录
分支预测 分支预测概述https://blog.csdn.net/zhangshangjie1/article/details/136947089?sharetypeblogdetail&sharerId136947089&sharereferPC&sharesourcezhangshangjie1&spm1011.2480.3001.8118分支指令的方向预测https://blog.csdn.net/zhangshangjie1/a…...

C++11 新特性 学习笔记
C11 新特性 | 侯捷C11学习笔记 笔者作为侯捷C11新特性课程的笔记进行记录,供自己查阅方便 文章目录 C11 新特性 | 侯捷C11学习笔记1.Variadic TemplatesC11支持函数模板的默认模板参数C11在函数模板和类模板中使用可变参数 可变参数模板1) 可变参数函数模板2) 可变…...

Go 语言中的格式化占位符
在 Go 语言中,fmt 包提供了大量的格式化占位符,用于格式化输出不同类型的数据。选择合适的占位符,可以确保输出的内容格式正确、清晰易懂。 常见的占位符: 基本类型 %v:按值的默认格式输出。适用于任何类型。%v&…...