LONGAGENT:优化大模型处理长文本

现有的大模型(LLMs),尽管在语言理解和复杂推理任务上取得了显著进展,但在处理这些超长文本时却常常力不从心。它们在面对超过10万令牌的文本输入时,常常会出现性能严重下降的问题,这被称为“中间丢失”现象。这一问题不仅限制了LLMs在实际应用中的有效性,也对计算资源提出了巨大的挑战。

本文将介绍一种创新的解决方案——LONGAGENT,这是由复旦大学的研究团队提出的一种基于多代理协作的方法,它成功地将语言模型的上下文窗口扩展到128k令牌,显著提升了长文本处理的能力。与传统的单模型处理方式相比,LONGAGENT通过分散任务给多个代理,不仅降低了单个模型的计算负担,还通过代理间的协作和信息共享,有效解决了长文本中的信息丢失和处理延迟问题。这一突破性进展,为长文本的高效处理和深入理解打开了新的大门,预示着在处理大规模文本数据方面的一个新时代的到来。

方法

LONGAGENT通过将长文本分割成多个小块,分配给不同的成员处理,然后由领导者协调这些成员,共同完成对长文本的深入理解和分析。在这一过程中,领导者的作用至关重要。它不仅需要理解用户的查询意图,还要组织成员之间的讨论,监督成员间的沟通,以解决由于模型幻觉导致的意见冲突,并最终汇总信息,推导出回答。这一机制有效地扩展了模型的处理能力,使其能够处理超过100k令牌的长文本,同时保持了高效的计算效率。

LONGAGENT协作方案的流程图

图1展示了LONGAGENT协作方案的工作原理。说明了LONGAGENT如何处理长文本并生成最终响应。

  1. 文本分割:输入的长文本(图左)首先被分割成若干个小块(chunks),这些文本块随后被分配给不同的成员(members)进行处理。

  2. 领导者接收指令:领导者(Leader)接收到用户指令(图右),这些指令通常是一个问题或一个需要模型执行的任务。

  3. 子问题分解:领导者将用户指令分解为最简单的子问题(sub-problems),这样做可以帮助各个成员更清晰地理解他们需要解决的具体任务。

  4. 成员讨论:领导者召集成员进行讨论,每个成员根据自己的文本块内容提供信息。这个讨论过程可能涉及多轮对话,以确保从各个成员那里收集到所有必要的信息。

  5. 解决子问题:在讨论过程中,成员们协作解决每一个子问题,领导者负责监督这个过程,并确保所有子问题都能得到妥善解答。

  6. 最终响应生成:一旦所有子问题都得到了答案,领导者将这些答案综合起来,进行推理,形成对原始用户指令的最终响应。

这个协作方案的优势在于它能够有效地利用多个代理的集体智慧来处理复杂的长文本任务,同时通过领导者的协调来解决成员之间可能存在的信息冲突,从而提高整体的回答质量和准确性。

为了构建一个能够有效处理特定长文本任务的代理团队,LONGAGENT采用了专家模型的概念。这些专家模型在特定任务上表现出色,能够提供更准确和可靠的响应。研究团队通过使用提示(prompt)或微调(fine-tuning)的方法,构建了这些专家模型。在任务开始时,领导者会根据任务描述选择合适的专家模型来实例化团队成员。

在处理用户查询时,领导者需要协调各个成员,以获取和整合相关信息。领导者会根据历史对话状态和用户查询,决定下一步的行动,这可能包括发起新一轮的对话、解决成员间的冲突,或是得出最终答案。这一协作推理过程可能涉及多轮对话,直到领导者认为已经收集到足够的信息来推导出用户查询的答案。

由于模型幻觉的存在,成员可能会提供与文档内容不符的错误答案。为了解决这一问题,LONGAGENT引入了成员间的通信机制。当领导者发现成员间存在冲突的答案时,它会识别出这些冲突,并要求相关成员共享文本块,并通过直接交互来消除幻觉性的回答。这一策略被证明是简单而有效的,大多数经历幻觉的成员在收到包含正确答案的文本块后,能够纠正它们最初的错误回答。

LongAgent工作机制的概览

图2展示了LONGAGENT如何通过分步骤的协作和推理过程,有效地处理长文本并生成准确的回答。这种多代理协作方法不仅提高了处理长文本的效率,而且通过减少单个模型处理大量信息的负担,提高了整体的准确性和可靠性。

  1. 成员选择(Step 1):领导者根据任务描述构建一个定制化的代理团队。这意味着领导者会根据特定任务的需求,选择或实例化具有相应专业能力的成员。例如,如果任务是回答基于给定段落的问题,领导者可能会选择问答(QA)专家模型作为团队成员。

  2. 协作推理(Step 2 & 3):领导者组织团队成员从文档中收集信息并解决冲突。这个过程可能涉及多个回合,领导者会持续监控对话状态,根据成员的回答和提供的证据来指导信息搜集的方向,并解决成员之间可能出现的意见不一致。

  3. 冲突解决:在收集信息的过程中,如果成员之间出现答案冲突,领导者需要识别这些冲突并采取措施解决。这可能包括让成员共享他们的文本块,以便直接比较和验证信息,从而纠正由于模型幻觉产生的错误答案。

  4. 最终响应生成(Step 4):当领导者认为已经收集到足够的信息来生成对用户查询的最终回答时,会结束讨论过程,并导出最终响应。这个响应是团队协作的结果,综合了所有成员提供的信息和证据。

LONGAGENT如何通过多代理协作和精心设计的通信机制,有效地扩展了语言模型在长文本处理上的能力。这种方法不仅提高了处理长文本的准确性,还通过分块处理降低了计算成本,为长文本的深入分析和理解提供了新的可能。

实验

为了全面评估LONGAGENT在长文本处理方面的能力,研究团队设计了一个先进的评估协议,包括了升级版的“Needle-in-a-Haystack”测试和一些合成任务。

Needle-in-a-Haystack PLUS:这个测试最初是为了评估模型处理长文本的能力而设计的。在PLUS版本中,研究者们将重点从简单的事实检索转移到了更具挑战性的问题回答任务,这可能涉及多个文档。在这个测试中,答案相关的实体已经被修改,以防止模型依赖内部知识来回答问题。

Synthetic Tasks:除了“Needle-in-a-Haystack PLUS”测试之外,研究团队还选择了两个广泛使用的长序列评估任务:长文本检索和数值比较。这些任务使用准确率(ACC)作为评估指标,便于评估模型在长序列处理方面的能力。

在实验中,LONGAGENT与几个强大的商业模型和学术方法进行了比较:

  • PI:通过位置插值扩展基于RoPE的预训练大型语言模型的上下文窗口大小。
  • YARN:一种改进的方法,用于高效扩展上下文窗口,通过直接修改PE来扩展到理论上的无限上下文长度。
  • Claude2.1:由Anthropic公司发布的Claude 2.1模型,具有200K令牌的上下文窗口,显著降低了模型幻觉的比率。
  • GPT-4 Turbo:OpenAI的GPT-4 Turbo模型提供128K的上下文窗口,能够处理超过300页的文本。

为了构建代理团队,研究团队对LLaMA2-7b-base进行了监督微调。在这个代理团队中,领导者负责协调成员完成各种任务。使用GPT-4生成了每个任务的1000条交互轨迹来训练领导者,并且手动验证了这些交互轨迹的正确性。成员的任务是根据领导者的指令处理文档。为了实现这一点,研究团队训练了问答专家、检索专家和数学专家来实例化成员。无论实例化了多少成员,它们都共享单一专家模型的参数。

在四个合成任务上的实验结果(准确率)
比较了GPT-4、Kimi-Chat、Claude2.1、YaRN、Ours-GPT3.5和Ours-LLaMA-7B模型的性能

训练数据的来源包括SQuAD训练集,以及自动合成的长文本检索和数值比较任务的数据。所有训练数据都与最终评估数据不重叠。

结果

研究结果表明,经过微调的LLaMA模型即使只有4k的上下文窗口,也能有效地处理长达128k的文本。在"Needle-in-a-Haystack PLUS"测试中,无论是单文档还是多文档设置,LONGAGENT都显示出比GPT-4更高的准确率,平均改进分别为19.53%和4.96%。

图3为单文档问题回答设置中Needle-in-a-Haystack PLUS的比较结果
使用LONGAGENT方案的经过微调的LLaMA2-7B模型与GPT-4相比,在1k到128k的范围内平均准确率提高了19.53%
图4为在多文档问题回答设置中Needle-in-a-Haystack PLUS的比较结果
使用LONGAGENT方案的经过微调的LLaMA2-7B模型与GPT-4相比,在1k到128k的范围内平均准确率提高了4.96%

研究团队分析了训练数据的配方和块大小对模型幻觉的影响。实验结果表明,增加训练数据中"拒绝"类型数据的比例可以提高模型正确拒绝回答的比例,但同时也可能轻微损害模型回答问题的能力。块大小的增加可以减轻幻觉问题,但超过一定大小后,幻觉问题会加剧。

训练数据中“Answer”和“Reject”类型数据的比例对模型幻觉现象的影响

在消融研究中通过比较引入通信机制前后模型准确率的差异,研究表明这一机制可以显著提高模型的准确率,平均改进达到18.9%。此外,随着文本长度的增加,成员数量和经历幻觉的成员数量也会增加,这使得通过解决冲突带来的准确率提升变得更加明显。

通过成员间通信机制提高的准确率。这种机制平均提高了1k到128k输入文本长度范围内的模型准确率18.9%

由于文本分块处理,LONGAGENT处理长文本的时间复杂度为O(N),处理时间几乎与文本长度成线性关系。实验结果表明,与具有二次复杂度的全注意力方法相比,LONGAGENT在处理长文本时具有显著的延迟优势,并且对内存的需求也更低。

LONGAGENT方案在处理长文本时的时间和内存效率显著优于直接对长文本执行全注意力机制

虽然ONGAGENT在长文本处理方面的巨大潜力。然而这项技术也存在局限性,如训练数据构建成本较高和对领导者推理能力的高要求。未来的研究将集中在优化代理间的协作机制,降低训练成本,并提高领导者的问题分解和成员协调能力和探索更高级的冲突解决策略和记忆增强技术。

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

项目链接:https://github.com/zuucan/NeedleInAHaystack-PLUS

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker基本使用和认识

目录 基本使用 镜像仓库 镜像操作 Docker 如何实现镜像 1) namespace 2) cgroup 3) LXC Docker常见的网络类型 bridge网络如何实现 基本使用 镜像仓库 镜像仓库登录 1)docker login 后面不指定IP地址,则默认登录到 docker hub 上 退出 2)docker logo…

互联网直播/点播技术与平台创新应用:视频推拉流EasyDSS案例分析

随着互联网技术的快速发展,直播/点播平台已成为信息传播和娱乐的重要载体。特别是在电视购物领域,互联网直播/点播平台与技术的应用,不仅为用户带来了全新的购物体验,也为商家提供了更广阔的营销渠道。传统媒体再一次切实感受到了…

嵌入式Linux系统编程 — 4.7 regcomp、regexec、regfree正则表达式函数

目录 1 为什么需要正则表达式 2 正则表达式简介 3 正则表达式规则 4 regcomp、regexec、regfree函数 4.1 函数介绍 4.2 URL格式案例 1 为什么需要正则表达式 在许多的应用程序当中, 有这样的应用场景: 给定一个字符串,检查该字符串是否…

【小学期】常用基于Swing的七个静态界面

示例1:基本的带按钮和标签的界面 import javax.swing.*; import java.awt.*;public class SimpleSwingApp1 {public static void main(String[] args) {JFrame frame new JFrame("Simple Swing App 1");frame.setDefaultCloseOperation(JFrame.EXIT_ON_C…

5个大气的wordpress付费主题

Sesko赛斯科wordpress外贸主题 适合用于重型机械设备公司建外贸官方网站的橙红色wordpress外贸主题。 https://www.jianzhanpress.com/?p5886 Polar钋啦wordpress外贸主题 制造业wordpress网站模板,适合生产制造企业官方网站使用的wordpress外贸主题。 https:/…

识图生成代码:通义千问vsGPt4o,有点小崩

今日对比一下通义千问和GPt4o,在通过识别图片然后去生成前端代码 在当今ai的时代,通过ai去生成页面的代码可以很大的提高我们的开发效率下面是我们要求的生成的图片截图,这是掘金的榜单 效果对比 首先我们使用通义千问,让他去帮我…

学校消防设施设备管理系统

建立和落实校园消防安全管理责任制,做到消防安全工作有人专管,部门和岗位有人落实的日常管理,及时发现消防安全隐患,及时反映,及时处理,杜绝校园内消防安全隐患。 凡尔码平台搭建学校消防设施设备管理系统可以通过设备管理系统对消防器材设施基本信息、设施有效期、…

[leetcode]avoid-flood-in-the-city 避免洪水泛滥

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:vector<int> avoidFlood(vector<int>& rains) {vector<int> ans(rains.size(), 1);set<int> st;unordered_map<int, int> mp;for (int i 0; i < rains.size(); i) {i…

运维锅总详解HAProxy

本文尝试从HAProxy简介、HAProxy工作流程及其与Nginx的对比对其进行详细分析&#xff1b;在本文最后&#xff0c;给出了为什么Nginx比HAProxy更受欢迎的原因。希望对您有所帮助&#xff01; HAProxy简介 HAProxy&#xff08;High Availability Proxy&#xff09;是一款广泛使…

Springboot 整合 DolphinScheduler(二):UI页面上的主要功能介绍

&#x1f4cd;当前部署情况&#xff1a;DolphinScheduler V2.0.6 已经在三台服务器上安装完毕&#xff0c;具体如下&#xff1a; 角色 服务器IP master 192.168.1.247 master 192.168.1.248 worker 192.168.1.249 &#x1f4c2; 具体搭建过程&#xff1a;Springboot 整…

绕过命令过滤器:探索UnixLinux中的Bypass技术

前言 在Unix或Linux系统的安全测试和网络防御中&#xff0c;了解如何绕过命令过滤器是非常重要的。今天&#xff0c;我们将探讨几种利用shell命令绕过安全限制的技巧&#xff0c;这些技巧常用于渗透测试中&#xff0c;以检测系统的安全漏洞。 0x00 命令介绍 一般而言&#x…

ros1仿真导航机器人 hector_mapping gmapping

仅为学习记录和一些自己的思考&#xff0c;不具有参考意义。 1 hector_mapping 建图过程 &#xff08;1&#xff09;gazebo仿真 roslaunch why_simulation why_slam.launch <launch><!-- We resume the logic in empty_world.launch, changing only the name of t…

算法-位运算基础

文章目录 前置知识1. 交换两个数2. 比较两个数的大小3. leetcode268 寻找缺失的数字4. leetcode136 只出现一次的数字5. leetcode260 只出现一次的数字|||6. leetcode137 只出现一次的数字||7. 2/3的幂8. 大于等于该数字的最小2的幂9. leetcode201 数字范围按位与10. 位运算中分…

effective java (1)(考虑使用!)静态工厂方法代替构造方法

只是目前阶段 对本书第一章内容的浅显认知&#xff0c;说实话 这一章 我看了4遍左右&#xff0c;每一遍感觉都不一样 他的创建模式 有时候像设计模式&#xff0c;但作者已经在原文中描述&#xff0c;它并不等价于 设计模式 我们正常 创建一个年级类 是长这样的 我们不写成标准…

C语言 for循环

for循环语句 //初始化 //判断 //调整 for&#xff08;表达式1; 表达式2; 表达式3;&#xff09;循环语句; 例&#xff1a; for循环里break for循环里continue 注&#xff1a;1.不可在for循环体内修改循环变量&#xff0c;防止for循环失去控制 2.建议for语句的循环控制变量的…

open-chat-video-editor:开源短视频生成和编辑工具,以及抖音|TikTok 的移动端短视频项目

open-chat-video-editor&#xff1a;开源短视频生成和编辑工具&#xff0c;以及抖音|TikTok 的移动端短视频项目。 open-chat-video-editor&#xff1a;开源短视频生成和编辑工具 简介 Open Chat Video Editor是开源的短视频生成和编辑工具&#xff0c;整体技术框架如下&…

简单科普-GPT到底是什么?

1.ChatGPT ChatGPT&#xff08;全名&#xff1a;Chat Generative Pre-trained Transformer&#xff09;&#xff0c;是OpenAI研发的一款聊天机器人程序 &#xff0c;于2022年11月30日发布 。ChatGPT是人工智能技术驱动的自然语言处理工具&#xff0c;它能够基于在预训练阶段所见…

[深度学习] Transformer

Transformer是一种深度学习模型&#xff0c;最早由Vaswani等人在2017年的论文《Attention is All You Need》中提出。它最初用于自然语言处理&#xff08;NLP&#xff09;任务&#xff0c;但其架构的灵活性使其在许多其他领域也表现出色&#xff0c;如计算机视觉、时间序列分析…

HarmonyOS Next开发学习手册——选项卡 (Tabs)

当页面信息较多时&#xff0c;为了让用户能够聚焦于当前显示的内容&#xff0c;需要对页面内容进行分类&#xff0c;提高页面空间利用率。 Tabs 组件可以在一个页面内快速实现视图内容的切换&#xff0c;一方面提升查找信息的效率&#xff0c;另一方面精简用户单次获取到的信息…

Redis Stream Redisson Stream

目录 一、Redis Stream1.1 场景1&#xff1a;多个客户端可以同时接收到消息1.1.1 XADD - 向stream添加Entry&#xff08;发消息 &#xff09;1.1.2 XREAD - 从stream中读取Entry&#xff08;收消息&#xff09;1.1.3 XRANGE - 从stream指定区间读取Entry&#xff08;收消息&…