基于llama7B的文本嵌入模型ANGLE:兼看Agent微调数据的生成方案

今天是2023年10月20日,星期五,北京,天气晴。

我们再来关注一些有趣的工作,一个是新的向量化模型ANGLE,另一个是AgentTuning:面向Aent应用的数据生成。

前者指出了一个余弦函数饱和区问题,后者提供了一个agnet数据的生成路线,很有意思,供大家一起参考。

一、新的向量化模型ANGLE

早期的研究证明了用n-gram嵌入增强word2vec的功效,在文本嵌入方面取得了很好的效果。

最近,BERT-flow引入了一种基于流的方法,将BERT嵌入映射到标准高斯潜空间。另一方面,BERT-whitening(将该操作应用于BERT嵌入,以增强文本嵌入。

有监督的文本嵌入通常比无监督的文本嵌入表现更好。各种研究都有效地利用了监督数据集来提高文本嵌入的学习效果,例如,引入一种利用监督自然语言推理(NLI)任务的方法。

USE以transformer为骨干,结合SNLI数据集来增强非监督训练,从而提高了性能。此外,SBERT通过将BERT与连体架构相结合,增强了文本嵌入。也有使用提示工程来改进文本嵌入。然而,大多数现有模型都优化了余弦相似度,却忽视了余弦函数饱和区的负面影响。

针对这一问题,《ANGLE-OPTIMIZED TEXT EMBEDDINGS》地址:https://arxiv.org/pdf/2309.12871.pdf提出了一种新颖的角度优化文本嵌入模型,以提高文本嵌入的质量。AnglE的核心思想是在复杂空间中引入角度优化。

模型效果:

模型安装及调用

python -m pip install -U angle-emb

模型调用

from angle_emb import AnglE

angle = AnglE.from_pretrained('NousResearch/Llama-2-7b-hf', pretrained_lora_path='SeanLee97/angle-llama-7b-nli-v2')
angle.set_prompt()
print('prompt:', angle.prompt)
vec = angle.encode({'text''hello world'}, to_numpy=True)
print(vec)
vecs = angle.encode([{'text''hello world1'}, {'text''hello world2'}], to_numpy=True)
print(vecs)

地址: github.com/SeanLee97/AnglE

二、AgentTuning:面向Aent应用的数据生成

开放式大型语言模型(LLM)在各种任务中表现出色,极大地推动了LLM的发展。

然而,在作为代理处理现实世界中的复杂任务时,它们远不如ChatGPT和GPT-4等商业模型。这些代理任务采用LLM作为中央控制器,负责规划、记忆和工具使用,因此需要细粒度的提示方法和稳健的LLM来实现令人满意的性能。

虽然已经提出了许多提示方法来完成特定的代理任务,但缺乏在不影响LLMs一般能力的前提下提高其代理能力的研究。

《AgentTuning: Enabling Generalized Agent Abilities for LLMs》,地址https://arxiv.org/abs/2310.12823这一工作提出了一种简单而通用的方法--AgentTuning,用于提高LLM的代理能力,同时保持其一般LLM能力。

整体思路如下:

值得注意的是,构建了包含高质量交互过程的轻量级指令调整数据集AgentInstruct,数据样例如下

我们重点来看看微调数据如何构建:构建AgentInstruct包括三个主要阶段:指令构建、过程交互(Task Derivation)和过程过滤。

这一过程完全使用GPT-3.5(gpt-3.5-turbo-0613)和GPT-4(gpt-4-0613)自动完成,因此该方法可以轻松扩展到新的代理任务。

首先,指令构建,为六项代理任务构建了AgentInstruct,包括AlfWorld、Web-Shop、Mind2Web、知识图谱、操作系统和数据库,代表了现实世界中相对容易收集指令的各种场景。

如表1所示,如果某个任务(如ALFWorld、WebShop、Mind2Web和知识图谱)有训练集,直接将训练分割用于后续阶段,进行过程交互和过滤。对于没有训练集的操作系统和数据库任务,利用"任务衍生和self-insutruct"来构建相应的指令。

Task Derivation,对于与广泛研究过的场景相关的代理任务,直接从类似的数据集中构建指令。为了构建数据库(DB)任务的指令,从只支持SELECT的数据库基准BIRD中推导出指令,共进行了两种任务推导。

首先,使用每个BIRD子任务中的问题和参考SQL语句构建一个行程。然后使用参考SQL语句查询数据库,以获得数据库的输出,并将其作为代理提交的答案。

最后,要求GPT-4根据上述信息填写代理的thought部分。

self-instruct,对于操作系统(OS)任务,首先提示GPT-4提出一些与操作系统相关的任务,并附上任务说明、参考解决方案和评估脚本。

然后向另一个GPT-4实例(求解器)提示任务并收集其过程。任务完成后,运行参考解决方案,并使用评估脚本将其结果与求解器GPT-4的结果进行比较。

对于数据库任务,由于BIRD只包含SELECT数据,可以构建其他类型的数据库操作(INSERT、UPDATE和DELETE)。

其次,过程交互。 在构建了初始指令后,使用GPT-4(gpt-4-0613)作为过程交互的agent。交互过程交互过程有两个主要部分。首先,给模型一个任务说明和一个成功的zeroshot示例。然后,开始实际交互。向模型提供当前指令和必要信息。

根据这些信息和之前的反馈,模型形成想法并采取行动。然后,环境提供反馈,包括可能的变化或新信息。如此循环往复,直到模型实现其目标或达到其token极限。

如果模型连续三次重复相同的输出,认为它是重复失败。

如果模型的输出格式是错误的,会使用BLEU指标将其与所有可能的行动选择进行比较,并挑选最接近的匹配作为模型在该步骤中的行动。

鉴于CoT推理思维链(CoT)方法通过一步步的推理过程大大增强了LLM的推理能力,采用ReAct作为推理框架,在产生最终行动之前输出CoT解释(称为思维)。

因此,收集到的交互过程中的每个动作都附有详细的解释过程,从而使模型能够学习到导致该动作的推理过程。对于使用任务推导生成的不带想法的过程,我们使用GPT-4对其进行想法补充,以便与ReAct提示保持一致。

最后是,过程过滤。 为确保数据质量,对其交互过程进行了严格筛选。每个交互过程都会获得奖励r,可以根据奖励自动选择高质量的过程。除Mind2Web外,根据最终奖励r=1(表示完全正确)过滤所有任务的过程。

​由于Mind2Web任务难度较大,使用了r≥32的阈值,以确保获得足够数量的过程。

在表2中通过对7B尺度的过滤过程和未过滤过程进行微调,证明了过滤策略的有效性。与根据过滤过程训练的模型相比,根据未过滤过程训练的模型在"保持"和"退出"任务中的表现都要差得多,这凸显了数据质量比数据数量对特工任务的重要性。

通过将AgentInstruct与来自通用领域的开源指令相结合,采用了混合指令调整策略。

AgentTuning被用于对Llama2系列进行指令调整,最终产生了AgentLM。

该工作引入了6个"保持"任务和6个"退出"任务进行综合评估,涵盖了现实世界的各种场景。Weight-1表示计算总分时任务的权重(参见第3.1节)。"#Inst."表示任务的查询样本数。"SR"代表成功率。

该工作评估结果表明,AgentTuning可以在不影响一般能力的情况下实现LLM的代理能力。

地址:https://github.com/THUDM/AgentTuning开放了AgentInstruct和AgentLM-7B、13B和70B模型的源代码。

总结

本文主要介绍了两个工作,一个是新的向量化模型ANGLE,另一个是AgentTuning:面向Aent应用的数据生成。

感兴趣的可以多关注数据构成的部分,供大家一起参考。

参考文献

1、github.com/SeanLee97/AnglE
2、https://github.com/THUDM/AgentTuning
3、https://arxiv.org/pdf/2309.12871.pdf

关于我们

老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。

老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。

对于想加入更优质的知识图谱、事件图谱、大模型AIGC实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。

​​​       

相关推荐

  • 开源项目:无缝多媒体体验的终极视频播放器,屏幕娱乐的完美伴侣
  • 半导体巨头AMD也要裁员了!
  • 华为家属:4年提前还款219.36W,剩余每月房贷5.1元
  • 限时赠票|关于 AI 赋能、智能高清、音视频技术...小红书邀你参加「RTE 实时互联网大会」
  • CNCC 2023 | 五位重磅大咖齐聚沈阳,共同探讨「大模型与推荐系统」
  • 开源联合,聚力共赢,2023 CCF中国开源大会在长沙开幕
  • 1024程序员节|和华为共赴一场属于开发者的硬核大会
  • 北大开源代码大模型CodeShell,提供了配套的IDE插件
  • Hugging Face被限制访问
  • 云原生 IDE 将成为常态
  • 10个解放双手的 IDEA 插件,这些代码真不用手写
  • 英伟达开源新Agent!用了GPT-4后,机器人把转笔、盘核桃都玩明白了
  • 推特爆火!超越ChatGPT和Llama2,新一代检索增强方法Self-RAG来了
  • 聊聊昨日ChatGPT全球宕机事件,带给我们的警示
  • 一笔卖了95亿的山东博士火了
  • 我们公司的官网上线了!
  • 通用大模型引领全球创新风潮,谁将为你揭示未来科技的奥秘?
  • 1024程序员节暨「源聚一堂」开源技术沙龙(北京站)火热报名中
  • 数据分析入门:统计学基础知识总结
  • ​ChatGPT 系列研究报告(50个PDF),建了一个资料分享微信群