机器人走路未必笨拙,DeepMind新方法训练的人工智能走得就很飘逸

本文主要是介绍机器人走路未必笨拙,DeepMind新方法训练的人工智能走得就很飘逸,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

机器人走路未必笨拙,DeepMind新方法训练的人工智能走得就很飘逸

雷锋网(公众号:雷锋网) AI 科技评论按:无论是在树木间乱窜的猴子,还是躲避对手和进击目标的足球运动员,他们灵活敏捷的速度,都让人十分惊叹。掌握这种复杂的电机控制是物理智能研究的方向,是 AI 研究的重要组成部分。

真正的智能电机需要在一系列复杂的环境中,学习如何调节控制身体使其更加灵活来完成任务。目前,很多领域开始研究如何控制模拟人,包括计算机动画和生物力学领域。智能电机的另一种发展趋势是,使用手工制作的目标或运动捕捉的数据来产生特定的行为。 然而,这可能需要相当多技术工作的努力,也可能会导致智能电机面对新任务时,难以重新调整行为。

在以下 3 篇新的论文中,阐述了 DeepMind 已经找到了 AI 学习灵活行为的方式,这种方式不仅能够重复使用,还能解决任务。

一、丰富的环境中表现的运动行为

如果玩 Atari 或 Go 时,目标很容易描述,就是赢。但是你如何描述一个后空翻表演的过程?或者仅仅只是单纯描述一下“跳”这个动作?当 DeepMind 把运动技能教授给人工系统时,常常会遇到这个问题,就是很难准确描述一个复杂的行为。 DeepMind 目前的工作就是研究如何在简单高水平的目标下,使身体能够从头开始与环境相互作用来完成复杂的行为,例如向前移动而不会下降。更具体地说,他们训练了各种模拟人,让他们在不同的地形上进行跳跃,转弯或者蹲伏。结果显示,模拟人完成这些复杂的技能前,并没有收到具体的指示。 DeepMind 需要找到一种方法,可以训练系统中明显不同的模拟人。下面的 GIF 显示了能够产生高质量的运动的技术。

机器人走路未必笨拙,DeepMind新方法训练的人工智能走得就很飘逸
模拟的“平面”步行者反复尝试

机器人走路未必笨拙,DeepMind新方法训练的人工智能走得就很飘逸

模拟的“蚂蚁”步行者在学习如何在木板之间精确地跳跃

二、通过对抗模仿学习人体行为

上述的模拟人解决突发行为的能力非常强大,但是由于这些动作必须从头开始,所以模拟人的动作看起来和人类行为不太一样。在 DeepMind 的第 2 篇论文中,阐述了如何通过运动捕捉数据来构建一个模仿人类行为的政策网络,需要预先学习一些技能,例如步行、起步、跑步和转弯等等。目前,模拟人已经产生了类似人类的行为,可以通过重新调整这些行为来完成其他任务,比如爬楼梯,通过导航绕过围墙等等。

下面的 GIF 可以查看模拟人的行为。

机器人走路未必笨拙,DeepMind新方法训练的人工智能走得就很飘逸
人形步行者产生类似人类的行走行为

机器人走路未必笨拙,DeepMind新方法训练的人工智能走得就很飘逸

人形步行者摔倒后立即站起来

三、模拟人模仿人类各种行为

第 3 篇论文提出了构建一种最先进的生成模型的神经网络结构,它能够学习不同行为之间的关系,并模仿它所显示的具体动作。经过训练之后, DeepMind 的系统可以编码观察到的动作,还可以创建新的小动作。尽管模拟人并没有看到动作之间的过渡,依旧可以在不同类型的动作之间切换,例如在行走风格之间的转换。

机器人走路未必笨拙,DeepMind新方法训练的人工智能走得就很飘逸
GIF 中左侧和中间演示了两个行为;GIF 中右侧展示了模拟人在不同行为之间产生了它从未见过的过渡
机器人走路未必笨拙,DeepMind新方法训练的人工智能走得就很飘逸
GIF 中左侧平面步行者演示了特定的行走风格;GIF 中右侧展示了我们的模拟人使用单一政策网络来模仿这种行走风格

实现模拟人行动灵活且适应控制是 AI 研究的关键要素。 DeepMind 的工作旨在开发一套系统,能够通过学习和调整技能来解决电机控制任务,同时减少手动工程。 DeepMind 未来的研究工作主要是扩展这些方法,以便在更复杂的情况下完成更多的任务。雷锋网 AI 科技评论也会继续保持关注。

论文地址:

  • Emergence of locomotion behaviours in rich environments,https://arxiv.org/abs/1707.02286 

  • Learning human behaviours from motion capture by adversarial imitation,https://arxiv.org/abs/1707.02201 

  • Robust imitation of diverse behaviours,https://arxiv.org/abs/1707.02747 

via DeepMind,雷锋网 AI 科技评论编译

本文作者:白及

本文转自雷锋网禁止二次转载,原文链接

这篇关于机器人走路未必笨拙,DeepMind新方法训练的人工智能走得就很飘逸的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

C++实现回文串判断的两种高效方法

《C++实现回文串判断的两种高效方法》文章介绍了两种判断回文串的方法:解法一通过创建新字符串来处理,解法二在原字符串上直接筛选判断,两种方法都使用了双指针法,文中通过代码示例讲解的非常详细,需要的朋友... 目录一、问题描述示例二、解法一:将字母数字连接到新的 string思路代码实现代码解释复杂度分析三、

mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespace id不一致处理

《mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespaceid不一致处理》文章描述了公司服务器断电后数据库故障的过程,作者通过查看错误日志、重新初始化数据目录、恢复备... 周末突然接到一位一年多没联系的妹妹打来电话,“刘哥,快来救救我”,我脑海瞬间冒出妙瓦底,电信火苲马扁.

SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)

《SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)》本文介绍了如何在SpringBoot项目中使用Jasypt对application.yml文件中的敏感信息(如数... 目录SpringBoot使用Jasypt对YML文件配置内容进行加密(例:数据库密码加密)前言一、J

Spring Boot 中正确地在异步线程中使用 HttpServletRequest的方法

《SpringBoot中正确地在异步线程中使用HttpServletRequest的方法》文章讨论了在SpringBoot中如何在异步线程中正确使用HttpServletRequest的问题,... 目录前言一、问题的来源:为什么异步线程中无法访问 HttpServletRequest?1. 请求上下文与线

解读为什么@Autowired在属性上被警告,在setter方法上不被警告问题

《解读为什么@Autowired在属性上被警告,在setter方法上不被警告问题》在Spring开发中,@Autowired注解常用于实现依赖注入,它可以应用于类的属性、构造器或setter方法上,然... 目录1. 为什么 @Autowired 在属性上被警告?1.1 隐式依赖注入1.2 IDE 的警告:

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

python 3.8 的anaconda下载方法

《python3.8的anaconda下载方法》本文详细介绍了如何下载和安装带有Python3.8的Anaconda发行版,包括Anaconda简介、下载步骤、安装指南以及验证安装结果,此外,还介... 目录python3.8 版本的 Anaconda 下载与安装指南一、Anaconda 简介二、下载 An

Java中将异步调用转为同步的五种实现方法

《Java中将异步调用转为同步的五种实现方法》本文介绍了将异步调用转为同步阻塞模式的五种方法:wait/notify、ReentrantLock+Condition、Future、CountDownL... 目录异步与同步的核心区别方法一:使用wait/notify + synchronized代码示例关键

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数