赛尔笔记大语言模型与知识融合综述:方法、基准和应用
作者: AINLP 来源: AINLP
原创作者:冯掌印,马伟涛
出处:哈工大SCIR
引言
通过在大规模数据上的预训练,大模型的参数中蕴含了大量的知识,在很多自然语言处理任务上都展现出了强大的性能。但是在处理需要大量真实世界知识的任务时,他们也面临一些严峻的挑战。
当前大模型面临三个重要的问题:(1)大模型熟练地掌握了常见知识,却无法很好地学习长尾知识;(2)受限于训练策略,大模型内部的知识无法及时更新,无法与动态变化的世界知识保持同步,存在知识时效性不足的问题;(3)大模型的输出存在幻觉的问题。
为了缓解这些问题,有很多研究工作从不同的角度为大模型融入新的知识,然而,目前缺乏针对大模型与知识融合的系统性归纳和总结。针对这一问题,本文对现有大模型与知识融合的相关研究进行了广泛调研,探讨了不同的大模型知识融合方法,评测方式和数据,整理了前沿应用,并对未来潜在研究方向进行展望。
我们期望这篇综述能够为研究者和初学者提供参考和启发,激发更多关于大模型与知识融合领域的深入探讨,推动该领域的进一步发展和创新。
现有的大模型与知识融合方法,主要包括知识编辑 和检索增强。 知识编辑部分从输入编辑、模型编辑、方法评估三个方面进行讨论。检索增强部分从检索判断、文档检索、文档使用、知识冲突和评测基准四个方面进行讨论。
论文:Trends in Integration of Knowledge and Large Language Models: A Survey and Taxonomy of Methods, Benchmarks, and Applications
arxiv:https://arxiv.org/abs/2311.05876
知识编辑
知识编辑方法是知识增强大模型的主要策略之一,其通过向大模型注入知识的方式来更新模型中的过时知识和修复模型的事实错误。本文按照模型的处理结构,即输入、处理和输出,将知识编辑相关工作分为:输入编辑、模型编辑和方法评估三个方面进行介绍。
输入编辑
输入编辑是完成知识编辑最为简单且直接的方式,通过直接编辑模型的输入内容进行知识注入,按照注入知识的作用可以进一步将输入编辑方式分为:提示增强和提示编辑两大类。
提示增强
提示增强策略采用各种形式(例如:上下文学习、知识图谱或领域相关模型)在原始输入的基础上补充问题相关背景知识,帮助大模型更好的解决知识密集型任务,一定程度上扩大模型的知识边界。
提示编辑
提示编辑策略旨在帮助模型修复自身的事实错误。此类方法额外引入模型或人工来判别响应结果并收集对应反馈,再基于各种反馈来编辑模型的输入提示,促使模型正确解决复杂任务、准确理解用户指令。
模型编辑
模型编辑方法关注模型结构本身,通过参数形式的知识来增强模型,完成模型过时知识的更新。相关工作可以按照原模型的参数是否需要更新以及更新策略的不同,可以分为:知识插件、定位再编辑和整体编辑。
知识插件
知识插件方法旨在保持原模型不改变的基础上,通过引入可训练的参数模块来注入新知识。此类方法将常见的模型插件(例如:adapter结构)插入到原模型中,基于需要更新的知识重训练这些插件,保证插件在处理新知识时发挥作用,而对于其他知识产生较少影响,从而达到在几乎不损害原模型性能的条件下更新知识。
定位再编辑
定位再编辑是当前模型编辑的主流策略之一,它通过两阶段的方式完成模型参数的细粒度更新。此类方法首先通过知识定位方法确定对应知识所存储的参数,其次再定向更新这些参数来实现新知识的注入。此外,之前有关工作表明transformer结构中的FFN层承担着存储知识的作用,因此大部分定位再编辑方法都重点关注FFN层与所注入知识的关系。
整体编辑
整体编辑方法与定位再编辑相同,也是通过调整原模型的参数完成知识的更新。此类方法通过外部方式,例如:基于元学习思路训练一个超网络来直接预测参数的更新量,从而实现一次性完成新知识的注入。但在大模型时代使用此类方法时需要精心设计外部网络的结构,降低额外的开销。
方法评估
目前知识编辑方法主要面向事实类知识,针对此系列方法的评估包含多个方面,本文重点从结果角度开展介绍。当前知识编辑结果的评估主要包含三个方面:可靠性、泛化性和本地性。
可靠性
可靠性是知识编辑结果评测的重要指标,其评测编辑后的模型能否成功回忆起来所注入的知识。
泛化性
成功被注入的知识应具有一定的泛化性,编辑后的模型应同步更新与编辑事实相关的知识。因此,评估知识编辑的泛化性也是十分必要的。但知识的泛化性较为复杂,目前泛化性的评测主要面向原知识的语义转写。同时,有相关工作提出了可移植性(portability)来评估距编辑事实两跳距离知识的更新。
本地性
理想的知识编辑方法在完成新知识更新的同时,应对于其他无关的知识不产生影响。本地性则用来评估知识编辑的精确性。
除了上述角度之外,当前工作还关注编辑知识的跨语言泛化性。在评测时,使用不同于注入知识的语言来评测被编辑的模型,探讨模型是否充分理解注入的事实。以下为主流的评测数据集,从不同的角度来评测知识编辑的效果。
检索增强
知识编辑通过更新大模型特定部分的参数进行知识的更新,但是目前大模型中参数与知识的对应关系并不完全清楚,更新特定知识对应的部分参数,可能会影响其它无关知识的存储。检索增强是一种不改变大模型参数的同时,有效地为大模型引入外部知识的方法。
在这部分, 主要讨论以下几个关键问题:
• 大模型什么情况下需要检索增强?
• 如何检索与输入相关的文档?
• 如何使用检索的相关文档来提高大模型的能力?
• 面对知识冲突,大模型会有什么样的表现?如何解决知识冲突?
检索判断
理想情况下,针对大模型自身能够解决的问题,我们应该直接使用大模型;只有面对大模型自身无法解决的问题时,我们才需要通过检索的方法,为大模型补充额外的知识,进而解决对应的问题。
要实现这一目标,我们需要准确地判断什么时候需要进行检索。根据方法的不同,我们将相关研究分为基于标定 和基于模型 的方法。
基于标定
基于标定的方法,即设定一个检索指标和阈值,如果大模型的输入或者输出对应的检索指标超过或者低于阈值,那么就触发检索。
有研究表明大模型无法学习长尾分布的知识,那么对于输入的问题,我们就可以根据问题中实体的分布情况进行判断,并设定对应的阈值。比如以实体在维基百科页面的访问量为指标,如果问题中实体对应的访问量低于阈值,就触发检索;如果高于阈值,就认为大模型已经掌握相关知识,直接使用大模型回答问题。
除了根据问题的某一特征进行判断,我们也可以根据回答的某一特征进行判断。一种常用的指标是大模型生成答案时的置信度。大模型在生成答案时,对于掌握的知识,生成时的置信度较高,则认为不需要进行检索,直接输出答案即可;对于没有掌握的知识,生成时的置信度较低,则需要检索相关的文档,然后利用相关的文档,大模型再次生成答案。
基于模型
基于模型的方法,即用一个可学习的判断模型,用来判断当前问题是否需要检索相关的问题。当前的判断模型主要包括大模型自身和NLI模型。
大模型在不同类型的任务上都展示了优秀的表现。那么,大模型可以判断自身是否能够解决某问题吗?有一些研究者尝试使用大模型进行检索判断。有一些工作通过prompt的方式,直接问大模型是否能够回答某问题,比如COOK。有一些研究者先让大模型生成一个答案,然后将问题和答案输入到大模型,令其判断答案是否准确回答了问题。但是发现面对以上两种情况,大模型都不能很好地作出判断。
有研究者不直接判断是否需要检索,而是判断检索的文档是否能够解决问题。相关的文档能够帮助大模型回答问题,不相关的文档,反而会干扰大模型的能力。将问题和检索的文档作为输入,然后使用一个训练好的NLI模型进行判断,从而降低不相关文档对大模型的干扰。
文档检索
通过检索判断,如果确定需要相关的文档来帮助大模型回答问题,那么我们怎么找到相关的文档呢?按照文档的来源,可以划分为基于检索器的检索 (即从外部知识库检索相关文档)和基于大模型的检索 (即从大语言模型内部知识找到相关问题)。
基于检索器
从外部知识库中检索相关的文档,往往需要一个检索器。检索器可以是基于词匹配的稀疏检索方法,比如TFIDF和BM25,也可以是基于稠密向量相似度计算的方法,也可以直接使用商业的搜索引擎找到相关的文档。基于稀疏检索的方法不需要训练,但是面临词汇不一致而语义一致的问题;稠密检索需要有标注数据进行训练,且效果具备领域相关性;商业检索器能够实时检索到最新的世界知识,但是无法处理检索特定问题的情况。因此,不同的方法各有优劣,需要根据不同的使用场景进行合理的选择。
对于特定文档的检索,基于稠密向量的检索是常用的方法,我们对该场景下大模型和检索器的结合使用方法进行讨论。按照大模型和检索器的耦合情况进行分类,可以分为三类:
检索器和模型独立 :模型和检索器单独训练,在使用时,先用检索器检索相关的文档,然后输入到大模型。
模型适配检索器 :固定检索器的参数,微调模型的参数,使模型能够更好地根据检索的文档,生成答案。该方法适用于模型参数量较小且模型能够白盒访问的情况。
检索器适配模型 :当前,模型参数量非常大,微调模型成本会显著增大,另外且当前的一些大模型只能通过API进行黑盒访问。为了更好地适配大模型,有研究者尝试使用大模型的输出作为监督信号,微调检索器。
基于大模型
除了从外部知识库检索相关的文档,有研究者发现从大模型参数中直接生成(背诵)相关的文档,也可以提高大模型回答问题的能力。对一个问题,我们可以使用大模型强大的在线学习(in-context learning)能力生成多条文档,然后根据自洽性(self-consistency)选择有效的文档,最终将文档输入到大模型。
文档使用
按照文档在大模型中使用的阶段不同,可以将文档使用方法分为三类:输入增强、推理验证和答案验证。
输入增强
对于简单的问题,常用的方法是将相关的文档拼接到问题之前,然后作为prompt输入到大模型。但是大模型能够处理的文档长度有限,如果拼接多个检索的文档,可能会超出大模型能够处理的最长文档,因此限制了能够检索文档的数量。为了缓解该问题,一种做法是扩展大模型的能力,使其能够处理更长的文档;另外一种做法是让每个文档与问题拼接起来输入到大模型,得到一个答案,最终将多个大模型进行融合。
推理验证
对于复杂的问题,往往需要多步的推理,但大模型无法确保推理过程的正确性。为了缓解该问题,可以在推理过程中引入检索的文档,从而提升大模型推理能力,以确保生成正确的最终答案。比如Self-Ask, ReAct, IR-CoT等工作,都是在推理过程中,使用了检索的文档。
答案验证
除了输入增强和推理验证,还有一种方法是利用检索的文档对模型生成的答案进行验证,对于错误或者不合适的地方进行修改。
知识冲突
通过检索相关的文档可以为大模型补充知识,但是该方法也面临新的问题和挑战:(1)内部冲突 :大模型内部知识和检索的外部知识存在冲突。(2)外部冲突 :检索的外部文档之间存在知识冲突。
知识冲突的研究,一般需要通过替换实体或者生成的方式构造知识冲突的文档。研究发现,当只给定一个与内部知识冲突的外部文档时,大模型能够较好地根据外部文档回答问题。当给定一个与内部知识一致的文档,再给定一个与内部知识冲突的文档时,大模型则会按照和内部知识一致的文档回答问题。进一步的,当给定不同类型的多个文档时,大模型往往会基于更加一致的多个文档回答问题。大模型对知识的选择具备投票的能力,选择使用更多文档支持的知识。当前针对知识冲突的研究多关注于面对知识冲突时大模型表现,如何巧妙地解决知识冲突有待探索。
评测基准
常用的检索增强评测基准包括:• 单跳问答:一次推理即可回答的问题。• 多跳问答:需要多步推理才能回答的问题。• 事实确认:对于给定的事实,验证其正确性。• 复杂推理:常识推理、时序推理、表格推理等。常识推理是根据日常生活中普遍知晓和普遍感知的知识进行推理、判断和理解的过程。时序推理
前沿应用
知识编辑:当前知识编辑方法主要面向事实类知识,因此用来大模型事实错误的修复工作;其次部分工作利用知识编辑方法删除模型中的不良信息和隐私数据,提高大模型的鲁棒性;同时知识编辑方法可以作为一种可控生成技术,帮助人们统一和调整大模型的情感、立场等主观风格。
检索增强:检索增强在很多的经典的知识密集型任务上都取得了很好的效果,比如开放域问答、事实确认等。除此之外另,检索增强应用到了很多新兴的场景。比如ChatPDF, 大模型可以很好的回答用户对于特定文档的问题;ChatDoctor是一个专业的医疗对话机器人,通过与病人的对话,了解病人的病情,并提供相应的治疗措施;New Bing,Baidu Bot等,基于大模型和检索增强技术,开发了新一代生成式的搜索引擎。
未来研究方向
• 多源知识增强:当前的知识编辑方法主要编辑大模型中三元组类型的知识,检索增强方法,主要检索文本类型的知识。解决复杂的问题可能需要来自不同类型的知识,因此融合大模型与多种不同类型的知识是一个值得探索的方向。
• 融合知识与多模态大模型:多模态大模型与文本大模型类似,也存在知识幻觉和知识无法及时更新等问题,因此研究知识与多模态大模型的融合,也是值得研究的方向之一。
• 基于大模型的智能体:大模型展现了强大的推理和规划能力,基于大模型的智能体是一个前沿的研究方向。智能体在解决问题时需要和环境交互,要求智能体具备强大的知识获取和利用能力。因此探索基于大模型的智能体对外部知识的利用,记忆,存储,融合是一个非常具备潜力的研究方向。
• 知识与大模型融合的分析:当前知识增强大模型方法有很多,不同方法都有其优点和不足,也适用于不同的场景。因此从不同角度分析各个方案的特点,定量分析每种方案的作用和应用场景,将为现实场景下大模型的运用提供更有力的支撑。
总结
本篇文章对知识增强大模型的相关工作进行了调研和总结,并对其主要方法:知识编辑和检索增强进行了详细介绍和分析。此外,本篇文章还收集并展示了常用的评测基准和前沿应用,并指出了一些有前途的研究方向。文章希望希望这篇工作能让读者清楚地了解当前的进展并激发更多的工作。
进技术交流群请添加AINLP小助手微信(id: ainlp2)
请备注具体方向+所用到的相关技术点
![](https://api.allorigins.win/raw?url=https://mmbiz.qpic.cn/mmbiz_jpg/nW2ZPfuYqSJADkmZ2IX6Z23znAibuEevotDMq9iaMxiapK7jfMibiauGFkycicAJEs6x5U9SGyDJZ0S1tRed9TPNUUDQ/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1)
关于AINLP
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括LLM、预训练模型、自动生成、文本摘要、智能问答、聊天机器人、机器翻译、知识图谱、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP小助手微信(id:ainlp2),备注工作/研究方向+加群目的。
![](https://api.allorigins.win/raw?url=https://mmbiz.qpic.cn/mmbiz_jpg/nW2ZPfuYqSKABHCqVVQkVYPrM4XY1vsd0iaeuXzyJnoFc8cibd5mYb4wdA3WMQtiaPVmr0XLZHMuVibqWncibpnTSnQ/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1)
阅读至此了,分享、点赞、在看三选一吧🙏
更多AI工具,参考Github-AiBard123,国内AiBard123