论文阅读笔记《Grounded Action Transformation for Robot Learning in Simulation》

news2024/11/28 4:52:36

Grounded Action Transformation for Robot Learning in Simulation

发表于AAAI 2017

仿真机器人学习中的接地动作变换

Hanna J, Stone P. Grounded action transformation for robot learning in simulation[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2017, 31(1).

介绍

接地模拟学习(Grounded Simulation Learning, GSL)框架:使用从现实环境中搜集的轨迹优化模拟环境,再使用优化后的模拟环境训练策略。该框架假设模拟器是可修改的。

GSL算法包含以下步骤:

  1. 在模拟环境中使用强化学习算法训练一个控制策略。
  2. 将该策略应用于物理机器人,并记录其执行过程中的状态和动作序列。
  3. 使用这些数据来校准模拟器,使其更好地匹配物理机器人的动力学特性。
  4. 重复步骤1-3,直到在模拟环境中训练出一个更好的控制策略。
image-20230409205627273
图1 接地模拟学习框架示意图。

本文介绍了一种基于GSL框架的模拟器接地新算法——接地动作转换(Grounded Action Transformation, GAT)。用少量的真实世界和模拟数据来学习一个接地函数,允许模拟器在较少依赖人工系统识别的情况下进行修改。

此外,通过修改被模拟机器人的动作,他们可以将模拟器视为一个黑盒子,不需要访问模拟器的内部参数。

相关工作

他们将虚实迁移的文献分为四类:模拟器修改,模拟器随机化,模拟器作为先验知识,以及虚实感知学习。

模拟器修改:他们将尝试使用真实世界经验来修改模拟器。

模拟器作为先验知识:最初在模拟中进行训练,使用模拟器训练机器人的低维度行为(例如如何保持平衡),从而使机器人具有先验知识。然后在真实环境中进行最后一段学习,学习高维度动作。

方法

变换函数

GAT算法学习两个函数

x x x 是状态分量 s s s 的子集,也就是对任务有突出贡献的状态向量。

X \mathcal{X} X 是所有 x x x 可能值的集合。

f : S × A → X f:\mathcal{S}\times\mathcal{A}\to\mathcal{X} f:S×AX,它预测在现实环境中执行某动作对重要的状态变量的影响。

f s i m − 1 : S × X → A f^{-1}_{sim}:\mathcal{S}\times\mathcal{X}\to\mathcal{A} fsim1:S×XA,它预测在模拟环境中再现该效果所需的动作。

总变换函数

g ( s , a ) : = f s i m − 1 ( s , f ( s , a ) ) g(s,a):=f^{-1}_{sim}(s,f(s,a)) g(s,a):=fsim1(s,f(s,a)),作用是将当前状态和动作映射到一个新的动作,以便在仿真环境中更好地模拟真实世界中的行为。

g g g 的近似为机器人的运动引入了噪声。为了保证稳定的运动,GAT使用平滑参数 α \alpha α。动作转换函数定义为:
g ( s t , a t ) : = α f s i m − 1 ( s t , f ( s t , a t ) ) + ( 1 − α ) a t g(s_t,a_t):=\alpha f^{-1}_{sim}(s_t,f(s_t,a_t))+(1-\alpha)a_t g(st,at):=αfsim1(st,f(st,at))+(1α)at
在他们的实验中,他们将 α \alpha α 设得尽可能高,以保持行走稳定。

基于变换函数的增强模拟器

策略计算一个动作,然后传递给动作接地模块。这个模块首先预测在现实世界中所采取的动作所对应的状态变量的值。然后,该模块使用逆动力学模型 f s i m − 1 f^{−1}_{sim} fsim1 来计算在模拟中产生相同效果的动作。最后,将策略的操作替换为预测的操作,并将修改后的操作传递给模拟器。

在修改模拟器时, f f f 网络接收 s t s_t st a t a_t at 作为输入, f s i m − 1 f^{-1}_{sim} fsim1 网络接收 s t s_t st f f f 的输出作为输入。 f s i m − 1 f^{-1}_{sim} fsim1 的最终输出是替换 操作一个 a t ^ \hat{a_t} at^

image-20230409210015431
图2 基于监督学习的增强模拟器。

函数的实现

GAT使用两个神经网络来近似 f f f f s i m − 1 f^{-1}_{sim} fsim1。每个函数都是一个三层网络,第一层有200个隐藏单元,第二层有180个隐藏单元。

a t a_t at 是一个期望关节角度的向量, f f f 的动作输入和 f s i m − 1 f^{-1}_{sim} fsim1 的动作输出被编码为 x t x_t xt 的期望变化,这被发现可以提高预测。他们让 f f f 预测在 s t s_t st 处执行引起的关节加速度,而不是直接预测 s t + 1 s_{t+1} st+1。然后,加速度可以被积分并加到 s t + 1 s_{t+1} st+1 上,从而产生下一个状态。

函数的训练

函数 f f f f s i m − 1 f^{-1}_{sim} fsim1 是通过监督学习来训练的。具体而言,函数 f f f 是通过收集一小部分真实世界轨迹并构建一个监督学习数据集来学习的。该数据集包含输入状态和输出动作的对应关系,即 { ( s i , a i ) } → { x i } \{(s_i,a_i)\}→\{x_i\} {(si,ai)}{xi}。类似地,函数 f s i m − 1 f^{-1}_{sim} fsim1 是通过收集模拟轨迹并构建一个监督学习数据集来学习的。该数据集包含输入状态和输出状态的对应关系,即 { ( s i , x i ′ ) } → { a i } \{(s_i,x'_i)\}→\{a_i\} {(si,xi)}{ai}

在本文中,作者使用了神经网络,并使用梯度下降算法在均方误差损失上进行训练。

实验

实验设置

策略训练

他们在双足机器人行走任务中评估了GAT。行走采用范围为 [ 0 , 1 ] [0,1] [0,1] 的目标前进速度参数。他们将这个参数设置为0.75,他们发现这是稳定可靠的最快步行。机器人以这个速度向目标前进。如果机器人与目标的夹角大于5度,它会在继续前进的同时转向目标。在所有环境中, J ( θ ) J(θ) J(θ)是执行 θ θ θ 时平均向前行走速度的负数。

image-20230410103109481

图3 这项工作中使用的三个机器人环境。

在物理机器人上,一旦机器人走了4米或摔倒,就停止搜集轨迹。 θ 0 θ_0 θ0 产生的轨迹在机器人上持续大约20.5秒。在模拟环境中,在固定时间间隔后或机器人摔倒时停止搜集轨迹。

以前的工作表明,当使用从数据估计的模型时,最好使用更短的动作轨迹,以避免对不准确的模型过拟合。即使对于相同的 s t s_t st a t a_t at,虚拟环境中的 s t + 1 s_{t+1} st+1 也很可能与现实环境中的 s t + 1 s_{t+1} st+1 不同。由于 s t s_t st 点的状态误差会向前传播到 s t + 1 s_{t+1} st+1,因此这种误差在运行过程中会叠加。

作者使用了协方差矩阵适应进化策略(Covariance Matrix Adaption-Evolutionary Strategy, CMA-ES)算法来优化策略参数 θ \theta θ。具体来说,他们使用CMA-ES算法从一个高斯分布中采样150个候选策略参数,并根据这些参数生成一组新的策略。然后,他们在模拟器中用每个策略的20条轨迹评估这些策略,并选择最好的k个策略用于更新采样分布。更新采样分布是通过最好的k个策略参数的加权平均值来实现的。具体来说,每个策略参数都被赋予一个权重,该权重与该策略在评估中获得的成绩成正比。然后,这些加权策略参数被用于计算新的采样分布,并用于生成下一代候选。作者将此过程重复10次,以找到最佳的 θ \theta θ 值。

sim-to-sim实验

由于很难在物理机器人上进行大量的试验,他们提出了一项使用Gazebo作为现实世界替代品的GAT研究。

作者对比了三种方法:

  • 没有接地的学习方法。
  • 使用噪声包围盒(NOISE-ENVELOPE)的接地方法,这是一种在模拟器中注入噪声来接地模拟器的方法。具体来说,该方法将标准高斯噪声添加到未grounded模拟器中的机器人动作中,以鼓励CMA-ES算法提出更加鲁棒的策略。这种方法可以减少模拟偏差,并防止策略改进算法过度适应模拟器动力学。
  • 该文提出的Grounded Action Transformation(GAT)算法。

作者通过在模拟器中注入噪声来评估这些方法,并比较它们在改进策略方面的效果以及需要多少次迭代才能达到最佳策略。结果表明,GAT算法相对于其他两种方法具有更好的性能,可以更有效地接地模拟器,并且可以更快地找到改进后的策略。

sim-to-real实验

他们在实际的NAO机器人上测试在模拟器中优化得到的策略参数。具体来说,作者使用了15条轨迹来收集在实际NAO机器人上初始姿态下行走的数据集D。然后,对于每个迭代,CMA-ES算法会从高斯分布中采样一组参数向量,并使用这些向量生成一组策略。接着,算法会对每个策略进行10代进化,并评估每代中表现最好的策略。最后,将表现最好的策略应用于实际NAO机器人上,并使用5条轨迹来评估其性能。如果该策略在任何一条轨迹上导致机器人摔倒,则认为该策略不稳定。

实验结果

sim-to-sim实验

表1 使用GAT算法和其他方法训练机器人行走策略的结果。
image-20230410141917303
  • “% Improve”指的是每种方法在训练过程中,相对于初始策略,平均最大奖励值提高的百分比。
  • “Failures”指的是每种方法在训练过程中,无法找到稳定行走策略的次数。具体来说,算法会在初始策略上进行一定次数的迭代优化,并记录每次迭代后是否找到了稳定行走策略。如果算法无法找到稳定行走策略,则将此次数记录为“Failures”。
  • “Best Gen”指的是每种方法在训练过程中,找到最佳策略时所需的迭代次数。

GAT有最好的实验效果。

表1还显示,随着策略改进的进行,策略开始过度适应虚拟环境的动力学。没有接地的环境几乎立即就会过拟合。噪声包围盒对过拟合具有更强的鲁棒性,因为它所提出的策略在有噪声的虚拟环境中都取得了良好的性能。GAT算法所做的基础性工作是将仿真环境与真实环境之间进行校准,使得在仿真环境中执行的动作能够在真实环境中得到相似的结果。但是,这种校准是基于初始策略参数 θ 0 θ_0 θ0 的轨迹分布进行的,因此当策略参数 θ θ θ 在改进过程中发生变化时,动作转换函数可能无法产生更加逼真的仿真器。

sim-to-real实验

作者使用了SimSpark仿真环境来进行初始策略的学习,并将学到的策略应用于真实的NAO机器人上。作者比较了在仿真环境中使用GAT算法和未使用GAT算法时,NAO机器人行走速度的差异。

结果表明,在经过两次迭代后,使用SimSpark和GAT算法可以将NAO机器人的行走速度从19.52厘米/秒提高到27.97厘米/秒,相对于初始策略参数 θ 0 θ_0 θ0 而言,提高了43.27%。同时,在SimSpark和Gazebo两种仿真环境下,使用GAT算法都可以将行走速度提高30%以上。这些结果表明,该方法具有一定的通用性,可以在不同的仿真环境中得到良好的效果。

表2 使用GAT算法和其他方法对比机器人行走速度和提升百分比。
image-20230411144746068

总结与展望

本文提出的算法GAT有一些局限性,主要在于其决策学习一个动作修改函数g的假设,即对于所有可能在物理机器人上观察到的状态转移 ( s t , a t , s t + 1 ) (s_t, a_t, s_{t+1}) (st,at,st+1),存在一个动作 a t ^ \hat{a_t} at^,当用 a t ^ \hat{a_t} at^ 代替 a t a_t at 时会产生相同的状态转移。这个假设通常是成立的,因为可以在仿真中以更多或更少的力执行 a t ^ \hat{a_t} at^ 以达到所需的响应。但是,在接触动力学下,外部力会阻碍机器人的行动,这个假设可能会失效。其他任务可能会引入其他形式的模拟器偏差,GAT目前无法处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/470963.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux中的阻塞机制

我们知道在字符设备驱动中,应用层调用read、write等系统调用终会调到驱动中对应的接口。 可以当应用层调用read要去读硬件的数据时,硬件的数据未准备好,那我们该怎么做? 一种办法是直接返回并报错,但是这样应用层要获得…

linux通配符和正则表达式深层解析...

目录: (一)了解通配符和正则的作用 (二)通配符的使用 (三)正则表达式的使用 (四)扩展正则表达式的使用 (一)了解通配符和正则的作用 (1.1)在我们日常的工作中,我们都会使用到通配符或者正则表达式。通配符是一种特殊语句,主要有星号(*)和问号…

交换机和路由器到底有什么区别???

我:度娘度娘,交换机和路由器的区别是什么呢? 度娘:一个工作在第二层数据链路层,一个工作在第三层网络层。 我:哈?那工作在不同层会有什么区别?为什么要工作在不同层? …

2023五一数学建模A题完整思路

已更新五一数学建模A题思路,文章末尾获取! A题完整思路: A题是一个动力学问题,需要我们将物理学概念运用到实际生活中,我们可以先看题目 问题1: 假设无人机以平行于水平面的方式飞行,在空中投…

Windows11安装sqlserver2012失败后解决方案

首先卸载 WinR打开运行输入services.msc查看所有服务/或者我的电脑管理找到服务列表/任务管理器进入服务列表,停止所有与Sql Server有关的服务,如下: 打开控制面板-卸载sqlserver所有相关软件; 删除SQL Server相关注册表&#…

【观察】中国软件行业进入“重构期”,看浪潮海岳如何“开新局”

众所周知,改开四十多来年,中国软件产业在经历了萌芽与低谷、摸索与转型后,逐步进入了快速发展期。特别是过去几年,在新的发展格局,信创替代的进程中,整个中国软件业更是加速进入了全新的“重构期”。 在此过…

Unity API详解——Quaternion类

Quaternion类又称四元数,由x、y、z和w这4个分量组成,属于struct类型。在Unity中,用Quaternion来存储和表示对象的旋转角度。Quaternion的变换比较复杂,对于GameObject一般的旋转及移动,可以用Transform中的相关方法实现…

CH32V307环境参数在线监测系统(一)

CH32V307环境参数在线监测系统是以CH32V307VCT6为核心,由ESP8266模块、DHT11温湿度传感器模块、TFT LCD显示屏组成。系统实物图如下所示: 系统功能主要有RTC实时时钟、WIFI网络授时、DHT11温度测量、温湿度数据实时上传到onenet平台、屏幕定时刷新等功能…

在Docker上安装和运行MySQL容器(纯步骤)

在Docker上安装和运行MySQL步骤 本文章只有操作步骤,没有原理解释,只是在学习当中提醒自己安装步骤。 第一步:从远程仓库拉取MySQL镜像 1.从远程仓库搜索mysql镜像 docker search mysql2.pull拉取镜像 这里我选择的是mysql的5.7版本 docker…

盘点 5 个 yyds 的 AI 绘画辅助工具

国外著名的 AI 作图工具 Midjourney、Stable Diiffusion 都可以根据你输入的指令生成一张图片。 如果你想输出高质量的图片,需要掌握一些 prompt 指令技巧。本文章便盘点了 5 个 GitHub 上的开源项目,引领你更好的上手 AI 作图。 本期推荐开源项目目录&…

软件杯龙源风电赛题培训!千万分钟数据和全流程基线等你来战

‍‍ “中国软件杯”大学生软件设计大赛是一项面向中国在校学生的公益性赛事,大赛由国家工业和信息化部、教育部、江苏省人民政府共同主办,是全国软件行业规格最高、最具影响力的国家级一类赛事。其中,作为重点赛题的龙源风电赛,上…

我们分析了9.12亿篇博客文章,得出了11条内容营销发现

我们分析了 9.12 亿篇博客文章,想要更好地了解目前的内容营销领域。 具体来说,我们研究了这些文章的内容格式、字数和标题等因素与社交媒体分享和反向链接的关联性。 在我们的数据合作伙伴BuzzSumo的帮助下,我们有了一些非常有趣的发现。 …

Dex-Net使用手册————GQCNN网络

1. Dex-Net Package GitHub - BerkeleyAutomation/dex-net 🎈dex-net Python 包用于打开、读取和编写 HDF5 数据库的 3D 对象模型、平行下颚抓取和掌握鲁棒性指标。 🎈HDF5数据库还可用于生成大量数据集,将点云和抓取的元组与二进制抓取鲁棒…

【Python】【进阶篇】12、搭建Django开发环境

目录 搭建Django开发环境1. 安装Python解释器2. 安装MySQL数据库3. 安装Python包管理器4. 安装 Pycharm IDE 搭建Django开发环境 上一章我们介绍了 Django 框架的重要组件,常言道“工欲善其事,必先利其器”,在正式创建 Django 项目之前&…

AI绘画——Lora模型Niji-Expressive V2 launch(灵动优雅,张力尽显)

目录 Niji-Expressive V2 launch!! 灵动优雅,张力尽显 Vivid and elegant, full of tension 模型演示(多图预警) Niji-Expressive V2 launch!! 灵动优雅,张力尽显 本次升级泛用性,能在更多模型和采样方式上适用 …

《一文带你读懂:云原生时代业务监控》

点击上方蓝字关注我们! 对业务来说,完备的应用健康性和数据指标的监控非常重要,通过采集准确的监控指标、配置合理的告警机制,我们能够提前或者尽早发现问题,并做出响应、解决问题,进而保证产品的稳定性&am…

vue性能优化之虚拟列表滚动

一、前言 前端的性能瓶颈那就是页面的卡顿,当然这种页面的卡顿包含了多种原因。 例如HTTP请求过多导致数据加载变慢,下载的静态文件非常大导致页面加载时间很长,js中一些算法响应的时间过长等。很多前端工程师都花费很多的精力在dom渲染上来…

Java 入门 - 语法基础

hello world public class Hello {public static void main(String[] args) {System.out.println("hello world");} } 复制代码 public: 是关键字;表示公开的class: 是关键字;用来定义类Hello: 是类名;大小写敏感;命名…

BFS算法专题

BFS算法专题 框架篇LeetCode 111. 二叉树的最小深度解题思路代码实现 LeetCode 752. 打开转盘锁解题思路代码实现 LeetCode 773. 滑动谜题解题思路代码实现 总结 不要纠结,干就完事了,熟练度很重要!!!多练习&#xff0…

Vivado约束添加方法:一文全面解析IO和时序约束

FPGA开发离不开IO约束和时序约束,IO约束用于确定输入/输出端口的物理端口和电气特性,与芯片和电路设计有关。而时序约束则用于设定FPGA设计中的时序特性,以确保系统能够在预期时钟频率下正常运行。本文将介绍vivado中常见的设置约束的方法。 …