李飞飞两位高徒联合指导:能看懂「多模态提示」的机器人,zero-shot性能提升2.9倍...

本文主要是介绍李飞飞两位高徒联合指导:能看懂「多模态提示」的机器人,zero-shot性能提升2.9倍...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


  视学算法报道  

编辑:LRS

【导读】李飞飞朝着她的北极星「具身智能」又前进了一步!

人工智能领域的下一个发展机会,有可能是给AI模型装上一个「身体」,与真实世界进行互动来学习。

相比现有的自然语言处理、计算机视觉等在特定环境下执行的任务来说,开放领域的机器人技术显然更难。

9824e63787b62efdb92bb542cb613d20.png

比如prompt-based学习可以让单个语言模型执行任意的自然语言处理任务,比如写代码、做文摘、问答,只需要修改prompt即可。

但机器人技术中的任务规范种类更多,比如模仿单样本演示、遵照语言指示或者实现某一视觉目标,这些通常都被视为不同的任务,由专门训练后的模型来处理。

最近来自英伟达、斯坦福大学、玛卡莱斯特学院、加州理工、清华大学和得克萨斯大学奥斯汀分校的研究人员共同提出一个基于Transformer的通用机器人智能体VIMA,利用多模态的prompt,实现极高的泛化性能,能够处理大量的机器人操作任务。

23f785015b351c9b5598c6450585e427.png

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

项目链接:https://vimalabs.github.io/

代码链接:https://github.com/vimalabs/VIMA

输入prompt为交错使用的文字和视觉符号。

为了训练和评估VIMA,研究人员提出了一个新的模拟基准数据集,包含上千个由程序生成的带有多模态提示的桌面任务,和60多万条专家轨迹用于模仿学习,以四个等级来评估模型的泛化性能。

在同等尺寸的模型、等量训练数据的情况下,VIMA在最难的zero-shot的泛化设置下任务成功率为当下sota方法的2.9倍。

在训练数据减少10倍的情况下,VIMA的表现仍然比其他方法好2.7倍。

目前所有的代码、预训练模型、数据集和模拟基准都已完全开源。

论文的第一作者是Yunfan Jiang,斯坦福大学硕士二年级学生,目前在英伟达研究院实习。2020年本科毕业于爱丁堡大学。他的主要研究方向为具身人工智能(embodied AI),即通过与环境的互动来学习。具体研究内容为如何利用大规模的基础模型来实现开放式的的具身智能体(embodied agents)

ec3c171280ab110527f11d420bbee6b5.png

论文包含两位导师,均为李飞飞曾经的学生。

朱玉可,本科毕业于浙江大学,并取得了浙江大学和加拿大西蒙弗雷泽大学的双学位。硕士和博士研究生就读于斯坦福大学,师从李飞飞,并于2019年8月取得博士学位。朱玉可现任UT Austin计算机科学系助理教授,同时是机器人感知和学习实验室的主任,以及英伟达研究院高级研究科学家。

范麟熙,博士毕业于斯坦福大学,师从李飞飞,目前是NVIDIA AI的研究科学家。主要研究方向为开发通用且强大的自主智能体(generally capable autonomous agents),具体的研究工作涵盖了基础模型、策略学习、机器人技术、多模式学习和大规模系统。

机器人与多模态prompt

Transformer在NLP领域多任务已经实现相当高的性能,仅一个模型就能同时完成问答、机器翻译、文本摘要等。

实现不同任务的接口就在于输入的文本提示,从而将具体的任务需求传递给通用大模型。

能不能把这种prompt接口用在通用机器人智能体上呢?

对于一个家务机器人来说,理想情况下,只需要输入给我拿<杯子的图像>,机器人就可以按照图片把杯子拿过来。

当机器人需要学习新技能时,最好可以通过输入视频演示就能学习。如果机器人需要与不熟悉的物体进行互动时,只需要通过图例即可轻松解释。

同时为了确保安全部署,用户可以进一步指定视觉约束,比如不要进入<图像>房间

72251a8fe3d6909ba6792ef0cf1607f7.png

为了实现这些功能,VIMA模型主要包含三部分:

1、 形式化多模态提示,将机器人操纵任务转化为一个序列建模问题;

2、一个新的机器人智能体模型,能够进行多任务操作 

3、一个具有不同任务的大规模基准,以系统地评估智能体的可扩展性和通用性

首先,由多模态提示带来的灵活性可以让开发者指定和构建一个模型即可支持大量的任务规范,这篇论文中主要考虑六类任务:

1、简单物体操纵(Simple object manipulation),任务提示形如put <object> into <container>,其中对应的槽位为物体的图像;

2、实现视觉目标(Visual goal reaching),操纵物体实现目标设置,比如重新排列(rearragement);

3、接纳新概念(Novel concept grounding),提示中包含一些不常见的词,例如dax, blicket等,可以通过在提示内的图像进行解释,然后直接在指令中使用,可以测试智能体对新概念的认知速度;

4、单样本视频模仿(One-shot video imitation),观看视频演示,并学习如何以相同的移动路径对一个特定物体进行复现;

5、满足视觉限制(Visual constraint satisfaction),机器人必须小心地操纵物体,来避免触犯安全性限制;

6、视觉推理(Visual reasoning),有一些任务要求智能体需要会推理,比如「把所有和<object>相同纹理的物体都放到一个容器中」,或者要求视觉记忆,如「把<object>放到容器中,然后再放回到原位」

需要注意的是,这六类任务并非互斥,比如有的任务可能会通过演示视频(imitation)引入了一个之前没见过的动词(Novel Concept)

新基准VIM-BENCH

巧妇难为无米之炊,为了训练模型,研究人员同时准备了一些配套数据作为多模态机器人学习基准VIMA-BENCH。

在仿真环境(Simulation Environment)上,现有的基准一般都是针对特定的任务规范,目前还没有一个基准能够提供丰富的多模态任务套件和全面的测试平台来有针对性地探测代理能力。

为此,研究人员通过扩展Ravens机器人模拟器来建立VIMA-BENCH,支持可扩展的物体和纹理集合,以组成多模态提示,并按程序生成大量的任务。

具体来说,VIMA-BENCH提供了17个带有多模态提示模板的元任务,可以被实例化为1000个独立的任务。每个元任务属于上述6种任务规范方法中的一种或多种。

VIMA-BENCH可以通过脚本化的oracle智能体生成大量的模仿学习数据。

在观察和行动(Observation and Actions)上,模拟器的观察空间包括从正视图和自上而下视图渲染的RGB图像,基准还提供真实的物体分割和边界框,用于训练以物体为中心的模型。

VIM-BENCH从前人工作中继承了高级动作空间,由最基础的运动技能组成,如「取放」、「擦拭」等,具体由终端效果的姿势所决定。

模拟器还具有脚本化的oracle程序,可以通过使用特权模拟器的状态信息,如所有物体的精确位置,以及多模态指令的基础解释,生成专家示范。

最终,研究人员通过预编程的oracles生成了一个大型的专家轨迹离线数据集用于模仿学习。数据集包括每个元任务的5万条轨迹,共计65万条成功的轨迹。

同时保留一个物体模型和纹理的子集方便评估,并将17个元任务中的4个用于zero-shot泛化性测试。

VIMA-BENCH的每个任务标准只有成功和失败,不存在中间状态的奖励信号。

在测试时,研究人员在物理模拟器中执行智能体策略,以计算出成功率,所有评估的元任务的平均成功率为最终报告的指标。

67e4a7d235c37efc4d844ad960e54661.png

评估协议包含四个层次以系统地探测智能体的泛化能力,每一级都更多地偏离训练分布,因此严格来说一级比一级难。

1、放置泛化(Placement generalization):在训练过程中,所有的提示都是逐字逐句的,但在测试时,桌面上的物体放置是随机的。

2、组合泛化(Combinatorial generalization):所有的材料(形容词)和三维物体(名词)在训练中都能看到,但在测试中会出现一些新的组合形式。

3、新物体泛化(Novel object generalization):测试提示和模拟的工作空间包括新的形容词和物体。

4、新任务泛化(Novel task generalization):测试时带有新提示模板的新型元任务

VIMA模型

多模态prompt中总共包含三种格式:

1、文本,使用预训练的T5模型进行分词及获取词向量;

2、整个桌面的场景,首先使用Mask R-CNN识别出所有的独立物体,每个物体由一个bounding box和裁剪图像表示,然后使用一个bounding bo编码器和ViT分别进行编码。

3、单个物体的图像,同样使用ViT获得tokens,然后将结果序列输入到预训练的T5编码器模型中。

fdaf8496581139dd880e4b5ab5a1071c.png

机器人控制器(Robot Controller),即解码器的输入为提示序列上进行多次交叉注意力层后的表示和轨迹历史序列。

这样的设计可以增强对prompt的连接度;更好地保留且更深地处理原始prompt tokens;更好的计算效率。

在测试阶段的实验设计,主要为了回答三个问题:

1、VIMA和之前的SOTA基于Transformer的智能体在多模态提示的多种任务上的性能对比;

2、VIMA在模型容量和数据量上的缩放性(scaling properties);

3、不同的视觉分词器,条件提示和条件编码是否会影响到最终的决策。

对比的基线模型包括Gato, Flamingo和Decision Transformer(DT)

首先在模型缩放(Model scaling)上,研究人员对所有方法从2M到200M参数量进行训练,编码器的尺寸始终保持为T5-base,在所有层次的zero-shot泛化性评估上,VIMA都绝对好于其他工作。

尽管Gato和Flamingo在更大尺寸的模型上性能有所提升,VIMA也仍然好于所有模型。

ebe45bffa7a0a5660df54442486f99f2.png

在数据缩放(Data scaling)上,研究人员对各个方法的训练数据采取0.1%, 1%, 10%和全量模仿学习数据集的不同实验,VIMA仅需1%的数据,就能实现其他方法用10倍的数据训练的L1和L2泛化性指标。在L4指标上,仅需1%的训练数据,VIMA就已经要比其他模型在全量数据上训练效果要好了。

ec3412dec4fe20630a8cd1d92676a248.png

在渐进泛化(Progressive Generalization)性能对比中,在面向更难的泛化任务中,没有采用任何微调。VIMA模型的性能倒退最少,尤其是从L1到L2和L1到L3,而其他模型退化超过了20%,这也意味着VIMA学习到了更泛化的策略,更健壮的表征。 

参考资料:

https://arxiv.org/abs/2210.03094

outside_default.png

点个在看 paper不断!

这篇关于李飞飞两位高徒联合指导:能看懂「多模态提示」的机器人,zero-shot性能提升2.9倍...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/589920

相关文章

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

Tomcat高效部署与性能优化方式

《Tomcat高效部署与性能优化方式》本文介绍了如何高效部署Tomcat并进行性能优化,以确保Web应用的稳定运行和高效响应,高效部署包括环境准备、安装Tomcat、配置Tomcat、部署应用和启动T... 目录Tomcat高效部署与性能优化一、引言二、Tomcat高效部署三、Tomcat性能优化总结Tom

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.

利用Python编写一个简单的聊天机器人

《利用Python编写一个简单的聊天机器人》这篇文章主要为大家详细介绍了如何利用Python编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 使用 python 编写一个简单的聊天机器人可以从最基础的逻辑开始,然后逐步加入更复杂的功能。这里我们将先实现一个简单的

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

Mybatis提示Tag name expected的问题及解决

《Mybatis提示Tagnameexpected的问题及解决》MyBatis是一个开源的Java持久层框架,用于将Java对象与数据库表进行映射,它提供了一种简单、灵活的方式来访问数据库,同时也... 目录概念说明MyBATis特点发现问题解决问题第一种方式第二种方式问题总结概念说明MyBatis(原名

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

Ubuntu 24.04 LTS怎么关闭 Ubuntu Pro 更新提示弹窗?

《Ubuntu24.04LTS怎么关闭UbuntuPro更新提示弹窗?》Ubuntu每次开机都会弹窗提示安全更新,设置里最多只能取消自动下载,自动更新,但无法做到直接让自动更新的弹窗不出现,... 如果你正在使用 Ubuntu 24.04 LTS,可能会注意到——在使用「软件更新器」或运行 APT 命令时,

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

正则表达式高级应用与性能优化记录

《正则表达式高级应用与性能优化记录》本文介绍了正则表达式的高级应用和性能优化技巧,包括文本拆分、合并、XML/HTML解析、数据分析、以及性能优化方法,通过这些技巧,可以更高效地利用正则表达式进行复杂... 目录第6章:正则表达式的高级应用6.1 模式匹配与文本处理6.1.1 文本拆分6.1.2 文本合并6