FIREACT: TOWARD LANGUAGE AGENT FINE-TUNING

作者/机构: Baian Chen (System2 Research), Chang Shu (University of Cambridge), Ehsan Shareghi (Monash University), Nigel Collier (University of Cambridge), Karthik Narasimhan (PLI, Princeton University), Shunyu Yao (PLI, Princeton University)

A1 主要贡献

本文探讨了通过微调语言模型(LMs)来构建语言代理这一被忽视的研究方向。

A3 背景知识/关键Observation/设计原则

我们的工作主要基于ReAct(Yao等人,2022b)【索引87,React: Synergizing reasoning and acting in language models. 2022. arXiv】,这是一种流行的语言代理方法。一个ReAct任务解决轨迹(如图5所示)由多个“思考-行动-观察”循环组成,其中语言模型生成自由形式的“思考”用于多种目的(例如,从观察中提取信息、提出和调整行动计划、跟踪任务进展),以及结构化的“行动”来与环境(工具)互动并接收“观察”反馈。ReAct的表现优于仅推理或仅行动的基线,因为推理可以指导行动,而行动可以通过新信息支持推理。因此,ReAct格式已成为许多后续语言代理的基础,例如Reflexion(Shinn等人,2023)【索引60,Reflexion: Language agents with verbal reinforcement learning. 2023. arXiv】、SwiftSage(Lin等人,2023)【索引31,Swiftsage: A generative agent with fast and slow thinking for complex interactive tasks. 2023. arXiv】和AutoGPT(Richards,2023)【索引53,AutoGPT. 2023. https://github.com/Significant-Gravitas/AutoGPT】。

Yao等人(2022b)【索引87,React: Synergizing reasoning and acting in language models. 2022. arXiv】的研究中也展示了一个初步的在HotpotQA(Yang等人,2018)【索引85,HotpotQA: A dataset for diverse, explainable multi-hop question answering. 2018. EMNLP】上进行的PaLM(Chowdhery等人,2022)【索引6,Palm: Scaling language modeling with pathways. 2022. arXiv】微调实验,其中一个微调后的PaLM-62B模型胜过了一个提示驱动的PaLM-540B模型。但是,这一发现是否能推广到其他类型的语言模型、提示方法或任务上,仍然是未知的。关于语言代理微调的后续研究一直很稀少(参见第2节)。

因此,我们提出了FireAct,一种针对语言代理的新颖微调方法。如图2(a)所示,FireAct同样利用对强语言模型进行少样本提示来生成多样化的ReAct轨迹,以微调一个较小的语言模型(即蒸馏(Hinton等人,2015)【索引19,Distilling the knowledge in a neural network. 2015. arXiv】)。但与Yao等人(2022b)【索引87,React: Synergizing reasoning and acting in language models. 2022. arXiv】不同,FireAct通过混合多种训练任务和提示方法来明确促进数据的多样性。这里我们考虑了另外两种与ReAct格式兼容的方法:

在推理过程中(图2(b)),FireAct代理减轻了对少样本提示的需求,这使得推理更加高效和便捷。它还可以根据任务的复杂性隐式地选择合适的方法,并由于拥有更广泛和更多样化的学习支持,比提示方法表现出更强的泛化能力和鲁棒性。

图2:FireAct示意图。(a) 在微调期间,一个大型LM(如GPT-4)根据来自不同数据集的问题和来自不同方法的提示生成任务解决轨迹。然后将成功的轨迹转换为ReAct格式以微调一个较小的LM。(b) 在推理期间,微调后的LM可以在没有少样本提示的情况下运行,并且可以隐式地选择一种提示方法来完成具有灵活长度的ReAct轨迹,以适应不同的问题复杂性。例如,一个简单的问题可以仅使用一个思考-行动-观察循环来解决,而无需使用工具。
图2:FireAct示意图。(a) 在微调期间,一个大型LM(如GPT-4)根据来自不同数据集的问题和来自不同方法的提示生成任务解决轨迹。然后将成功的轨迹转换为ReAct格式以微调一个较小的LM。(b) 在推理期间,微调后的LM可以在没有少样本提示的情况下运行,并且可以隐式地选择一种提示方法来完成具有灵活长度的ReAct轨迹,以适应不同的问题复杂性。例如,一个简单的问题可以仅使用一个思考-行动-观察循环来解决,而无需使用工具。

A2 方法细节

任务

本文在成熟的问答(QA)任务上进行训练和测试。 这些任务遵循了先前工作(Wei等人,2022b【索引84,Chain of thought prompting elicits reasoning in large language models. 2022. arXiv】;Yao等人,2022b【索引87,React: Synergizing reasoning and acting in language models. 2022. arXiv】;Shinn等人,2023【索引60,Reflexion: Language agents with verbal reinforcement learning. 2023. arXiv】)的选择,因为它们拥有丰富且高质量的训练数据,并且评估方法(答案精确匹配)简单可靠。我们使用了四个数据集:
- HotpotQA (Yang等人,2018)【索引85,HotpotQA: A dataset for diverse, explainable multi-hop question answering. 2018. EMNLP】是一个具有挑战性的问答数据集,需要多步推理和知识检索。答案通常是一个简短的实体或是/否。我们使用2000个随机训练问题来策划微调数据,并使用500个随机开发集问题进行评估。
- Bamboogle (Press等人,2022)【索引48,Measuring and narrowing the compositionality gap in language models. 2022. arXiv】是一个包含125个多跳问题的测试集,其格式与HotpotQA相似,但经过精心设计,以避免通过谷歌搜索直接解决问题。
- StrategyQA (Geva等人,2021)【索引13,Did aristotle use a laptop? A question answering benchmark with implicit reasoning strategies. 2021. TACL】是一个是/否问答数据集,需要隐式推理步骤。
- MMLU (Hendrycks等人,2021)【索引18,Measuring massive multitask language understanding. 2021. ICLR】涵盖了57个多项选择问答任务,涉及初等数学、历史和计算机科学等多个领域。

工具

我们使用SerpAPI构建了一个谷歌搜索工具。 遵循Press等人(2022)【索引48,Measuring and narrowing the compositionality gap in language models. 2022. arXiv】的做法,我们使用SerpAPI构建了一个谷歌搜索工具,该工具会返回“答案框”、“答案摘要”、“高亮词”或“首个结果摘要”中第一个存在的内容。这确保了响应简短且相关。我们发现,这样一个简单的工具足以满足跨任务的基本问答需求,并增加了我们微调模型的易用性和通用性。

语言模型

我们研究了三类语言模型。
- OpenAI GPT。我们使用GPT-4(OpenAI,2023b)【索引43,Gpt-4 technical report. 2023】提示生成所有微调数据,并使用GPT-3.5(OpenAI,2023a)【索引42,Gpt-3.5 turbo fine-tuning and api updates. 2023】进行微调和提示。我们在2023年7月至9月期间以ChatCompletion模式使用了这两个模型。
- Llama-2 (Touvron等人,2023b)【索引78,Llama 2: Open foundation and finetuned chat models. 2023. arXiv】模型,参数量为7B和13B,使用“chat”模式。
- CodeLlama (Roziere等人,2023)【索引55,Code llama: Open foundation models for code. 2023. arXiv】模型,参数量为7B、13B和34B,使用“instruct”模式,这有助于进一步理解模型规模扩展效应以及代码微调对代理任务的重要性。

微调方法

我们主要使用低秩自适应(LoRA)进行微调实验。 我们使用LoRA(Hu等人,2022)【索引21,Lora: Low-rank adaptation of large language models. 2022. ICLR】进行大多数微调实验,但为了进行某些比较,也使用了全模型微调。

实验结构

我们将实验分为三个复杂性递增的部分。 考虑到语言代理微调涉及的多种因素,我们将实验分为三个部分:
- 使用单一提示方法在单一任务上进行微调(第5节);
- 使用多种方法在单一任务上进行微调(第6节);
- 使用多种方法在多任务上进行微调(第7节)。

A4 实验环境

A4 实验结果

单任务、单方法微调 (Section 5)

本节实验在HotpotQA任务上,仅使用ReAct方法生成的轨迹进行微调,旨在验证微调的基本优势。

多方法微调 (Section 6)

本节实验在HotpotQA任务上,混合使用ReAct、CoT和Reflexion三种方法的轨迹进行微调。

多任务微调 (Section 7)

本节实验使用来自HotpotQA、StrategyQA和MMLU三个数据集的数据对GPT-3.5进行微调。

A5 结论

本文系统性地研究了语言代理的微调,并通过FireAct方法展示了其多方面的优势。

A6 附录

A.1 EM分数的标准误差

附录提供了主要实验结果的标准误差。 表6、表7和表8分别对应正文中的表1、表2和表5,补充了精确匹配(EM)分数的标准误差(σM),以增强结果的统计可靠性。

表6:带标准误差(σM)的提示结果。
表6:带标准误差(σM)的提示结果。

表7:提示与微调的对比,包含绝对/相对增长和标准误差(σM)。
表7:提示与微调的对比,包含绝对/相对增长和标准误差(σM)。

表8:使用GPT-3.5和标准误差(σM)的多任务结果。
表8:使用GPT-3.5和标准误差(σM)的多任务结果。

A.3 数据混合

本节探讨了模型性能的上下限,并分析了数据混合的效果。 表10显示,性能的下限(随机选择代理方法)为32.4 EM,而上限(“神谕”式地为每个问题选择最佳方法)为52.0 EM。所有数据混合策略的性能都落在此区间内,证明了数据混合的有效性。特别是,加入CoT方法能带来显著的性能提升,尽管CoT方法单独使用时表现相对较差(28.0 EM)。这表明混合数据对微调过程有积极贡献。

表9:不同任务和方法的结果比较。
表9:不同任务和方法的结果比较。

表10:在HotpotQA上对混合代理方法的研究。
表10:在HotpotQA上对混合代理方法的研究。

A.4 轮次分布

数据混合改变了模型的行为分布。 图6的图表显示,混合数据会使模型的轮次分布(turn distribution)趋向于训练数据的分布。例如,对比ReAct+CoT(平均2.7轮,41.0 EM)和ReAct+Reflexion(平均3.8轮,38.8 EM),加入CoT(通常是单轮)会显著减少模型的平均交互轮次。

图6:轮次分布
图6:轮次分布

A.5 LoRA vs. 全量微调

全量微调性能更优但成本高昂。 表11展示了Llama-2-7B在单任务(500条HotpotQA轨迹)和多任务(所有轨迹混合)设置下,分别使用LoRA和全量权重微调的EM分数。结果表明,全量微调在两种设置下都优于LoRA,但其计算资源需求也大得多。

表11:在单任务和多任务设置下LoRA与全量微调的对比。
表11:在单任务和多任务设置下LoRA与全量微调的对比。

A.6 CodeLlama vs. Llama Tokenizer

使用原生分词器对CodeLlama有轻微提升。 表12比较了在CodeLlama模型上使用Llama分词器和CodeLlama原生分词器的性能差异。结果显示,对于CodeLlama-7B和CodeLlama-13B,使用原生分词器在HotpotQA任务上能带来轻微的性能提升。

表12:CodeLlama在使用Llama分词器和CodeLlama分词器之间的性能差异。
表12:CodeLlama在使用Llama分词器和CodeLlama分词器之间的性能差异。

A.7 世界建模:掩蔽观察

掩蔽观察对学习世界模型的效果不一致。 表13展示了在训练中掩蔽观察(masking observations)对CodeLlama-7B和-13B模型性能的影响。实验旨在探究模型是否能学习世界建模。结果显示,对于CodeLlama-7B,掩蔽观察通常带来轻微性能提升;但对CodeLlama-13B,效果不一致,有时提升有时下降。这表明在当前设置下,这种方法对性能没有稳定的积极影响。

表13:在HotpotQA轨迹中带或不带观察掩蔽微调Llama-2-7B和Llama-2-13B的性能差异。
表13:在HotpotQA轨迹中带或不带观察掩蔽微调Llama-2-7B和Llama-2-13B的性能差异。

A.8 训练轮数

更多的训练轮数不一定带来持续的性能提升。 图7展示了GPT-3.5模型在HotpotQA数据集上随微调轮数增加的性能变化。从1轮增加到4轮,EM和F1分数普遍提高。但超过4轮后,尽管EM分数仍有微小增长,F1分数却趋于平稳甚至下降,表明进一步微调的收益递减。

图7:GPT-3.5-Turbo在HotpotQA数据集上随微调轮数增加的性能变化
图7:GPT-3.5-Turbo在HotpotQA数据集上随微调轮数增加的性能变化

A.9 FireAct的少样本任务泛化

微调结合少样本提示能增强泛化能力。 表14展示了在HotpotQA轨迹上微调的Llama-2-7B在其他任务上的表现。结果表明,微调与少样本提示相结合,能显著提升在相似任务Bamboogle上的性能,略微提升在MMLU上的性能,但在任务形式差异较大的StrategyQA上性能有所下降。

表14:在HotpotQA轨迹上微调的Llama-2-7B的多任务结果。
表14:在HotpotQA轨迹上微调的Llama-2-7B的多任务结果。

B 实验细节

B.1 基础模型。 本文探索了三个代表性LLM家族的模型:(1)GPT家族,包括用于数据生成的GPT-4(OpenAI, 2023b)【索引43,Gpt-4 technical report. 2023】和用于微调的GPT-3.5,后者是基于GPT-3(Brown等人,2020)【索引4,Language models are few-shot learners. 2020. NeurIPS】的175B参数指令调优和RLHF版本。(2)Llama-2(Touvron等人,2023b)【索引78,Llama 2: Open foundation and finetuned chat models. 2023. arXiv】,这是一个参数从7B到70B的开源模型系列。(3)CodeLlama(Roziere等人,2023)【索引55,Code llama: Open foundation models for code. 2023. arXiv】,这是一个从Llama-2派生、专为代码生成设计的模型家族,参数从7B到34B。

B.2 单方法单任务设置。 我们从HotpotQA训练集中抽取样本,让GPT-4(OpenAI, 2023b)【索引43,Gpt-4 technical report. 2023】通过少样本示例生成了500条ReAct轨迹,并进行了人工验证,用于代理微调。我们还从7,405个开发集样本中选出500个用于评估,使用精确匹配(EM)和F1分数作为指标。GPT-3.5使用了OpenAI微调API对GPT-3.5-Turbo-0613进行微调,而Llama-2和CodeLlama则在A100-80GB、RTX 6000 Ada、RTX 4090和RTX 3090 GPU上,使用带int8量化的低秩自适应(LoRA)(Hu等人,2022)【索引21,Lora: Low-rank adaptation of large language models. 2022. ICLR】对Llama-2-Chat-HF和CodeLlama-Instruct-HF进行微调。GPT-3.5微调了3个epoch,Llama-2和CodeLlama家族微调了30个epoch。如果ReAct算法在11步内未完成,则强制终止。学习率为3e-4,训练批次大小为16。Llama和Codellama模型的评估温度为0.6,GPT-3.5的温度为0。模型评估也使用了int8量化。

B.3 Llama和CodeLlama的计算。 表15展示了用于微调和推理Llama-2及CodeLlama模型的计算资源。

表15:用于训练和推理Llama-2和CodeLlama模型的计算资源。
表15:用于训练和推理Llama-2和CodeLlama模型的计算资源。

C 提示

附录C部分提供了用于生成微调数据的具体提示(Prompts)示例,包括HotpotQA、MMLU和StrategyQA任务的ReAct和CoT提示,以确保实验的可复现性。

HotpotQA ReAct 提示
HotpotQA ReAct 提示

MMLU 提示 1
MMLU 提示 1

MMLU 提示 2
MMLU 提示 2

MMLU 提示 3
MMLU 提示 3

StrategyQA 提示 1
StrategyQA 提示 1

StrategyQA 提示 2
StrategyQA 提示 2

StrategyQA 提示 3
StrategyQA 提示 3