当前位置: 首页 > news >正文

OpenAI发布大型强化深度学习模拟器Neural MMO,AI适者生存择最优

今天,OpenAI发布了一款”大型多角色”虚拟训练场景游戏,把AI代理放进一个类似于RPG(角色扮演游戏)的模拟场景中,AI们会互相竞争,通过战争来抢夺有限的资源,从而得到优化。

“大型多人在线游戏(MMO)模拟了众多玩家在一个持续、广阔的环境中竞争的大型生态系统,”OpenAI在博客文章中写道。“代理和物种多样化会带来更好的探索和更高的整体能力。”

GitHub地址:https://github.com/openai/neural-mmo

Neural MMO的特点

现在,多代理环境已经成为深度强化学习研究很常用的一个实验平台,但是却存在很多问题和局限性,已有的模拟环境有些虽然够复杂但范围太小,有些虽然开放但过于简单。为了解决这些问题,OpenAI研发并开放了Neural MMO。

和其他系统相比,Neural MMO具有以下特点:

  • 持久性:代理无需环境重置,可在其他学习代理存在的情况下同时学习。策略必须考虑长时间的视野,并适应其他代理行为的潜在快速变化。
  • 规模:环境支持大量可变数量的代理。实验考虑到了100个并发服务器中每个服务器中多达128个并发代理长达100M的生命周期。
  • 效率:包含可以比较代理性能表现的baseline(在100多个世界中训练),且计算开销相对较低,训练只需要一个桌面CPU。
  • 扩展:Neural MMO目前的核心功能包括基于地图的地形程序生成,食物和水觅食系统以及战略战斗系统。未来可能会进行开源驱动的扩展。

Neural MMO环境中会随机生成AI代理,其中包含自动生成的预定大小的地图。一些地图是可穿越的,如“森林”(承载食物)和“草”,而其他地图则不能穿越(如水和石头)。

\"image\"

OpenAI 使用神经MMO来训练AI系统,通过奖励代理生命周期来进化,也就是说,AI会让自己活的尽量长久,代理之间彼此交互的时间越长,就可以更好地完成某些任务,而且增加并发代理的最大数量可以更好地进行探索。有趣的是,他们还发现增加代理的规模会促使它们进入地图的不同部分,而在较广阔的环境中训练的代理“始终”胜过只在较小环境中经过训练的AI。

  • 输入:代理观察以各自位置为中心的地图,包括地形类型和占用代理的选择属性(健康、食物、水和位置)。
  • 输出:代理按时间戳(或刻度)进行一次移动和一次攻击,来寻找水和食物资源,并和其他代理一起参与战斗。

\"image\"

平台为价值功能、地图图块到达分布以及学习策略的代理之间依赖性提供了程序环境生成器和可视化工具。Baseline经过100多个世界的policy梯度训练。

模型:适者生存

为了进行一个简单的baseline测试,我们使用vanilla策略梯度训练一个小型、完全连接的架构,其中值函数基线和奖励作为唯一的增强功能。我们不是让代理通过完成特定任务获得奖励,而是让代理们活得越久越好,活得越久的代理会得到优化,获得更高分数。我们通过计算所有玩家的最大值来将可变长度观测值(例如周围玩家数量)转换为单个长度向量(OpenAI Five也使用了这个技巧)。源版本发布包括我们基于PyTorch和Ray的完整分布式训练实现。

评估结果

\"image\"

训练的最大群体数量在(16,32,64,128)之间变化。为了提高效率,政策由16个代理共享。在测试时,我们将在实验中结对学习的代理合并,并以固定的群体数量评估生命周期。我们仅通过觅食进行评估,因为战斗策略难以直接进行比较。在较大种群中经过训练的代理表现总是更好。

“由于AI不能超越自己的并发代理(即与他们共有权重的代理),它们倾向于寻找包含足够资源以维持种群发展的地图区域,”OpenAI写道。“在自然界中,动物之间会通过向其他区域扩散以避免竞争。我们观察到,地图覆盖范围会随着并发代理数量的增加而增加。仅仅因为其他AI的存在,就已经刺激AI去学会探索了。“

但值得注意的是,这并不是首创。12月,OpenAI发布了CoinRun,这是一款经典的平台游戏,旨在衡量代理将经验迁移到不熟悉场景的能力。8月,挪威阿德大学的研究人员开放了一个实时战略游戏人工智能训练环境。

除了模拟学习环境之外,数据科学家还在《星际争霸 II》、《蒙特祖玛的复仇》、《刀塔 2》、《雷神之锤III》和其他游戏中设置了AI,为的是某一天能够开发出能够诊断疾病、预测复杂蛋白质结构和分割CT扫描的系统。“这些游戏是我们测试算法的一个很好的试验场地,”DeepMind联合创始人Demis Hassabis表示。“最终,我们的目标是开发可以迁移到现实世界的算法,以解决真正具有挑战性的问题,并帮助这些领域的专家。”

参考链接:
https://venturebeat.com/2019/03/04/openai-launches-neural-mmo-a-massive-reinforcement-learning-simulator/
https://blog.openai.com/neural-mmo/

\"image\"

相关文章:

  • 新手站长们看过来:白话ID
  • 华山模拟器安装
  • SQL查询数据时报错
  • yarn的常用命令
  • 三步搞定js类型转换
  • 深入数组切片
  • Spring入门(一):创建Spring项目
  • 如何判断我们的代理ip是高匿
  • Java初学者最佳的学习方法以及会遇到的坑(内含学习资料)!
  • python发送邮件
  • VMware下ubuntu与Windows实现文件共享的方法(zhuan)
  • 接口测试与Postman
  • antiX 17.4 发布,轻量级 Linux 发行版
  • ansible一键部署脚本
  • Android后台任务(HandlerThread、AsyncTask、IntentService)
  • “大数据应用场景”之隔壁老王(连载四)
  • E-HPC支持多队列管理和自动伸缩
  • ES6语法详解(一)
  • EventListener原理
  • HomeBrew常规使用教程
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • k个最大的数及变种小结
  • passportjs 源码分析
  • Python实现BT种子转化为磁力链接【实战】
  • Spark RDD学习: aggregate函数
  • SpiderData 2019年2月16日 DApp数据排行榜
  • Xmanager 远程桌面 CentOS 7
  • 创建一个Struts2项目maven 方式
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 区块链共识机制优缺点对比都是什么
  • 实现菜单下拉伸展折叠效果demo
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 我是如何设计 Upload 上传组件的
  • 优化 Vue 项目编译文件大小
  • 正则表达式小结
  • 自制字幕遮挡器
  • 7行Python代码的人脸识别
  • (ros//EnvironmentVariables)ros环境变量
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (算法)求1到1亿间的质数或素数
  • (五)IO流之ByteArrayInput/OutputStream
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • 、写入Shellcode到注册表上线
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET 反射 Reflect
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .Net6 Api Swagger配置
  • .NET的微型Web框架 Nancy
  • .Net面试题4
  • .net实现客户区延伸至至非客户区
  • @ConfigurationProperties注解对数据的自动封装
  • @RequestMapping-占位符映射