首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >只需看一眼,伯克利最新机器人就可以copy你的动作!

只需看一眼,伯克利最新机器人就可以copy你的动作!

作者头像
大数据文摘
发布于 2018-07-31 06:50:03
发布于 2018-07-31 06:50:03
3470
举报
文章被收录于专栏:大数据文摘大数据文摘
大数据文摘出品

编译:halcyon、魏子敏

通过观察另一个人的做法来学习一项新技能,即模仿的能力,是人类和动物智力的关键部分。我们能让机器人做同样的事情吗?

伯克利研究中心近日po出的一个新的研究成果中,机器人也可以通过一次性观察,模仿人类的某个动作了。

观察人类之后,即使调整了顺序,机器人依然学会了把桃子放进红碗里?

让机器人具备这种“模仿”能力有什么意义呢?

伯克利称,这或许将成为我们与机器人沟通的一种新的方式。

之前,人类与机器人的沟通多基于要远程操作机器人或设计奖励函数。这种方法依赖一个成熟的感知系统,因此比较困难。而在模仿系统下,想要让机器人完成一个任务,我们只需简单地向机器人展示我们想让它们做什么就可以了。

其实,这一领域已有很多精彩的研究,比如模仿学习——机器人如何从自己的同类专家(即通过远程操作或动觉教学)中学习。

然而,基于视觉技能的模仿学习通常需要专家多次演示一项技能。

例如,使用原始像素输入访问单个固定对象,这样的任务需要多达200次演示,才能获得良好的性能。

如果演示次数太少,机器人一般很难学会。

此外,当机器人需要模仿表现出某种操作技能的人类时,这个问题变得更加具有挑战性。

首先,机器人的手臂看起来和人类的手臂有很大的不同;

第二,在人类演示和机器人演示之间建立正确的对应关系是非常难的。

只是跟踪和重新绘制运动图还不够简单:这项任务更关键地取决于这个运动如何影响世界中的物体,需要建立起一个基于交互的通信。

为了让机器人能够从一个人类的视频中模仿技能,伯克利这一研究的创新之处在于,让机器人融合以前的经验,而不是从头开始学习每一项技能。

通过结合以前的经验,机器人还应该能够快速地学习操作新对象,同时不改变域的改变,这种改变包括:提供演示的人、变化的背景场景或不同的视角。

伯克利希望通过学习从示范数据中学习来实现这两种能力:小样本模仿(few-shot imitation)和域不变性。这项技术,也被称为元学习,是我们如何让机器人具备通过观察并模仿人类的能力的关键。

点击查看元学习相关资料?:

http://bair.berkeley.edu/blog/2017/07/18/learning-to-learn/

一次性模仿学习(One-Shot Imitation Learning)

那么,如何利用元学习让机器人快速适应不同的对象呢?

伯克利的方法是将元学习和模仿学习结合起来,使一次性模仿学习成为可能。其核心思想是提供一个特定任务的单一演示,即操纵一个特定对象,机器人可以快速识别任务是什么,并在不同的环境下成功地解决它。

伯克利之前一项关于一次性模仿学习的研究通过学习成千上万的演示,获得了卓越的结果,比如在块堆叠等模拟任务上。

如果想要一个物理机器人能够模仿人类并操纵各种各样的新事物,我们需要开发一个新的系统,它可以学习如何从视频演示中学习,用一个可以在现实世界中实际收集的数据集。首先,讨论通过远程操作收集的单个演示的视觉模拟方法。然后,展示如何将它扩展到从人类的视频中学习。

一次性视觉模拟学习(One-Shot Visual Imitation Learning)

为了使机器人能够从观看视频中学习,伯克利的本次研究结合了模拟学习和有效的元学习算法,也即model-agnostic meta learning(MAML)。

点击查看元学习算法?

http://bair.berkeley.edu/blog/2017/07/18/learning-to-learn/

在这个方法中,伯克利用带有参数θ的卷积神经网络作为策略表示。从机器人相机和机器人结构

(如关节角度和关节速度)的图像

映射到机器人在t时刻的动作

(如抓手的线速度和角速度)。

以下是伯克利算法的三个主要步骤:

伯克利元学习算法的三个步骤?

首先,收集一个巨大的数据集,其中包含远程操作机器人执行许多不同任务的演示,在伯克利提供的例子中,这些任务对应于操作不同的对象。在第二步中,运用MAML学习一组初始的策略参数θ,这样,在被提供了某个对象的一个演示之后,可以对那个对象运行梯度下降法找到可概括的策略参数

。当使用远程操作演示时,可以通过比较策略的预测动作来计算策略更新

然后,通过驱动更新策略

匹配来自同一对象的另一个演示的操作来优化初始参数θ。在元训练之后,可以要求机器人通过使用该任务的一个演示来计算梯度步骤来操作完全不可见的对象。这一步叫做元测试。

由于该方法没有为元学习和优化引入任何额外的参数,结果证明它是非常数据有效的。因此,只需观看远程的机器人演示,就可以完成推放等多种控制任务:

使用单个演示将物体放置到新容器中。左:演示。右:学会策略。?

通过域自适应元学习观察人类的一次性模仿

上述方法仍然依赖于远程操作机器人的演示而非人类的演示。为此,伯克利还在上述算法的基础上,设计了一种域自适应一次性模拟方法。

伯克利收集了远程操作机器人和人类完成的许多不同任务的演示。然后,提供人工演示来计算策略更新,并使用执行相同任务的机器人演示来评估更新的策略。该算法的图示如下:

图:域自适应元学习概览

遗憾的是,由于人工演示只是一个人执行任务的视频,它不包含专家操作

,所以伯克利也提出,无法计算上面定义的策略更新。因此,其建议学习一个更新策略的损失函数,一个不需要动作标签的损失函数。

学习损失函数背后的直觉是,可以获得一个函数,该函数只使用可获得的输入、未标记的视频,但仍然可以生成用于更新策略参数的梯度,从而产生一个成功的策略。

虽然这似乎是一项不可能完成的任务,但重要的是要记住,在梯度步之后,元训练过程仍然用真正的机器人动作来管理策略。因此,学习损失的作用可能被解释为简单地指导参数更新,以修改策略,以在场景中获取正确的视觉线索,以便元训练的动作输出将产生正确的动作。用时间卷积表示学习的损失函数,它可以在视频演示中提取时间信息:

伯克利将这种方法称为域自适应元学习算法,因为它是从来自不同域的数据中学习(在这里指人类视频),机器人的策略在这个域中运行。伯克利通过这种方法,使PR2机器人能够有效地学习如何将在元训练中看不到的许多不同的物体推向目标位置:

学会通过观察人的动作推送一个新物体?

通过观察一个人对每个物体的操作,把很多物体放到目标容器中:

学会抓起一个新物体并把它放到之前没见过的碗中?

伯克利还使用在不同房间用不同的摄像机收集的人类演示来评估这种方法。机器人仍然能很好地完成这些任务:

通过观察不同的角度不同环境下的人来学习推一个新的物体?

下一步是什么?

伯克利称,既然其已经教机器人通过观看一个视频学会操纵新对象,下一步自然是进一步扩展这些方法,设置不同的任务对应于完全不同的运动和目标,比如使用各种各样的工具或玩各种各样的运动。

通过在任务的底层分配中考虑更多的多样性,我们希望这些模型能够实现泛化,允许机器人快速地为新情况制定策略。此外,在这里开发的技术并不是局限于机器人操纵甚至控制的。例如,模仿学习和元学习都被用于语言环境中,在语言和其他顺序决策环境中,学会模仿一些演示是未来工作的一个有趣的方向。

相关报道:

http://bair.berkeley.edu/blog/2018/06/28/daml/

今日机器学习概念】

Have a Great Definition

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-07-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据文摘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
JavaScript学习总结(四)——this、原型链、javascript面向对象
根据题目要求,对给定的文章进行摘要总结。
张果
2018/01/04
1.5K0
JavaScript学习总结(四)——this、原型链、javascript面向对象
js面向对象编程_JavaScript高级编程
面向过程即分析出解决问题所需要的步骤,然后用函数将这些步骤一步步实现,使用的时候再一个个的一次调用就可以了;
全栈程序员站长
2022/09/24
1.2K0
js面向对象编程_JavaScript高级编程
高级Js-面向对象编程
高级Js-面向对象编程 目录 JavaScript Window-浏览器对象模型 匿名包装器 工厂方式 工厂方式改进版 同一个引用 构造函数与new命令 prototype 对象 面向对象的写法 原型链 面向对象的继承 面向组件编程 命名空间 JavaScript Window-浏览器对象模型 浏览器对象模型(BOM) 所有浏览器都支持 window 对象. 它表示浏览器窗口. 全局变量是 window 对象的属性. 全局函数是 window 对象的方法. 甚至 HTML DOM 的 docu
星辉
2019/01/15
2K0
JS面向对象编程
通过instanceof来判断当前的的对象是否是实例化出来的,如果是实例化出来的this指向实例化出来的对象,也就是这里的Person,否则作为普通函数来说当前的this指向window
小丞同学
2021/08/16
4.2K0
全面理解面向对象的 JavaScript
前言 当今 JavaScript 大行其道,各种应用对其依赖日深。web 程序员已逐渐习惯使用各种优秀的 JavaScript 框架快速开发 Web 应用,从而忽略了对原生 JavaScript 的学习和深入理解。所以,经常出现的情况是,很多做了多年 JS 开发的程序员对闭包、函数式编程、原型总是说不清道不明,即使使用了框架,其代码组织也非常糟糕。这都是对原生 JavaScript 语言特性理解不够的表现。要掌握好 JavaScript,首先一点是必须摒弃一些其他高级语言如 Java、C# 等类式面向对象思
庞小明
2018/03/07
1.1K0
全面理解面向对象的 JavaScript
面向对象编程
面向对象把构成问题的transaction分解成各个对象,而建立对象的目的也不是为了完成一个个步骤,而是为了描述某个事物在解决整个问题的过程中所发生的行为,意在写出通用代码,加强代码重用,屏蔽差异性。
子舒
2022/06/09
7360
面向对象编程
第202天:js---原型与原型链终极详解
JavaScript 中,万物皆对象!但对象也是有区别的。分为普通对象和函数对象,Object 、Function 是 JS 自带的函数对象。下面举例说明
半指温柔乐
2018/09/11
9980
第202天:js---原型与原型链终极详解
JavaScript 进阶教程(1)--面向对象编程
一本书、一辆汽车、一个人都可以是对象,一个数据库、一张网页、一个与远程服务器的连接也可以是对象。当实物被抽象成对象,实物之间的关系就变成了对象之间的关系,从而就可以模拟现实情况,针对对象进行编程。
AlbertYang
2020/09/08
5420
JavaScript 进阶教程(1)--面向对象编程
[JavaScript进阶]从JavaScript原型到面向对象
首先给出结论,JavaScript 的本身是支持面向对象的,它本身具备着强大灵活的 OOP 语言能力。但是对于使用过基于类的语言 (如 Java 或 C++) 的开发人员来说,JavaScript 确实有点令人困惑,因为它是动态的,并且本身不提供一个 class 实现。虽然在 ES6 中引入了 class 关键字,但它只是一个语法糖,本质还是基于JavaScript 的原型来实现的。
用户1462769
2019/08/12
6830
[JavaScript进阶]从JavaScript原型到面向对象
深度剖析前端JavaScript中的原型(JS的对象原型)
JavaScript 常被描述为一种基于原型的语言 (prototype-based language)——每个对象拥有一个原型对象,对象以其原型为模板、从原型继承方法和属性。原型对象也可能拥有原型,并从中继承方法和属性,一层一层、以此类推。这种关系常被称为原型链 (prototype chain),它解释了为何一个对象会拥有定义在其他对象中的属性和方法。
Tz一号
2020/09/10
1.3K0
JavaScript继承背后的场景-prototype,__proto__, [[prototype]]
每个对象都可以有另一个对象作为其原型。然后前一个对象继承了它的所有原型属性。对象通过内部属性[[Prototype]]指定其原型。由[[Prototype]]属性连接的对象链称为原型链。
前端迷
2019/07/27
6890
js面向对象理解
ECMAScript 有两种开发模式:1.函数式(过程化),2.面向对象(OOP)。面向对象的语言有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。但是,ECMAScript 没有类的概念,因此它的对象也与基于类的语言中的对象有所不同。
全栈若城
2024/02/29
2450
js面向对象理解
实现JavaScript继承
使用TypeScript或者ES2015+标准中的extends关键字是很容易实现继承的,但这不是本文的重点。JS使用了基于原型(prototype-based)的继承方式,extends只是语法糖,本文重点在于不使用extends来自己实现继承,以进一步理解JS中的继承,实际工作中肯定还是要优先考虑使用extends关键字的。
雪飞鸿
2020/12/29
6270
JavaScript原型链与继承
只要是对象,一定有原型对象,就是说只要这个东西是个对象,那么一定有proto属性。(错的)
用户7043603
2022/02/26
1.6K0
深入理解JavaScript原型:prototype,__proto__和constructor
JavaScript语言的原型是前端开发者必须掌握的要点之一,但在使用原型时往往只关注了语法,其深层的原理并未理解透彻。本文结合笔者开发工作中遇到的问题详细讲解JavaScript原型的几个关键概念,如有错误,欢迎指正。 1. JavaScript原型继承 提到JavaScript原型,用处最多的场景便是实现继承。然而在实现继承时总有一些细节处理不到位,引起一些看起来莫名其妙的问题。比如使用下述代码: function Animal(){} Animal.prototype = {}; function
寒月十八
2018/01/30
8890
JavaScript 进阶教程(3)---让你彻底搞懂原型链和继承
关于原型在JavaScript 进阶教程(1)--面向对象编程这篇文章已经讲过了,今天简单来复习一下。
AlbertYang
2020/09/08
5420
JavaScript 进阶教程(3)---让你彻底搞懂原型链和继承
一站搞定原型链:深入理解JavaScript的继承机制
JavaScript 的原型链(prototype chain)是理解 JavaScript 对象和继承机制的关键。它是通过对象的原型(prototype)属性实现的,用于实现对象属性和方法的共享和继承。以下是对 JavaScript 原型链的详细介绍,这一篇文章将会通过理论与demo相结合的方式,力争一文概括原型、对象、原型链以及基于原型链实现JavaScript的继承机制的所有方面,帮助您一站式搞定原型链。
watermelo37
2025/01/22
1110
一站搞定原型链:深入理解JavaScript的继承机制
解释JavaScript中的原型链
在JavaScript中,原型链是实现对象继承的核心机制。通过原型链,JavaScript能够让对象共享属性和方法,从而实现代码的重用和更灵活的对象模型。本文将详细探讨原型链的概念、机制、使用以及在实际开发中的应用。
王小婷
2025/05/25
1080
JavaScript 面向对象
创建函数 Foo 的时候,就会有一个内置的 Foo.prototype 属性,并且这个属性是对象。
零式的天空
2022/03/02
2940
JS面向对象二:this/原型链/new原理
也可以看看这篇文章周大侠啊 进击的 JavaScript(六) 之 this先了解一下`this的四种绑定规则和箭头函数的this绑定
代码之风
2018/10/31
2.2K0
推荐阅读
相关推荐
JavaScript学习总结(四)——this、原型链、javascript面向对象
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档