One-Shot Visual Imitation Learning via Meta-Learning

2024-08-29 04:52

本文主要是介绍One-Shot Visual Imitation Learning via Meta-Learning,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

发表时间:CoRL 2017

论文链接:https://readpaper.com/pdf-annotate/note?pdfId=4667206488817680385&noteId=2408726470680795136

作者单位:University of California, Berkeley

Motivation:为了使机器人成为可以执行广泛工作的通才,它必须能够在复杂的非结构化环境中快速高效地获取各种各样的技能。深度神经网络等大容量模型可以使机器人代表复杂的技能,但从头开始学习每个技能变得不可行

解决方法:在这项工作中,我们提出了一种元模仿学习方法,使机器人能够更有效地学习如何学习,使其能够仅从单个演示中获取新的技能(a new object into a new container from a single demonstration)。与之前关于一次性模仿的方法不同,我们的方法可以扩展到原始像素输入,并且需要来自明显更少的先前任务的数据来有效地学习新技能。

实现方式combine meta-learning with imitation learning

与之前将任务区分 或演示 作为上下文策略的输入的方法不同,我们的方法学习了一个参数化策略,该策略可以通过梯度更新来适应不同的任务,有效地学习模仿学习。

通过跨任务的适应训练,元学习有效地将整个任务视为数据点。每个单独任务可用的数据量相对较小。在机器人的背景下,这正是我们想要开发通才机器人所需要的——能够为机器人应该执行的每个新任务提供少量监督的能力。a policy π that maps observations o to predicted actions a

在元训练期间,每个元优化步骤包含以下内容:采样一批任务,每个任务采样两个演示。使用其中一个演示,使用公式 2 的梯度下降为每个任务 Ti 计算 θ′i。然后,使用每个任务的第二个演示通过使用等式 1 和等式 2 中的损失来计算元目标的梯度。最后,根据元目标的梯度更新 θ。实际上,一对演示用作训练验证对。(也就是说,并不是但不纯意义上的one-shot,实际上是two-shot

在元训练结束时,从 p(T) 中采样新任务,并通过策略从一个演示中学习后的性能来衡量元性能。用于元测试的任务在元训练期间被保留。(也就是说,元测试使用的是元训练过程中从one demonstration 学习到的知识。)

在元测试时,对新任务 T 进行采样,为该任务提供一个演示,并更新模型以获得该任务的策略。在元测试期间,新任务可能涉及新的目标或操纵新的、以前看不见的对象。

  • Two-Head Architecture:在标准的MAML框架中,在“前梯度更新”和“后梯度更新”中(没搞懂这两个的区别,好像是类似MAML外循环和内循环),使用的网络是相同的,都输出的是action,并且都使用标准的loss function。本文中,我们做出了这样的尝试:“前梯度更新”和“后梯度更新”依旧共用前面所有的架构,只是输出动作之前的最后一个隐藏层不再共享,而是一人一个隐藏层,称之为两个不同的“head”。

  • a bias transformation:我们发现提高元学习性能的一种特殊修改是将参数向量连接到突触后激活的隐藏层,这导致我们将其称为bias transformation。变换偏差的梯度更新可以通过W2和z的值更直接地控制,其值不直接影响网络中其他参数的梯度。总之,偏差变换增加了梯度的表征能力,而不影响网络本身的表征能力。

实验:one-shot imitation in three experimental domains

尝试了好多种policy:

  • random policy: A policy that outputs random actions from a standard normal distribution.

  • contextual policy: A feedforward policy, which takes as input the final image of the demonstration, to indicate the goal of the task, and the current image, and outputs the current action.

  • LSTM: A recurrent neural network which ingests the provided demonstration and the current observation, and outputs the current action, as proposed by Duan et al. [5].

  • LSTM+attention: A recurrent neural network using the attention architecture proposed by Duan et al. [5]. This method is only applicable to non-vision tasks.

Simulated Pushing:We designed the pushing environment starting from the OpenAI Gym PusherEnv.We see that the LSTM approach has difficulty learning without the expert actions.

Real-World Placing:a 7-DoF PR2 robot arm,每个演示包括摄像机视频、末端执行器姿态序列和动作序列——末端执行器线速度和角速度。

结论:基于梯度的元学习使得我们的方法在元训练所需的演示数量(只需要1-shot)方面更有效。

这篇关于One-Shot Visual Imitation Learning via Meta-Learning的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

SAM2POINT:以zero-shot且快速的方式将任何 3D 视频分割为视频

摘要 我们介绍 SAM2POINT,这是一种采用 Segment Anything Model 2 (SAM 2) 进行零样本和快速 3D 分割的初步探索。 SAM2POINT 将任何 3D 数据解释为一系列多向视频,并利用 SAM 2 进行 3D 空间分割,无需进一步训练或 2D-3D 投影。 我们的框架支持各种提示类型,包括 3D 点、框和掩模,并且可以泛化到不同的场景,例如 3D 对象、室

速通GPT-3:Language Models are Few-Shot Learners全文解读

文章目录 论文实验总览1. 任务设置与测试策略2. 任务类别3. 关键实验结果4. 数据污染与实验局限性5. 总结与贡献 Abstract1. 概括2. 具体分析3. 摘要全文翻译4. 为什么不需要梯度更新或微调⭐ Introduction1. 概括2. 具体分析3. 进一步分析 Approach1. 概括2. 具体分析3. 进一步分析 Results1. 概括2. 具体分析2.1 语言模型

简单的Q-learning|小明的一维世界(3)

简单的Q-learning|小明的一维世界(1) 简单的Q-learning|小明的一维世界(2) 一维的加速度世界 这个世界,小明只能控制自己的加速度,并且只能对加速度进行如下三种操作:增加1、减少1、或者不变。所以行动空间为: { u 1 = − 1 , u 2 = 0 , u 3 = 1 } \{u_1=-1, u_2=0, u_3=1\} {u1​=−1,u2​=0,u3​=1}

简单的Q-learning|小明的一维世界(2)

上篇介绍了小明的一维世界模型 、Q-learning的状态空间、行动空间、奖励函数、Q-table、Q table更新公式、以及从Q值导出策略的公式等。最后给出最简单的一维位置世界的Q-learning例子,从给出其状态空间、行动空间、以及稠密与稀疏两种奖励函数的设置方式。下面将继续深入,GO! 一维的速度世界 这个世界,小明只能控制自己的速度,并且只能对速度进行如下三种操作:增加1、减

pytorch torch.nn.functional.one_hot函数介绍

torch.nn.functional.one_hot 是 PyTorch 中用于生成独热编码(one-hot encoding)张量的函数。独热编码是一种常用的编码方式,特别适用于分类任务或对离散的类别标签进行处理。该函数将整数张量的每个元素转换为一个独热向量。 函数签名 torch.nn.functional.one_hot(tensor, num_classes=-1) 参数 t

leetcode#66. Plus One

题目 Given a non-negative integer represented as a non-empty array of digits, plus one to the integer. You may assume the integer do not contain any leading zero, except the number 0 itself. The digi

【Visual Studio 报错】未加载 wntdll.pdb(一种可行的解决办法)

调试程序时,会出现下面这个报错 分析原因: 出现未加载 wntdll.pdb 报错大概率是你的指针使用错误 ,比如使用野指针、越界访问、或者堆区空间释放方式错误等。 这里以 堆区空间释放方式错误 为例子 1、堆区开辟的数组空间使用 delete 释放 // 堆区开辟的数组空间使用 delete 释放int* p = new int[10];delete p; 正

查看Excel 中的 Visual Basic 代码,要先设置excel选项

1. excel VB的简单介绍 百度安全验证 2.excel选项设置 excel表格中在选项->自定义功能区域,选择开发工具,visual baisc/查看代码,即可看到代码。 3.excel已经设置,可以直接查看

[VC] Visual Studio中读写权限冲突

前置场景: 编译没有报错,但是运行提示 内存异常: 情景1: 如下代码运行异常,提示引发了异常:写入权限冲突。*** 是 0xFFFFF..... char* str = (char*)malloc(10);str[0] = 0x30;  解决方案:要包含头文件<stdlib.h>  情景2: 在FileA文件调用FileB文件的函数,但是在FileA中却没有声明该B函数的原型