基于LLM的agent可以利用LLM对问题进行推理,制定解决问题的计划,然后利用各种工具执行复杂的任务。LUMOS是一种通过统一、模块化和开源的、可训练的代理框架,包含一个学习高级子目标生成的规划模块,和一个经过训练的使用执行模块中的各种工具将这些子目标转换为动作的基础模块。
LUMOS架构由以下模块组成:
1、规划模块:将任务分解成不同的子目标
例如:一个多模态问题,如“她手中的设备来自哪个国家?”需要两个子目标:(1)识别她手中设备的品牌;(2)回答设备品牌所在国家
2、转换模块:将规划模块产生的高级子目标转换为低级可执行的操作
例如将子目标“Query the living period of Lowell Sherman”翻译成一个或多个动作,如Knowledge Query(Lowell Sherman)和QA( Query:“What is the living period of Lowell Sherman?”)
3、执行模块:生成的动作并获取执行结果
这个模块可以部署各种现成的工具,包括api、神经网络模型和不同的语言代码执行环境等
LUMOS-OnePass (LUMOS-O):一遍推理与生成所有子目标和一次执行
转换模块可以产生所有相应的动作,从VQA([IMG],问题:她手中的设备是什么牌子的?)到最后一个QA(…,问题:…的国家是什么?)
LUMOS-Iterative (LUMOS-I):基于执行反馈的灵活规划的自适应方法,在每次迭代中生成一个子目标及其相应的可执行动作。
视觉问题:“她手中的设备来自哪个国家?”,将涉及生成为“子目标1:识别她手中设备的品牌”的子目标。将子目标传递给执行模块后,我们假设结果是“Nintendo”。然后,计划模块将Nintendo连同之前的计划作为输入,生成下一个子目标“子目标2:回答Nintendo的国家”。
LUMOS最主要的一个特点是他像模型那样是可以训练的,训练过程包括以下步骤:
1、训练数据生成
先前的工作利用self - instruction来综合训练任务和输入,并根据其创建的任务直接生成真值任务输出。但是种方法可能不适合为训练代理生成高质量的注释。
所以LUMOS将llm被用作“风格转移”工具,将现有基准中的真值推理步骤转换为LUMOS公式中的预期格式。有了这些参考,llm可以根据给定的动作接口总结高级子目标并合成相应的动作。为llm提供了如何从推理步骤中提取高级子目标并将其映射为相应行动的示例。最后将注释组织成响应输出。
2、模型训练
LUMOS会话注释组织为{x1,y1,…,xi,yi,…,xn,yn},其中xi是第i个用户提示,yi表示其事实响应。
整个多回合注释被发送到仅解码器模型中,同时仅计算响应Y = {y1,…,yi,…,yn}的令牌上的解码损失。然后对用户提示令牌进行屏蔽,以防止使用它们的计算损失。最终损失函数为L = − j logpπ(tj | t<j)×1(tj∈Y),其中tj表示第j个输入令牌,1(·)为布尔指示函数。
在Mind2Web[2]任务上的分步成功率优于基于GPT的代理和开源代理。
在数学任务上,如GSM8K[3]和SVAMP[4],比2 - 4倍大的语言代理实现更好的性能
在A-OKVQA[5]和ScienceQA(IMG)[6]上的准确率优于基于GPT的代理和开源代理。
在StrategyQA[7]和HotpotQA[8]数据集上,基于gpt -4/3.5的代理在复杂QA上的表现优于基于gpt -4/3.5的代理。
在跨四种训练任务类型的组合注释上训练时,评估LUMOS在未见任务上的性能;WebShop[9]和InterCodeSQL[10]等看不见的任务上测试泛化能力。
在平均奖励上优于WebShop[9],在成功率上优于InterCodeSQL[10]。
LUMOS在9个数据集上的表现优于各种开源代理。它在QA和web任务上的表现甚至比GPT代理更好。
论文地址:
https://arxiv.org/abs/2311.05657
项目网站和代码:
https://allenai.github.io/lumos/
本文引用
本文分享自 DeepHub IMBA 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!