中科大发布Agent-FLAN,微调提升Agent能力

随着大语言模型(LLMs)在各种自然语言处理任务中取得巨大成功,将这些模型作为智能代理(agents)使用时,它们与基于API的模型相比仍有不小的差距。如何将代理能力有效地整合到通用的LLMs中,成为了一个紧迫且关键的问题。

本文首先提出了三个关键观察:(1)当前的代理训练语料库与格式遵循和代理推理能力紧密纠缠,这显著偏离了其预训练数据的分布;(2)LLMs在代理任务所需能力上展现出不同的学习速度;(3)现有方法在提高代理能力时引入了幻觉问题。

分享几个网站

GPT-3.5研究测试:
https://hujiaoai.cn

GPT-4研究测试:
https://higpt4.cn

Claude-3研究测试(全面吊打GPT-4):
https://hiclaude3.com

基于这些发现,研究者们提出了Agent-FLAN方法,通过仔细地分解和重新设计训练语料库,使Llama2-7B模型在各种代理评估数据集上的表现超越了之前的最佳工作3.5%。Agent-FLAN在减轻幻觉问题方面也取得了显著进展,并且在模型规模扩大时,一致性地提高了LLMs的代理能力,同时略微增强了LLMs的通用能力

论文标题:
Agent-FLAN: Designing Data and Methods of Effective Agent Tuning for Large Language Models

论文链接:
https://arxiv.org/pdf/2403.12881.pdf

关键观察:理解Agent-FLAN研究的三大发现

1. 训练数据的格式跟随与推理能力的纠缠

研究发现,大多数代理训练数据既包含格式遵循也包含一般推理,这与模型原始的预训练领域“自然对话”有显著偏差。这导致了代理学习的不足。例如,模型可能会迅速过拟合于特定的格式,而未能充分学习训练数据中嵌入的推理能力,从而导致性能不佳。

2. 不同能力学习速度的差异性

通过将训练数据沿着基本能力明确分解,每个损失展示出不同的收敛曲线,表明LLMs在代理任务所需能力上的学习速度存在差异。例如,检索和理解相对于推理来说是更容易管理的任务,而指令遵循在学习过程中是最简单的。

3. 现有方法在改善代理能力时引入的幻觉问题

现有方法主要集中在特定的代理能力上,忽视了模型输出中幻觉效应的普遍性和重要性。幻觉在两个主要方面表现出来:

  • (1)当模型需要调用响应时,它严格遵循训练格式,忽略了用户生成的查询

  • (2)当面对诱导性问题时,模型容易被触发使用不存在的功能。这强调了需要更多关注完善代理调整机制,并建立适当的基准来评估和有效减轻代理幻觉的必要性。

Agent-FLAN方法介绍:一种新的大语言模型代理能力微调方法

Agent-FLAN(Fine-tune LANguage models for Agents)是一种新的大语言模型(LLM)代理能力微调方法,它通过对训练语料的精心分解和重新设计,使得语言模型在代理任务中的性能得到显著提升。

Agent-FLAN的核心思想是将代理训练数据中的格式遵循和通用推理分离,使得微调过程更贴近模型原始的预训练领域——自然对话。这样做可以在不过度拟合特定格式协议的情况下,提取出LLM的纯粹代理能力。

Agent-FLAN通过将代理任务进一步分解为LLM的基本能力的不同方面,如指令遵循、推理、检索和理解,提供了根据各能力不同学习速率的训练灵活性。此外,为了全面解决代理任务中的幻觉问题,Agent-FLAN构建了Agent-H基准测试,并精心策划了多样化的“负面”训练样本以有效缓解这一问题。

在各种代理评估数据集上,使用Agent-FLAN微调的Llama2-7B模型比之前的最佳工作提高了3.5%的性能。此外,Agent-FLAN在扩展模型规模时,不仅一致地提高了LLM的代理能力,而且还略微增强了LLM的通用能力。

图片

实验设置:使用Llama2系列模型进行微调

在实验中,研究者选择了Llama2系列模型作为微调的对象,并使用了7B大小的模型进行效率考虑下的消融研究。研究者根据AgentTuning(Zeng et al., 2023)建立的数据和设置构建了数据集。

具体来说,选择了一系列训练数据源作为保留任务,包括ALFWorld、WebShop、Mind2Web、Knowledge Graph、Operating System、Database和ToolBench,涵盖了一般代理和工具使用领域。保留外评估包括一系列复杂的交互任务,如复杂QA(HotpotQA)、网页浏览(WebArena)、科学实验(SciWorld)和工具使用(T-Eval)。

图片

能力分解与数据平衡:如何通过分解任务提升代理能力

根据Agent-FLAN的方法,研究者首先将格式化的数据转换为自然对话形式,然后将JSON参数通过插入多个引导语句进行分解。通过这种方式,可以明确地将代理语料库与聊天领域对齐,从而充分提升对纯粹代理能力的学习,而不会过度关注严格的格式协议。

为了保持输出各种请求格式的能力,研究者还构建了指令遵循对,要求模型以ReAct和JSON格式响应。后续实验还表明,只需少量的指令遵循数据就足以取得满意的结果。

图片

研究者通过将代理数据沿着每个任务所需的能力显式分解,包括推理、检索、理解和指令遵循,并根据模型不同能力的学习速度来平衡这些数据源。

  • 例如,当减少推理和理解数据的比例时,最终性能分别下降了1.1/0.3点,而减少检索和指令遵循的数据量对性能的影响很小,甚至有所提升。

这些发现与观察到的模型在各能力上的损失下降速度不一致的现象相吻合,这也激励研究者进一步缩小数据混合权重的搜索空间,并根据每个能力上的损失曲线大幅减少训练令牌。

图片

为了全面解决代理任务中的幻觉问题,研究者们首先建立了Agent-H基准测试,从两个方面评估LLM的幻觉问题:格式层面和行动层面

研究者从AgentInstruct和ToolBench数据集中筛选出不符合'Thought-Action-ActionInput'格式的数据,并移除了AgentInstruct中的少数示例。通过这种方式,Agent-FLAN混合了10%的ReAct格式数据和90%的对话格式数据,以获得更好的性能。

图片

幻觉问题的解决:负样本学习在减少幻觉中的作用

在代理任务中,幻觉问题是指模型生成不忠实或无意义的文本。这一问题在实际应用中尤为重要,因为它可能导致模型在不应该调用特定功能的情况下调用,或者在用户生成的查询中严格遵循训练格式,忽视了查询本身。为了解决这一问题,Agent-FLAN引入了负样本学习策略,通过精心策划多样化的负训练样本来有效缓解幻觉问题。

1. 负样本的构建

Agent-FLAN通过分析当前的代理语料库,发现训练数据通常只涵盖了正常对话和提供工具的代理任务,而忽略了其他情况。为了填补这一空白,Agent-FLAN引入了两种类型的负样本

  • 一种是没有提供工具时用户查询请求工具的情况,另一种是提供了工具时用户查询请求正常对话的情况。

这些负样本的引入,使得模型不仅学会了如何作为代理行动,还学会了何时作为代理行动。

2. 负样本学习的效果

在Agent-H基准上的实验结果表明,负样本学习策略显著减少了幻觉问题,同时保持了在T-Eval上的高性能。具体来说,Agent-FLAN在Agent-H基准上的整体得分HScore得到了显著提升,这一得分是基于两个数值指标HReAct和HGeneral的反向平均得出的,这两个指标分别衡量了模型在ReAct格式和一般格式幻觉中的表现。

实验结果与分析:Agent-FLAN在各项代理评估基准上的表现

Agent-FLAN在一系列代理评估基准上的表现超越了之前的工作,包括通用代理任务和工具使用方面。在Llama2系列模型上,Agent-FLAN比之前的最佳工作提高了3.5%的性能。

1. 代理任务的性能提升

在将训练语料库与聊天格式对齐后,Agent-FLAN在T-Eval上取得了3.1%的改进,在HotpotQA上取得了2.5%的改进。这些结果进一步验证了将训练语料库与聊天格式对齐的正确性和有效性。

2. Agent-H基准上的表现

在Agent-H基准上,Agent-FLAN相较于AgentTuning展示了更好的性能,尤其是在处理幻觉问题时。AgentTuning模型在面对无意义的工具使用时表现不佳,而Agent-FLAN能够直接给出首选的响应。

图片

规模化法则:数据和模型规模对代理调整的影响

Agent-FLAN的研究还探讨了数据和模型规模对代理调整的影响,发现规模化法则在代理领域同样适用

1. 数据规模化法则

通过将Agent-FLAN数据均匀分为25%、50%、75%和100%四个部分,研究发现仅使用25%的训练样本时,代理能力获得了最大的提升。

这表明原始的Llama-2模型在代理能力方面较弱,需要特定的训练。当进一步增加数据量时,性能仍然有所提升,但速度放缓,这表明简单地增加代理训练语料库的规模并不会显著提升模型能力。因此,丰富训练语料库的多样性或提高其质量可能是提升语言代理性能的必要途径。

2. 模型规模化法则

在Llama2的7B、13B和70B不同规模的模型上评估Agent-FLAN的方法,结果表明随着模型规模的增加,性能持续提升,没有出现饱和现象。这证明了更大的模型规模确实能够保证更好的性能。

具体来说,随着模型规模的增加,特定的代理调整相较于传统的ReAct调整带来了稳定的性能提升。这表明更大的模型已经具备了代理任务所需的基本能力,如推理和检索,因此,以适当的方式利用一定量的代理调整语料库来激发代理能力更为重要。

图片

一般能力与代理能力的关系:特定调整如何影响模型的一般能力

在探讨一般能力与代理能力的关系时,首先需要理解这两种能力的区别。

  • 一般能力指的是LLMs在广泛的自然语言处理任务中表现出的能力,如语言理解、生成和推理。

  • 代理能力则是指LLMs在执行特定代理任务时的能力,例如环境感知、决策制定和行动执行。

1. 代理训练数据的特殊性

代理训练数据通常与格式遵循和一般推理能力交织在一起,这与模型原始的预训练领域——自然对话——有显著偏差。这种偏差导致了代理学习的不足。例如,模型可能会过快地适应固定的格式,如ReAct或JSON,而忽视了训练数据中的推理能力,从而导致性能不佳。

2. 学习速度的差异

通过将训练数据沿着基本能力方面明确地分解,每个损失都表现出不同的收敛曲线,表明LLMs在代理任务所需能力上的学习速度不同。例如,检索和理解任务相对更容易学习,而指令遵循则是学习过程中最简单的。

3. 负面训练样本的引入

为了解决代理任务中的幻觉问题,Agent-FLAN引入了负面训练样本。这些样本覆盖了各种条件,例如没有提供工具时用户查询请求工具,或者提供了工具时用户查询请求普通对话。通过明确的监督,模型学习不仅如何而且何时扮演代理的角色。

图片

综上所述,特定的调整可以显著影响模型的一般能力。通过将代理训练数据与自然对话对齐,Agent-FLAN能够在不过分专注于严格的格式协议的情况下,充分提升LLMs的纯粹代理能力。

此外,通过对代理任务进行不同能力的分解和数据平衡,Agent-FLAN根据模型各自能力的不同学习速度提供了训练的灵活性。

最后,通过负面样本学习策略,Agent-FLAN有效地减轻了幻觉问题,同时保持了在代理评估基准上的高性能。

图片

结论:总结Agent-FLAN的贡献和对未来研究的启示

Agent-FLAN的提出和实施,标志着在整合有效代理能力到一般大语言模型(LLMs)方面迈出了重要的一步。Agent-FLAN通过精心分解和重新设计训练语料库,使得Llama2-7B在各种代理评估数据集上的表现超越了之前最好的工作,提升了3.5%。

此外,Agent-FLAN在解决幻觉问题方面也取得了显著进展,这得益于研究者建立的评估基准和精心策划的多样化“负面”训练样本。

Agent-FLAN的研究不仅提供了对当前代理调整领域的关键见解,而且还展示了在数据和方法设计上的三个关键改进

  • 将代理调整与预训练领域对齐、能力分解与数据平衡以及为幻觉问题引入负面样本学习。

这些改进为未来在代理领域的研究提供了新的方向和启示,特别是在处理幻觉问题和提升代理能力方面。

限制与伦理考量:研究的局限性和伦理问题讨论

1. 研究局限性

尽管Agent-FLAN在构建代理训练语料库方面取得了显著成果,但本研究仍存在一些局限性。

  • 首先,训练和验证数据集只涵盖了部分代理任务,还有许多其他的交互场景尚未探索。未来的研究将致力于将Agent-FLAN应用于更广泛的基准测试。

  • 其次,为了保持训练数据的质量,研究者只从ToolBench中选择了大约20,000个有效样本,这只是整个数据集的10%。未来的工作可以考虑充分利用这些数据来进一步提升模型的性能。

2. 伦理考量

在实验中,研究者使用了公开可用的参考文档/API,有效地避免了对个人或群体可能造成的任何伤害。由LLMs生成的数据经过人工精心选择和处理,以确保隐私和保密性。没有涉及个人身份信息,所有数据在分析前都已匿名处理。此外,研究者还使用ChatGPT和Grammarly来润色文章,以确保写作的质量。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

单片机为什么还在用C语言编程?

单片机产品的成本是非常敏感的。因此对于单片机开发来说,最重要的是在极其有限的ROM和RAM中实现最多产品的功能。或者反过来说,实现相同的产品功能,所需要的ROM和RAM越小越好,在开始前我有一些资料,是我根据网友给的问…

C++ 【原型模式】

简单介绍 原型模式是一种创建型设计模式 | 它使你能够复制已有对象,客户端不需要知道要复制的对象是哪个类的实例,只需通过原型工厂获取该对象的副本。 以后需要更改具体的类或添加新的原型类,客户端代码无需改变,只需修改原型工…

Linux(CentOS7)部署 y-api 接口管理平台

目录 前言 前置环境 mongodb node 安装 y-api 部署页面 启动 y-api 基本使用教程 前言 前后端分离时代,前后端通过接口文档来协作开发项目。一般开发过程中,由后端先编写接口文档,然后交付给前端,这时候前后端都根据这个…

C# 委托的基础应用

一、Action 和 Func 的使用。 二、自定义委托: 完整的使用代码示例: 三、委托的一般使用 模板方法: 回调方法,在模板方法的基础上进行添加。

刷题之Leetcode209题(超级详细)

209.长度最小的子数组 力扣题目链接(opens new window)https://leetcode.cn/problems/minimum-size-subarray-sum/ 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条…

EPSON高精度导航陀螺仪XV7001BB

随着道路交通的不断发展,以及城市道路的不断更新,以前走过的路早已物是人非,越来越多的驾驶者不得不借助导航系统才能到达目的地,导航成为了出行必不可少的功能。目前的导航都是基于GPS信号定位,再结合导航内部的地图软…

基于javaJSPssm实现的交通档案管理系统

开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclip…

ThreadLocal核心源码阅读

1. 概述 ThreadLocal为每个使用该变量的线程提供独立的变量副本&#xff0c;因此每一个线程都可以独立地改变自己的副本&#xff0c;而不会影响其他线程。 入门例子&#xff1a; public class ThreadLocalStudy {static ThreadLocal<String> stringThreadLocal new T…

C语言:顺序表专题

目录 一、数据结构之顺序表/链表1.数据结构相关概念1.1什么是数据结构1.2为什么需要数据结构 二、顺序表1.顺序表的概念及结构2.顺序表分类3.动态顺序表的实现 一、数据结构之顺序表/链表 1.数据结构相关概念 1.1什么是数据结构 数据结构是由“数据”和“结构”两词组合而来…

医学图像处理 利用pytorch实现的可用于反传的Radon变换和逆变换

医学图像处理 利用pytorch实现的可用于反传的Radon变换和逆变换 前言代码实现思路实验结果 前言 Computed Tomography&#xff08;CT&#xff0c;计算机断层成像&#xff09;技术作为如今医学中重要的辅助诊断手段&#xff0c;也是医学图像研究的重要主题。如今&#xff0c;随…

Python-VBA函数基础知识-001

一、函数的定义&#xff1a; 函数(Function)是一段可重复使用的代码块&#xff0c;用于执行特定的任务或计算&#xff0c;并可以接受输入参数和返回输出结果。函数可以将复杂的问题分解为更小的子问题&#xff0c;提高代码的可读性和可维护性。 二、函数的组成&#xff1a; 在…

基于单片机电子指南针系统设计

**单片机设计介绍&#xff0c;基于单片机电子指南针系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机电子指南针系统设计概要主要涵盖了硬件设计、软件设计、磁场传感器选择、数据处理和显示等方面。以下是对该…

记某客户的一次无缝数据迁移

背景 客户需要将 Elasticsearch 集群无缝迁移到移动云&#xff0c;迁移过程要保证业务的最小停机时间。 实现方式 通过采用成熟的 INFINI 网关来进行数据的双写&#xff0c;在集群的切换恢复过程中来记录数据变更&#xff0c;待全量数据恢复之后再追平后面增量数据&#xff…

C++从入门到精通——类的作用域及类的实例化

类的作用域及类的实例化 前言一、类的作用域二、类的实例化引例类是对对象进行描述的示例 一个类可以实例化出多个对象示例 示例 前言 类的作用域是指类中定义的变量和方法的可见性和可访问性范围。在类的内部&#xff0c;所有成员&#xff08;包括属性和方法&#xff09;都具…

快速理解JS中的原型和原型链

快速理解JS中的原型和原型链 在我们学习JS的过程中&#xff0c;我们总会接触到一些词&#xff1a;“原型”&#xff0c;“原型链”。那么今天我就来带大家来学习学习原型和原型链的知识吧&#xff01; 在开始之前&#xff0c;我们明确一下我们接下来想要学习的目标&#xff1a…

【机器学习】K-means聚类算法:原理、应用与优化

一、引言 1、简述聚类分析的重要性及其在机器学习中的应用 聚类分析&#xff0c;作为机器学习领域中的一种无监督学习方法&#xff0c;在数据探索与知识发现过程中扮演着举足轻重的角色。它能够在没有先验知识或标签信息的情况下&#xff0c;通过挖掘数据中的内在结构和规律&a…

使用Springfox Swagger实现API自动生成单元测试

目录 第一步&#xff1a;在pom.xml中添加依赖 第二步&#xff1a;加入以下代码&#xff0c;并作出适当修改 第三步&#xff1a;在application.yaml中添加 第四步&#xff1a;添加注解 第五步&#xff1a;运行成功之后&#xff0c;访问相应网址 另外&#xff1a;还可以导出…

ES学习日记(七)-------Kibana安装和简易使用

前言 首先明确一点&#xff0c;Kibana是一个软件&#xff0c;不是插件。 Kibana 是一款开源的数据分析和可视化平台&#xff0c;它是 Elastic stack 成员之一&#xff0c;设计用于和Elasticsearch 协作。您可以使用 Kibana 对 Elasticsearch 索引中的数据进行搜索&#xff0c;…

python文件打包找不到文件路径

引用&#xff1a;【将Python代码打包成exe可执行文件】 https://www.bilibili.com/video/BV1P24y1o7FY/?p4&share_sourcecopy_web&vd_sourced5811f31a0635dfc69a182c7bf1adb8b 在代码中&#xff0c;我们想读取文件a&#xff0c;一般使用如下方法。 import osdir os…

Spring Boot Mockito (三)

Spring Boot Mockito (三) 这篇文章主要是讲解Spring boot 与 Mockito 集成测试。 前期项目配置及依赖可以查看 Spring Boot Mockito (二) - DataJpaTest Spring Boot Mockito (一) - WebMvcTest Tag("Integration") SpringBootTest // TestMethodOrder(MethodOr…