检索增强型语言模型——更可靠、可适应、可归因的下一代语言模型

news2024/11/15 13:44:50

人工智能咨询培训老师叶梓 转载标明出处

传统的参数化语言模型通过大规模的网络数据训练,虽然具备一定的灵活性和能力,但它们在处理具体任务时存在以下主要问题:

  1. 事实错误:模型可能会产生与事实不符的信息,即“幻觉”。
  2. 验证困难:模型生成的内容难以追溯和验证。
  3. 数据选择性退出难题:难以从模型中排除特定数据序列。
  4. 适应性成本高:模型难以适应新的数据分布,且需要昂贵的计算资源进行调整。
  5. 模型规模过大:模型的规模庞大,导致计算成本高,且难以部署。

Akari Asai、Zexuan Zhong、Danqi Chen 等研究者提倡使用检索增强型语言模型。这类模型在推理过程中整合了大规模的数据存储库,通过检索来增强模型的性能,

图 1 描述了参数化语言模型 和检索增强型语言模型在处理输入时的不同之处。参数化LMs在训练时将大量文本数据内化到模型参数中,而检索增强型LMs在测试时从大规模数据存储中检索文本。 

论文链接:https://arxiv.org/abs/2403.03187

检索增强型LMs的有效性

检索增强型语言模型由两个关键组件构成:检索器 R 和参数化语言模型 θ。检索器基于数据存储库 D 中的文档构建搜索索引 I。在推理时,给定输入序列 x,检索器利用索引 I 找到相关的文本。然后,语言模型 θ 使用原始提示和检索到的文本来预测输出

图2 为检索增强型LMs的架构分类,这些架构基于三个轴:检索文本的单位(z 的粒度)、如何整合检索(z 的整合方式),以及检索的频率。

输入增强(Input augmentation):将检索结果 z 与原始输入 x 结合,在语言模型的输入空间中进行标准推断。

中间融合(Intermediate fusion):通过新的注意力机制,将预先编码的文本块独立于查询 x 同时整合到中间层。

输出插值(Output interpolation):直接操作输出的token分布,而不是让语言模型从其词汇表中生成续篇。

检索增强型语言模型(retrieval-augmented LMs)的有效性,主要体现在以下几个方面:

减少长尾知识中的事实错误。长尾知识指的是那些在训练数据中出现频率较低,但在实际应用中可能非常重要的信息。传统的参数化语言模型可能会在这些知识上产生错误或“幻觉”,因为它们主要依赖于训练数据中的统计规律。而检索增强型LMs通过检索补充这些长尾知识,从而显著降低了这类错误,提高了输出的事实准确性。

更好的归因。在检索增强型LMs中,检索到的文本(z)在模型生成输出时起到了直接的作用。这不仅提高了输出的准确性,还为模型的输出提供了可追溯性。实践者可以通过检查检索到的文本,手动或自动地验证模型输出的正确性,这在以往的参数化模型中是很难做到的。

灵活选择序列。检索增强型LMs允许对数据存储库进行动态更新,这意味着可以灵活地选择或排除特定的数据序列。这种灵活性对于处理隐私敏感或版权受限的数据尤为重要。通过改进的归因和数据存储库的更新,检索增强型LMs能够更好地适应不同的应用需求。

适应性和定制性。检索增强型LMs通过分离和可交换的数据存储库知识源,提供了更好的定制能力。这使得模型能够针对特定的领域、应用场景或时间戳进行优化,而无需进行额外的训练。这种能力对于需要快速适应新领域的应用来说是非常有价值的。

参数效率。检索增强型LMs通过利用外部数据存储库来减轻模型参数的记忆负担,从而在参数使用上更加高效。这意味着即使模型的参数数量较少,也能够通过检索来弥补知识的不足,从而在某些任务上超越参数数量更多的传统模型。

想要掌握如何将大模型的力量发挥到极致吗?叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具。9月22日晚,实战专家1小时讲解让您轻松上手,学习如何使用 Llama Factory 微调模型。

加助理微信提供直播链接:amliy007,29.9元即可参加线上直播分享,叶老师亲自指导,互动沟通,全面掌握Llama Factory,关注享粉丝福利,限时免费CSDN听直播后的录播讲解。
 

LLaMA Factory 支持多种预训练模型和微调算法。它提供灵活的运算精度和优化算法选择,以及丰富的实验监控工具。开源特性和社区支持使其易于使用,适合各类用户快速提升模型性能。

检索增强型LMs尚未广泛采用的原因

检索增强型语言模型虽然在实验中展示了潜力,但与参数化语言模型相比,它们的广泛采用仍然受限。简要回顾检索增强型LMs,包括架构(图2)、训练和数据存储:

架构方面,检索增强型LMs具有多种架构,这些架构基于三个主要维度:检索文本的单位(z的粒度)、如何整合检索到模型中(z的整合方式),以及检索的频率。这些架构可以分为三组:输入增强、中间融合和输出插值。输入增强通过将检索结果z添加到原始输入x的输入空间中,并运行标准的语言模型推断。这种方法允许灵活地插入不同的检索和语言模型组件。然而,这种方法的一个显著瓶颈是冗余和效率低下;在输入空间中一起编码许多文档会导致上下文长度窗口限制,并指数级增加推理成本。

表 1列出了基于架构和训练分类的不同检索增强型LMs,展示了它们在检索粒度、整合方式、训练方法等方面的多样性。 

训练方面,检索增强型LMs由索引I、检索器R(即生成输入和文档编码的模型)和语言模型θ三个主要组件构成。如何有效地同时更新这些组件以优化整个流程是一个挑战。目前有两种训练范式:独立或顺序训练和联合训练。独立训练涉及检索器和语言模型的独立开发,在训练期间没有直接交互。而联合训练则同时训练语言模型和检索组件,以进一步优化它们的交互和端到端的检索增强型LMs流程。

应用和数据存储方面,检索增强型LMs已在各种自然语言处理(NLP)任务中证明有效,尤其是在知识密集型任务中。然而,它们的应用通常依赖于大规模的数据存储库,这些存储库的设计和构建是检索增强型LMs的一个关键挑战。一些工作使用与训练数据相同的语料库,而其他工作则使用较小的、通用领域的语料库,例如维基百科。此外,为特定任务策划高质量、领域专注的语料库也很重要。

当前检索增强型LMs的限制,尽管在知识密集型任务上取得了成功,但在更广泛的应用中,它们受到限制。例如,检索增强型LMs在推理任务上只取得了边际收益,这可以归因于检索和语言模型组件的弱点。另外检索器和语言模型之间的交互有限,常见的方法如RAG,通常只是将检索结果附加到预训练的参数化语言模型的输入上,缺乏检索和语言模型组件之间的紧密交互。这种缺陷放大了诸如不支持的生成或易受不相关上下文影响的问题。另外输入增强增加了语言模型的上下文长度,导致推理成本指数级增加。

表2总结了当前检索增强型LMs的现状和未来的发展方向,包括检索器和数据存储的限制、检索器与LM之间的交互限制,以及缺乏专门针对检索增强型LMs的基础设施。 

如何进一步推进检索增强型?

重新思考检索和数据存储

作者们强调了超越语义和词汇相似性的重要性,以扩展检索增强型LMs在传统知识中心任务之外的应用。这需要对输入查询和数据存储中文档的“相关性”进行新的定义。例如,某些任务中的有信息文本可能与输入查询在语义或词汇上并不相似。少量的上下文学习示例或甚至是未标记的文本可以提升模型在推理或语言理解任务上的性能。然而,什么使得某些文档有帮助(例如,潜在的推理模式或写作风格)仍然是一个未解决的问题。更好地理解有帮助文档的特征可能会释放检索增强型LMs的潜力。

作者们建议重新考虑和改进数据存储。对于更广泛的下游应用或更专业的领域任务,过分依赖单一的通用领域语料库(如维基百科)可能会限制检索增强型LMs的能力。数据存储的策划和组合对最终性能有显著影响。尽管有关好的语言模型预训练数据的文献很丰富,但关于应将哪些数据放入数据存储的研究还相对较少。

加强检索器-LMs交互

作者们提出了超越输入增强的新架构,例如输出插值或中间融合。尽管新架构获得了一定的成功,但与大规模预训练的参数化LMs相比,它们的训练和模型规模通常较小,因为预训练的计算成本很高。另外采用较小粒度检索的方法(如前所述)在扩展方面面临重大挑战。

作者们建议在LMs预训练期间引入检索,这已被证明是有效的,但通常需要额外的显著训练成本或对标准LM架构进行非平凡的修改。已经证实检索相似的文本块和重新排序预训练语料库可以增强LMs对长序列进行推理或执行多样化任务的检索增强的能力。

在预训练之后进行进一步的适应也是一个有前景的途径。尽管显著的架构修改或预训练需要大量的计算,但在资源受限的环境中,探索预训练后的检索增强型LMs的适应是一个有前景的途径。最近的研究证明了在不增加额外成本的情况下,通过额外的组件过滤掉不相关的上下文或指导LM学习区分的前景。

作者们认为对检索增强型LMs进行高效的端到端训练非常重要。检索错误通常是检索增强型LMs中的突出问题。与其单独优化LM组件,不如联合优化检索器组件。在许多下游任务中,没有监督标签可用于训练检索系统。研究无需监督的有效训练策略对于使检索增强型LMs能够应用于更广泛的任务至关重要。

构建更好的系统和基础设施以实现扩展和适应

来自系统和算法等跨学科领域的重大努力和专业知识将使从业者能够利用大规模数据集。例如,探索用于数十亿文本嵌入的压缩和量化算法是一个重要领域。开源工具包如FAISS可以加速这方面的进展。数据存储扩展的另一个瓶颈是存储数百万或数十亿编码文档的要求,以及如何在推理期间有效地加载它们。

目前我们仍然缺乏标准化的检索增强型LM管道实现和能够灵活适应各种架构和训练配置的评估基准。开源已经促进了参数化LMs的快速发展。

检索增强型语言模型作为下一代语言模型,有望在多个领域和任务中发挥重要作用。通过改进架构、训练方法和基础设施,这些模型将能够更广泛地被采用,以构建更可靠、可适应、可归因的智能系统。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2103122.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenCV从入门到精通——角点特征点提取匹配算法实战

harris角点 角点可以是两个边缘的角点;角点是邻域内具有两个主方向的特征点;角点通常被定义为两条边的交点,更严格的说,角点的局部邻域应该具有两个不同区域的不同方向的边界。或者说,角点就是多条轮廓线之间的交点。…

完善补环境框架 bx_et 分析

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 有相关问题请第一时间头像私信联系我…

win10 +git配置+学习笔记

git简介:git是一个分布式版本控制软件,用于有效、高速地处理从小到大的项目版本管理。 安装git:从官网Git (git-scm.com)下载安装包 配置git: git config --global user.name "Your Name" git config --global user.e…

Android 11 (R)AMS Activity内部机制

一、AMS是如何被管理的 如我们在Android 11(R)启动流程中介绍的一样,AMS和ATMS是在SystemServer中被启动的 ActivityTaskManagerService atm mSystemServiceManager.startService(ActivityTaskManagerService.Lifecycle.class).getService(); mActivityManagerSe…

10、Django Admin修改标题

admin from django.contrib import admin from .models import Category, Origin, Hero, Villain # 添加以下代码 admin.site.site_header "系统管理" admin.site.site_title "管理员界面" admin.site.index_title "欢迎来到这里&#xff…

嵌入式:Keil调试时,Memory窗口的更新时机

相关阅读嵌入式https://blog.csdn.net/weixin_45791458/category_12768532.html?spm1001.2014.3001.5482 在Keil中调试程序时,Memory窗口是一个很有用的工具(它们由调试器厂商提供并嵌入IDE),可以实时显示存储器中的数据值&#…

gcc编译与Linux下的库

gcc与g编译 GCC:GCC是一个由GNU项目开发的多平台编译器,最初是为C语言设计的编译器,但随着时间的发展,它已经扩展到支持多种编程语言。它支持多种编程语言,包括C、C、Objective-C、Fortran、Ada和Go等。GCC是自由软件&…

linux文件的拓展属性

一、概述 文件的扩展属性(EA) 即以名称-值对形式将任意元数据与文件 i 节点关联 起来的技术。 2. EA 可用于实现访问列表(第 17 章)和文件能力(第 39 章)。 二、EA 命名空间 EA 的命名格式为 namespace…

C++重载实现Mystring

#include<iostream> #include<cstring> //可以使用string类 #include<string> //#include <string.h>using namespace std;class Mystring {public:Mystring():str(nullptr), len(0){}Mystring(const char *const str1){if (str1){len s…

Datawhale X 李宏毅苹果书AI夏令营 学习笔记

学习日志 日期&#xff1a; 2024年9月3日 今日学习内容&#xff1a; 今天&#xff0c;我深入学习了深度学习中的几种重要概念&#xff0c;包括优化算法、特征归一化、以及批量归一化的原理和应用。这次学习的内容涵盖了从基础的梯度下降法到更高级的优化技术&#xff0c;同时…

【Linux系统编程】TCP实现--socket

使用套接字socket实现服务器和客户端之间的TCP通信。 流程如下&#xff1a; 实现代码&#xff1a; /* server.c */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <arpa/inet.h> #include <s…

分类预测|基于麻雀优化正则化极限学习机的数据分类预测Matlab程序SSA-RELM 多特征输入多类别输出

分类预测|基于麻雀优化正则化极限学习机的数据分类预测Matlab程序SSA-RELM 多特征输入多类别输出 文章目录 一、基本原理1. 数据准备2. RELM模型建立3. SSA优化RELM参数4. 模型训练5. 模型评估6. 结果分析与应用原理总结 二、实验结果三、核心代码四、代码获取五、总结 分类预测…

在Ubuntu上运行QtCreator相关程序

背景&#xff1a;希望尝试在Linux系统上跑一下使用QtCreator相关的程序&#xff0c;因为有一些工作岗位要求有Linux上使用Qt的经验。 (1)我是把Windows上的程序移过来的&#xff0c;Windows上文件名称是不区分大小写的。 而Ubuntu上是区分的 所以一部分头文件需要进行修改&am…

大数据Flink(一百一十二):Flink SQL作业快速入门

文章目录 Flink SQL作业快速入门 一、进入Flink开发平台 二、​​​​​​​创建作业 三、​​​​​​​​​​​​​​编写作业代码 四、​​​​​​​​​​​​​​进行更多配置 五、​​​​​​​​​​​​​​进行深度检查 六、​​​​​​​​​​​​​​进…

AWS SES服务 Golang接入教程(排坑版)

因为刚来看的时候 也迷迷糊糊的 所以 先讲概念 再上代码 一 基础设置 这里需要完成两个最基础的设置任务 1 是验证至少一个收件电子邮箱 2 【很关键】是验证发送域。即身份里的域类型的身份。&#xff08;可以理解为配置你的域名邮箱服务器&#xff08;SMPT&#xff09;为亚马…

PMP–一、二、三模、冲刺、必刷–分类–14.敏捷–技巧--累积流图

文章目录 技巧一模二模三模14.敏捷–敏捷团队的衡量结果–累积流图&#xff1a;1、 敏捷项目的项目经理担心团队在最近的迭代中失去了动力。项目经理应该使用哪两种工具来分析团队绩效&#xff1f;&#xff08;选择两个&#xff09; 冲刺必刷7.成本管理--挣值分析燃尽图仅能了解…

Trm理论 3(ELMo)

LSTM模型 如图&#xff0c;LSTM模型是rnn模型的改良版&#xff0c;通过ft来选择性的保留上一次得到的信息 ELMo模型&#xff08;双向LSTM&#xff09; ELMo模型是对word2vec的改良&#xff0c;改良了word2vec的二义性 对比上下两图&#xff0c;可以发现&#xff0c;WE对预测…

基于约束大于规范的想法,封装缓存组件

架构&#xff1f;何谓架构&#xff1f;好像并没有一个准确的概念。以前我觉得架构就是搭出一套完美的框架&#xff0c;可以让其他开发人员减少不必要的代码开发量&#xff1b;可以完美地实现高内聚低耦合的准则;可以尽可能地实现用最少的硬件资源&#xff0c;实现最高的程序效率…

Linux文件【系统调用接口及进程中对打开文件的管理操作】详细讲解

目录 一、open函数 1.介绍 2.open函数返回值 二、重定向 1.文件描述符的分配规则 2.重定向的本质 3.dup2系统调用 三、C语言库函数中的缓冲区及不同刷新模式 前言&#xff1a; 我们先来简单回顾一下C语言中的文件相关知识 ● 打开文件的方式 r …

数图亮相第三届中国区域零售创新峰会:共绘零售新蓝图,携手迈向新征程

8月31日&#xff0c;备受瞩目的第三届中国区域零售创新峰会在历史悠久的湖北襄阳圆满落下帷幕。在这场零售行业的盛会上&#xff0c;数图信息科技作为重要参会企业&#xff0c;积极参与其中&#xff0c;与众多行业精英共聚一堂&#xff0c;共同擘画零售业的宏伟蓝图。以下是本次…