语言模型微调:提升语言Agent性能的新方向

news/2024/10/28 21:43:53/

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

大多数语言Agent依赖于少量样本提示技术(few-shot prompting)和现成的语言模型。这些模型在作为Agent使用时,如生成动作或自我评估,通常表现不佳,且鲁棒性差。

论文《FIREACT: TOWARD LANGUAGE AGENT FINE-TUNING》中主张为了提高语言Agent的性能,应当对语言模型进行微调(fine-tuning),而不是仅仅依赖于少量样本提示。论文提出了FireAct方法,它通过从多个任务和提示方法中生成的轨迹来微调语言模型。这些轨迹被统一在ReAct格式下,以便于微调过程。

方法

FireAct方法是一种针对语言Agent进行微调的新方法。FireAct方法的核心思想是通过将多种任务和提示方法生成的多样化ReAct轨迹用于微调较小的语言模型(LM),以此来提高语言代理的性能和鲁棒性。

如图5所示,由多个“思考-行动-观察”循环构成。在此过程中,语言模型(LM)会生成自由形式的“思考”,以完成多种任务,例如从观察中提取信息、提出和调整行动计划、追踪任务进度。同时,模型会执行结构化的“行动”,与环境(工具)进行互动,并接收“观察”反馈。ReAct方法通过推理指导行动,行动支持推理,从而超越了单一推理或行动的基线方法。

FireAct方法借鉴了ReAct的轨迹生成方式,利用少量样本提示一个强大的LM来产生多样化的ReAct轨迹,用于微调一个较小的LM。与之前的工作不同,FireAct明确地通过结合多个训练任务和提示方法来促进数据多样性。

图2展示了 FireAct 方法的两个阶段:微调阶段和推理阶段。

(a) 微调阶段: 在微调过程中,一个大型语言模型(例如,GPT-4)根据不同数据集的问题和不同方法的提示生成任务解决轨迹。然后,成功的轨迹被转换成ReAct格式,用于微调一个较小的语言模型。这个过程利用了大型模型的生成能力来创建多样化的训练数据,这些数据随后被用来训练和优化一个更小、更高效的模型。

(b) 推理阶段: 在推理阶段,微调后的模型可以不依赖于少量样本提示(few-shot prompting)独立运作。它能够隐式地选择一个合适的提示方法来完成具有灵活长度的ReAct轨迹,以适应不同复杂性的问题。例如,对于一个简单的问题,可能只需要一个思考-行动-观察循环就能解决,而无需使用任何工具。这展示了微调模型在处理问题时的灵活性和自适应性,能够根据问题的具体情况选择最合适的解决策略。

CoT方法通过生成中间推理来连接问题与答案之间的差距。每个CoT轨迹可以转换为一个简单的一轮ReAct轨迹,其中“思考”是中间推理,“行动”则是返回答案。CoT对于不需要工具的简单问题特别有用,如图2(b)所示。

Reflexion方法在遵循ReAct轨迹的同时,还加入了额外的反馈和自我反思。在本项工作中,研究者在第6和第10个ReAct轮次提示进行反思,以便在解决当前任务时能够调整策略,例如“电影搜索至今无帮助,我现在应该搜索导演”。

在推理过程中,FireAct代理减少了对少量样本提示的需求,这使得推理过程更加高效和方便。FireAct代理还能够根据任务的复杂性隐式选择适合的方法,并显示出比提示更强的泛化和鲁棒性,这是由于它通过更广泛的多样化学习支持获得的。

通过这种方法,FireAct不仅提升了语言Agent的灵活性和效率,还通过多样化的微调数据增强了Agent对各种任务的适应能力和鲁棒性。这种综合性的方法为未来语言Agent的发展和应用提供了新的可能性。

想要掌握如何将大模型的力量发挥到极致吗?2024年10月26日叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具。

留言“参加”即可来叶老师的直播间互动,1小时讲解让您轻松上手,学习如何使用 Llama Factory 微调模型。互动交流,畅谈工作中遇到的实际问题。

实验

研究者选择了四个成熟的QA数据集进行训练和测试:

  • HotpotQA:一个挑战多步推理和知识检索的数据集,答案通常是短实体或yes/no。
  • Bamboogle:一个包含125个多跳问题的测试集,这些问题的格式与HotpotQA相似,但精心设计以避免直接通过谷歌搜索解决。
  • StrategyQA:一个需要隐式推理步骤的yes/no QA数据集。
  • MMLU:涵盖57个多选QA任务,涉及小学数学、历史和计算机科学等多个领域。

为了构建一个谷歌搜索工具,研究者使用了SerpAPI,这个工具返回“答案框”、“答案片段”、“高亮词”或“第一个结果片段”中的第一个存在项,确保响应简短且相关。

研究者调查了三个系列的语言模型

  • OpenAI GPT:使用GPT-4生成所有微调数据,并使用GPT-3.5进行微调和提示。
  • Llama-2:在“聊天”模式下具有7B和13B参数。
  • CodeLlama:在“指导”模式下具有7B、13B和34B参数,有助于进一步理解模型规模和代码微调对于Agent任务的重要性。

微调方法主要使用低秩适应(LoRA)进行微调实验,但也进行了全模型微调以进行比较。

实验被分为三个部分,复杂性逐渐增加:

  1. 使用单一提示方法对单一任务进行微调。
  2. 使用多种方法对单一任务进行微调。
  3. 使用多种方法对多个任务进行微调。

单一任务、单一方法微调

简单且受控的设置能够确认微调相对于提示的各种好处(性能、效率、鲁棒性、泛化能力),并研究不同LMs、数据规模和微调方法的效果。

表1 展示了提示结果,其中GPT-4和GPT-3.5在不同提示方法下的性能表现不同。

表2 显示了提示与微调的对比,包括绝对和相对提升。微调显著提高了Agent的性能,即使是强大的LMs,如GPT-3.5,性能也提高了25%。另外CodeLlama-7B的表现优于Llama-2-7B,而CodeLlama-13B的表现不如Llama-2-13B,这表明编码微调并不总是对Agent用例有益。

微调的Agent在推理期间更便宜、更快。因为微调的LMs不需要少量样本的上下文示例,它们的推理变得更高效。

研究者考虑了语言Agent与不总是可信的工具或环境交互时的鲁棒性。例如,搜索API有0.5的概率返回“无”或随机搜索响应,研究者询问语言Agent是否仍能稳健回答问题。

表3 比较了微调与提示的GPT-3.5在成本、鲁棒性和泛化方面的性能。微调的Agent在面对“无”或随机搜索响应时,能够更稳健地回答问题。

对于Llama-2-7B,全模型微调(30.2 EM)比LoRA微调(26.2 EM)高出15.3%。

图3显示了FireAct性能如何随着微调轨迹数量的增加而扩展。GPT-3.5表现出非常高的样本效率,只需要100个样本就能达到大约35的EM,而且200个样本之后的增益是边际的。

多方法微调

研究者探讨了将CoT(Chain of Thought)和Reflexion与ReAct结合进行多方法微调的效果。他们通过GPT-4生成了500个少量样本提示轨迹,并使用了47个包含自我反思的长Reflexion轨迹,以及187个成功的CoT轨迹,这些CoT轨迹被重新格式化为单轮ReAct轨迹,并添加到现有的500个ReAct轨迹之上。

研究者通过图5(前面)中的两个示例问题展示了多方法FireAct微调的好处。对于第一个问题(a),仅使用ReAct微调的Agent(a1)搜索了一个过于复杂的查询,导致分心和错误答案。相比之下,同时使用CoT和ReAct微调的Agent选择在一轮内解决问题,依靠自信的内部知识。对于第二个问题(b),仅使用ReAct微调的Agent(b1)不断搜索没有有用信息的查询。相比之下,同时使用Reflexion和ReAct微调的Agent反思了这个问题,并调整了搜索策略,将时间限制改为“在他的统治期间”,从而得出正确答案。这种根据不同问题隐式选择合适的方法的灵活性是微调相对于提示的另一个关键优势。

尽管直观上有益,图4显示混合更多方法并不总是提高结果,最佳方法组合取决于基础LM。例如,对于GPT-3.5和Llama-2模型,ReAct+CoT优于ReAct,但对CodeLlama模型则不利。ReAct+CoT+Reflexion对于CodeLlama7/13B是最差的,但对于CodeLlama-34B是最好的。这些非平凡的结果需要进一步研究基础LMs和微调数据之间的交互。

表4显示了基于GPT-3.5的各种FireActAgent在HotpotQA测试结果,以及它们轨迹中ReAct轮数的平均值(µ)和标准差(σ)。与仅使用ReAct微调相比,ReAct+CoT提高了EM并减少了轨迹长度,而ReAct+Reflexion降低了EM并增加了轨迹长度。这表明两种方法组合将方法选择推向了两个不同的方向,CoT可能对HotpotQA问题更有帮助。为了更好地理解多方法Agent是否能够选择合适的方法,研究者计算了在推理过程中随机选择方法的结果。结果是32.4,远低于所有多方法Agent,表明方法选择并非微不足道。但是,为每个实例应用最佳方法将导致“预言者”结果为52.0,这表明改进提示方法选择还有空间。未来的工作可以探索更系统的网格搜索或轨迹统计与性能之间的联系,以建立更好的方法混合比例。

多任务微调

研究者扩展了他们的实验,不仅使用HotpotQA数据进行微调,而是使用了三个数据集的混合训练数据:HotpotQA、StrategyQA和MMLU。这些样本来自通过GPT-4生成的成功ReAct/CoT少量样本提示轨迹。

表5 显示,当添加StrategyQA/MMLU数据(“多任务”)时,HotpotQA/Bamboogle的性能几乎保持不变。一方面,StrategyQA/MMLU轨迹包含非常不同的问题(例如,MMLU问题为多项选择)和工具使用策略(例如,MMLU ReAct轨迹倾向于搜索答案选择),这使得转移变得困难。另一方面,尽管分布发生了变化,添加StrategyQA/MMLU并没有损害HotpotQA/Bamboogle的性能,这暗示了微调一个多任务Agent来替代多个单任务Agent的前景,而不必担心跨任务的负面影响。

当从多任务、单一方法微调切换到多任务、多方法微调时,研究者发现所有任务的性能都有所提高,再次强化了多方法Agent微调的价值。有趣的是,所有微调Agent(加上CoT/ReAct提示)在MMLU上的表现都不如简单的输入输出(IO)提示。可能的解释是这些问题可能太简单,不需要推理和行动,另一种解释可能是答案选择记忆。

尽管这项研究为语言Agent的微调提供了初步的见解和方法,但仍有许多未解决的问题和潜在的研究方向,包括将这些方法扩展到更广泛的任务和环境,以及探索更复杂的Agent系统设计。未来的研究将继续推动这一领域的发展,以实现更智能、更可靠的语言Agent。

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

代码链接:FireAct: Toward Language Agent Fine-tuning


http://www.ppmy.cn/news/1542694.html

相关文章

如何应对PDF无法转换成其他格式?常见原因与解决方法解析

在日常工作中,PDF文件的格式转换是非常常见的操作,无论是转换为Word、Excel,还是其他格式,都会有一些方便的工具支持。然而,有时在转换PDF时可能会遇到无法转换的问题。这个时候,可以看看是不是以下几个原因…

Java | ReentrantLock 锁和 synchronized 锁的区别和共同特点是什么?

ReentrantLock 和 synchronized 都是 Java 中的锁机制,主要用于实现线程间的互斥访问,确保线程安全。它们有一些共同点,也有各自的特性和区别。以下是二者的详细对比: 一、共同特点 可重入性:两者都是可重入锁&#x…

深度学习速通系列:超长法律文件隐私过滤(基于预训练模型Bert)

法律文件隐私过滤 网上使用bert的中文模型进行命名识别教程少的可怜,摸索了一周的时间,硬是把法律文书的人名全部识别出来了,目前可以达到98.9999%(开玩笑的,不过准确率保守估计是有90%以上).注意:这个法律文书目前只是针对裁决书,其他还没测试过,可支持超长文本识别 github仓…

小米面试题:多级缓存一致性问题怎么解决

前言 在现代分布式系统中,多级缓存架构因其能够显著提高系统性能和响应速度而被广泛应用。然而,多级缓存架构也带来了一致性问题,即不同层次的缓存之间数据不一致的情况。本文将从背景、功能点、优缺点、底层原理等方面详细介绍多级缓存一致…

Nodejs使用pkg打包为可执行文件

安装pkg npm install -g pkg查看pkg命令 pkg --help修改package.json 新增bin入口配置 {"name": "takescreenshot","version": "1.0.0","bin": "app.js", // 新增bin入口配置"scripts": {"t…

GPU 与 GPU 服务器:科技璀璨之星,开启无限未来

今天咱们要来聊聊在科技领域中闪闪发光的 GPU 和 GPU 服务器。这可真是一对厉害的 “科技搭档”,正以其卓越的性能成为众多行业发展的强大动力源。 先来说说 GPU 吧。它呀,一开始是为了满足图形处理的高要求而诞生的。但随着科技不断进步,人…

C语言串口接收GPS数据

要在C语言中接收GPS数据,需要使用串口通信来与GPS设备进行数据交互。一个简单的串口通信代码主要包含了以下几个部分: 1.标准库头文件 stdio.h:包含输入输出函数,如 printf string.h:包含字符串处理函数&#xff0c…

Django-中间件(切面编程AOP)

自定义中间件 官网:中间件 | Django 文档 | Django 中间件使用多就在主应用创建,仅限于子应用就在子引用中创建中间件文件.py 之后在settings.py文件中去配置中间件,运行的时候会自动调用中间件 def simple_middleware(get_response):def middleware…