DeepMind 机器人学习打乒乓球,朝着「专业运动员水平的速度和性能」发展

本文主要是介绍DeepMind 机器人学习打乒乓球,朝着「专业运动员水平的速度和性能」发展,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这几天全球各界最火热的话题非奥运会莫属,而其中乒乓球比赛更是引起了互联网的讨论热潮,无论是欢呼也好、争议也罢,在现实世界人类的乒乓球大赛风生水起的同时,AI已经偷偷在乒乓球上“出师”了——
——DeepMind近日发布一项新工作,展示了第一个能够在乒乓球竞技比赛中达到业余人类选手的机器人,这一工作的成功标志着机器人任务朝着「实现人类水平的速度和性能」这一目标迈出了一步。
在这里插入图片描述

乒乓球是一项对速度、精确度和策略都有极高要求的体育项目,人类运动员需要经过多年的训练才能精通。而本研究通过分层和模块化策略架构、迭代定义任务分布、模拟到模拟适配层、域随机化、实时适应未知对手和硬件部署等技巧,在多次与人类进行竞赛训练后,证明了该机器人在模拟复杂人类技能和实时决策方面的潜力。
本文的主要贡献为:
1)分层和模块化策略:研究人员设计了一个由多个低层次技能策略组成的系统,这些策略包括不同的击球方式,如正手、反手、发球等。这些技能策略是模块化的,可以独立训练和优化。
2)零样本模拟到现实(Sim-to-Real):机器人直接从模拟环境中学习,然后无需在真实世界中进行微调即可应用所学技能。这通过迭代的方式实现,即在模拟中训练,然后在真实世界中测试,并将测试结果反馈到模拟训练中。
3)实时适应对手:机器人能够实时分析对手的打球风格和技能水平,并根据这些信息调整自己的策略,以更好地应对不同的对手。
——分层和模块化策略——
详细来讲,分层和模块化策略架构是通过构建一个具有层次结构的控制架构来实现的,这个架构包含两个主要部分:低层次技能策略(Low Level Controllers, LLCs)和高层次控制器(High Level Controller, HLC)。其具体实现方式为:
在这里插入图片描述

▲图|LLC 训练库©️【深蓝AI】编译
A」低层次技能策略(LLCs):
LLCs是针对特定乒乓球技能(如正手击球、反手击球、发球等)的训练策略。每个LLC专注于一项特定的技能,并被训练以产生关节速度命令。例如,一个LLC可能专门用于以正手风格击球并打向球场的对角线,而另一个LLC可能专注于保守地使用反手击球。这些技能策略是独立训练的,并且可以针对不同的比赛情况和对手进行优化。
B」高层次控制器(HLC):
●HLC的作用是在选择时刻决定使用哪个LLC。它不是以固定频率控制,而是在对手每次击球后触发,根据当前的比赛统计数据、技能描述符和对手的能力来选择最佳技能。

●HLC内部有多个组件,包括风格选择策略、旋转分类器、技能描述符、比赛统计、策略和LLC偏好(H值)等,这些组件结合起来产生最终的LLC选择。
C」技能描述符:
为了帮助HLC做出决策,每个LLC都有一个技能描述符,这些描述符提供了关于LLC在特定来球情况下的性能指标,如预计的回球率、击球速度和落点位置。

——零样本模拟到现实——
此外,本文所实现的零样本模拟到现实的技术,包括一种迭代方法来定义基于现实世界的任务分布,并定义自动课程,具体来说:
▲图|模拟中的样本训练与零样本迁移到硬件的过程并排显示©️【深蓝AI】编译
在这里插入图片描述

A」模拟训练(Simulation Training):机器人首先在模拟环境中进行训练。这个环境能够模拟乒乓球的运动和机器人的行动,但是是在虚拟空间中进行。
B」模拟到现实(Sim-to-Real Transfer):研究人员采用了一系列的技术来减少模拟环境和现实世界之间的差异,这被称为“sim-to-real gap”。这些技术包括系统识别(system identification),动力学随机化(dynamics randomization),以及模拟延迟和重置策略。
C」适配层(Adapter Layers):为了进一步缩小sim-to-real gap,研究人员开发了适配层,如FiLM(Feature-wise Linear Modulation)层,这些层能够学习如何将模拟中的行为调整为适合现实世界的行为。
D」迭代真实世界数据收集(Iterative Real-World Data Collection):机器人在现实世界中与人类玩家进行比赛,收集关于其性能和对手行为的数据。这些数据被用来进一步训练和改进模拟环境中的策略。
E」自动课程设计(Automatic Curriculum Design):通过迭代的训练和评估周期,机器人的技能库不断扩展和改进,自动适应真实世界的任务分布。
通过这些步骤,机器人能够在没有在现实世界中接受大量训练的情况下,展示出与人类玩家竞技的能力。

——实时适应未知对手——
在这里插入图片描述

▲图|分组比赛的实验对比数据©️【深蓝AI】编译
对于未知对手的实时适应,研究者们通过29场机器人与人类之间的比赛评估了策略性能,其中机器人赢得了45%(13/29)。所有参赛者都是未见过的玩家,他们的技能水平从初学者到锦标赛水平不等。虽然机器人在与最先进玩家的所有比赛中都“惨败”,但它赢得了与初学者的100%比赛和与中级玩家的55%比赛,充分展示了其拥有的乒乓球业余选手技能。
机器人在比赛中实时更新其对不同低级技能策略(LLCs)的偏好,这些偏好是基于当前比赛统计数据和对手的行为模式;
机器人通过实时追踪比赛统计数据,来评估自身和对手的强项和弱项。这些数据这包括击球速度、落点、旋转等信息;
在比赛中,机器人系统还会使用一些预定义的启发式策略来从技能库中快速筛选出可能有效的技能。机器人通过与不同技能水平的人类玩家比赛,学习并改进其决策过程,从而提高对各种对手的适应性和鲁棒性。

——讨论——

总的来说,该项工作展示了在复杂物理任务中,机器人能够通过学习达到与人类竞争者相媲美的水平;这项研究不仅在机器人领域有重要意义,其方法和技术也可以应用于其他需要快速反应和策略决策的领域,比如康复医疗、教育等领域。
当然,作者在论文中也指出了一些局限性,例如由于系统延迟、数据不足或重置动作之间的时间限制,机器人在反应极快的球时存在困难;机器人无法处理高于某个阈值(例如大约6英尺或更高)的球,因为这超出了摄像头的视野范围;且由于内置的碰撞避免协议,机器人在处理非常低的球时存在问题,这些协议虽然对保护机器人的拍子至关重要,但也限制了机器人处理靠近桌面的球的能力;景观机器人在一定程度上改变了球的落点,但其可预测性仍有改进空间;在泛化能力方面,机器人的表现依旧有限。

这篇关于DeepMind 机器人学习打乒乓球,朝着「专业运动员水平的速度和性能」发展的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Golang中拼接字符串的6种方式性能对比

《Golang中拼接字符串的6种方式性能对比》golang的string类型是不可修改的,对于拼接字符串来说,本质上还是创建一个新的对象将数据放进去,主要有6种拼接方式,下面小编就来为大家详细讲讲吧... 目录拼接方式介绍性能对比测试代码测试结果源码分析golang的string类型是不可修改的,对于拼接字

mysql线上查询之前要性能调优的技巧及示例

《mysql线上查询之前要性能调优的技巧及示例》文章介绍了查询优化的几种方法,包括使用索引、避免不必要的列和行、有效的JOIN策略、子查询和派生表的优化、查询提示和优化器提示等,这些方法可以帮助提高数... 目录避免不必要的列和行使用有效的JOIN策略使用子查询和派生表时要小心使用查询提示和优化器提示其他常

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

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

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

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

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

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

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

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

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