分享
Agent-Flan 技术报告解读
输入“/”快速插入内容
Agent-Flan 技术报告解读
用户9177
2024年4月21日修改
1.
背景
1.1
什么是 Agent Fine-Tuning
随着大语言模型的发展,研究人员们发现利用大语言模型的
指令跟随、推理、检索与理解
等多方面能力,来让大语言模型实现对于外部工具的调用,就可以进一步增强大语言模型的能力。这便是智能体。
我们以 ReAct(Reason & Acting,思考+行动+观察) 逻辑为例:智能体在 System Prompt 的指引下,
根据用户的输入
按照
规定的格式
输出
思考
结果,然后由相关逻辑解析模型输出、得到工具输出结果并返回给智能体,最后智能体根据工具输出再决定下一步动作,从而最终完成整个任务。
为了让大语言模型强化这些能力,便有了智能体微调,也就是 Agent Fine-Tuning。
1.2
核心现象
Agent-Flan 论文中提到了现在智能体微调相关工作存在的三个核心现象:
1.2.1
智能体微调数据偏离预训练的数据域
因为大语言模型往往是在对话数据域进行预训练,而最近的智能体微调相关工作在数据方面都采用了固定格式(如 ReAct),动作参数相关均为 JSON 格式。这样格式的数据显然与预训练时的对话数据
分布不一致
,也就导致了智能体任务成为了域外任务。这样一来,智能体微调成为分布外学习,导致学习难度变大。我们这里给出一组例子:
代码块
SQL
对话数据
User:
请你简单介绍一下大语言模型
Assistant:
好的,大语言模型(Large Language Models, LLMs)是一种人工智能技术,它基于深度学习算法,能够理解和生成自然语言。这些模型通常非常庞大,由数十亿甚至数万亿个参数构成,并使用海量的文本数据进行训练。大语言模型的目标是理解和模仿人类的语言使用方式,以便能够执行各种基于语言的任务,如文本翻译、摘要生成、情感分析、问题回答、内容创作等。
代码块
SQL
ReAct 数据
System:
你是一个可以调用外部工具的助手,可以使用的工具包括:
[{"name": "ArxivSearch", ...}]
如果使用工具请遵循以下格式回复:
Thought:思考你当前步骤需要解决什么问题,是否需要使用工具
Action:工具名称,你的工具必须从 ["ArxivSearch"] 选择
Action Input:工具输入参数
...
开始!
User:
帮我搜索一下 InternLM2 技术报告
Assistant:
Thought: 我应该调用 ArxivSearch 工具去搜索 InternLM2 技术报告
Action: ArxivSearch
Action Input: {"query": "InternLM2 技术报告"}
...
1.2.2
不同智能体相关任务的学习速度不同
智能体能力涉及到了
指令跟随、推理、检索与理解
等多方面能力,分别对应输出特定格式、思维质量、选择适当的工具、传递工具参数。但是每一方面能力的学习速度有着比较大的区别。Agent-Flan 将训练损失拆分并可视化,观察到了:
检索和指令跟随任务的损失下降最快,且稳定时最低;其次是理解任务;稳定时损失最高的是推理任务
。这将用于指导训练数据的分解与均衡。
图来自 Agent-Flan 原论文。训练损失被分为了模型的多种能力:检索、指令跟随、推理和理解
1.2.3
现有方法忽视了幻觉的普遍与重要性
智能体微调过程中存在着两种幻觉:
格式幻觉
与
工具幻觉
。格式幻觉指的是模型没有按照要求的格式进行输出,导致工具调用失败;工具幻觉指的是模型在面对引导性任务的时候,可能会去调用一些根本不存在的工具,导致失败。
2.
Agent-Flan
2.1
智能体微调数据与预训练域对齐
为了将智能体微调数据与人类对话数据进行对齐,Agent-Flan 将格式化的数据转为多轮的自然语言对话,通过
多轮对话的方式拆解“思考+行动+观察”的模式
。这里以上文中的 ReAct 数据为例: