今天分享的是由南京大学新型软件技术国家重点实验室与微软联合发布的一篇论文:
论文题目:Call Me When Necessary: LLMs can Efficiently and Faithfully Reason over Structured Environments。
论文链接: https://aclanthology.org/2024.findings-acl.254.pdf
代码链接: https://github.com/microsoft/Readi
01.介绍
近年来,大型语言模型(LLMs)在结构化环境(SEs)中的推理能力引起了广泛关注。针对大规模语言模型在结构化环境中推理的问题,现有研究通常采用两种主流方法:逐步推理和微调模型。
逐步推理方法通过逐步扩展推理路径与SEs交互,每一步都需调用LLM。这种方式能够缓解幻觉问题,但效率较低。例如,要回答“奥巴马的女儿是谁”这样的问题,逐步推理需要调用 LLM 至少两次——首先查询“奥巴马”的相关关系,然后从候选关系中选择“父亲”。
微调模型方法则通过使用标注数据训练模型,帮助其记忆环境并直接生成推理路径,虽然效率较高,但其输出结果无法保证能够在SEs上被验证。此外,微调方法依赖大量标注数据,在大规模SEs中,标注成本高昂且难以获取。
为了解决上述问题,本文提出了 Reasoning-PathEditing (Readi**) 框架**,该方法充分利用了LLMs的内在规划能力,并结合动态反馈机制,实现高效且可靠的推理。
Readi框架首先生成完整的推理路径,并在SEs中进行实例化;只有在实例化失败时才会触发路径编辑,从而减少不必要的LLM调用,显著提高推理效率。同时,Readi通过记录环境反馈(如出错位置、部分完成的实例和关联关系)来为路径编辑(修正)提供精准指导,提升推理的可靠性和效果。
实验结果表明,在KGQA和TableQA的五个多跳推理任务的综合实验中,Readi表现优于其他基于LLM的解决方案,并且超过了大多数微调方法。
02.方法
Readi是一种多跳推理框架,其在知识图谱(KG)上进行路径规划、实例化和问题求解。它的核心流程包括推理路径生成、推理路径实例化、推理路径修订,以及最终基于知识图谱的问答生成,上图展示了Readi的运行示例。下面将详细介绍每一步骤。
1. 推理路径生成
Reasoning Path Generation
目标:利用LLM生成初始推理路径 §,为后续在KG上的实例化奠定基础。
方法:
-
输入问题 (Q) 和主题实体 (n) 个。
-
使用思维链(Chain of Thought, CoT)的方式生成推理路径 §,包含从每个主题实体出发的 (n) 个约束条件。
示例:例如,对于问题“哪个国家与法国接壤并包含服务尼美根的机场?”,推理路径生成:
-
从“France”出发,约束为“邻接的国家”;
-
从“Nijmegen”出发,约束为“服务该城市的机场”及“包含这些机场的国家”。
2. 推理路径实例化
Reasoning Path Instantiation
目标:将推理路径 § 的自然语言关系(NL关系)转化为KG中的关系,并找到符合约束的实体路径。
过程:
-
关系绑定:
-
将路径中的NL关系与KG中的关系模式绑定。
-
使用BM25和Contriever从KG中检索出与NL关系语义相似的关系模式作为候选关系。
-
示例:将“border”绑定为“adjoin, near_by, locations”等候选关系。
-
路径连接:
-
确定起始实体后,从KG中寻找符合候选关系序列的路径实例。
-
若某个候选关系能够连接到当前实体,则实例化该关系;重复该过程,直至实例化完整路径。
-
示例:对于图中的示例,首先需要检查KG中是否存在任何从“France”出发的路径实例,其中的关系依次匹配§中所有关系的绑定候选关系。具体而言,如果候选“adjoin, near_by, locations”中的任何关系连接到“France”(橙色粗体“adjoin”),将获得满足约束“[France] border”的实体,因此NL关系“border”在KG上实例化为“adjoin”。然后,对§中剩余的关系重复相同的过程,最终实例化整个路径
-
实例化失败:
-
如果某段路径无法实例化,例如没有候选关系能连接当前实体,则需要触发路径修订。
3. 推理路径修订
Reasoning Path Editing
目标:在路径实例化失败时,分析错误原因并通过修订更新路径。
过程:
-
错误摘要:
-
分类错误类型,定位错误位置和相关信息:
-
不相关NL关系:当前NL关系的候选KG关系均无法连接当前实体;
-
空路径:推理路径不存在;
-
路径以复合节点结束:实例化路径的最后一个节点是复合节点。
-
如果实例化出错,检测错误位置、相关NL关系及当前结束的实体
-
错误准备:
-
收集修订所需信息:
-
错误原因;
-
部分完成的实例路径;
-
当前结束节点附近的KG关系作为修订候选。
-
路径修订:
-
调用LLM基于问题 (Q) 和错误信息生成修订后的路径。
示例:对与图片中的样例,在实例化“[France] border”时,路径以复合节点结束(原因iii)。生成修订信息:
-
路径以复合节点结束
-
部分完成的路径“France Compound Node”;
-
修订候选关系“country”和“relationship”。
然后,LLM来根据问题Q和这些错误消息编辑前面的路径,生成路径[France] border→country。
4. 基于知识图谱的问答
QA Reasoning
目标:在实例化推理路径 § 后,根据合并的KG实例以及问题生成答案。
过程:
-
将每个路径(约束)实例的交集作为KG实例集合 。
-
结合问题 (Q) 和 调用LLM生成答案。
示例:
-
对与图片中的样例,其KG实例路径包含:
-
((France, adjoin, Compound Node))
-
((Compound Node, country, German))。
-
根据这些三元组推理得出: “邻接法国的国家是‘German’”。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。