Unity拥抱AI:用机器学习训练NPC、机器人、模拟自动驾驶

2024-03-13 23:30

本文主要是介绍Unity拥抱AI:用机器学习训练NPC、机器人、模拟自动驾驶,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在李世石和柯洁战败后,人类在棋类竞技场已经难与AI争锋。很多人会说,作为非职业棋类选手,不在乎下不下的赢棋。想一想,要是以后打游戏也赢不了AI了……

这件事情已经发生了,且还在加速。雷锋网曾报道,2017年9月,Open AI的DotA 2游戏人工智能在1V1中击败了人类玩家。

同年9月,全球最大的3D游戏引擎Unity宣布发布Unity Machine Learning Agents(ML-Agents),一款提供给游戏开发者的开源AI工具包。Unity这一开源工具包是Unity将机器学习应用在游戏的成果,AI已经附能各行各业,那么在游戏行业,会带来哪些有趣的成果?

Unity拥抱AI:用机器学习训练NPC、机器人、模拟自动驾驶

5月11-13日,Unite Beijing 2018在国家会议中心召开。Unity AI与机器学习副总裁Danny Lange分享了ML-Agents的新进展,雷锋网也来到了现场。

ML-Agents助力游戏开发

Lange介绍到,机器学习对于游戏开发来说很重要,能够让游戏开发过程更加简单,让游戏变得更加有吸引力,开发者可以不用每一个方案都编程,游戏与玩家的互动变化可以让系统自己学习。就像人从环境当中感知,并作出反应一样。ML-Agents可以以相同的方式来训练这些系统。

Lange给大家演示了一个Demo,未来主义的赛车游戏,Demo中左边是人类,然后右边是机器学习的Agent。一开始的时候,Agent转弯不好,容易装车,但是它慢慢学习人类的操作,大概25分钟的训练之后,你可以看到可能还是有点不稳,但是不会再撞车了。经过不断的训练,Agent能编程非常好的选手。

那么,具体游戏场景中,可以有以下应用:机器学习可以应用在几个方面。第一个是创建NPC,有多种行为的NPC, NPC已经学习了很多人类行为,这会让与人类的交互更为自然。第二个是游戏本身。AI能够为优化玩家的乐趣进行学习,而不是为开发者的乐趣而进行优化。对于玩家来说,会有更多个性化和定制化的东西。第三个是一个完全不同的领域,就是我们用机器学习在游戏发布前测试游戏。确保使用agent代替人类玩家进行游戏时,你能够了解游戏是否能顺利进行。

此外,在游戏中如果人类玩家数量很少,就可以用agent代替人类玩家。最后一个方面是match making。使用机器学习可以将合适的玩家找出来,匹配在一起玩游戏。可以让机器学习系统了解如何优化游戏时间、为玩家配对以及如何最大化利用游戏时间。

Unity拥抱AI:用机器学习训练NPC、机器人、模拟自动驾驶

(由Unity创建的一个网球游戏RL/ML模拟训练环境示例)

ML-Agents训练自动驾驶、机器人

从两年多前,Unity就开始酝酿转型,从一家纯引擎提供商转向互联网+云增值服务。Danny Lange是Unity发力AI领域的背后推手,在加入Unity之前,Lange曾担任Uber机器学习负责人,在更早之前,Lange还负责过亚马逊和微软的机器学习产品研发。

除了游戏以外,ML-Agents在自动驾驶和机器人领域还有很多应用场景。Lange介绍到,自动驾驶是ML-Agents很大的应用领域,因为这样就不需要像Uber那样在真实的路上驾驶,用机器学习模拟就可以避免在真实道路测试带来的事故。另外一个领域是机器人,用增强型学习,你可以在虚拟环境去训练机器人,可以很快地完成几十万或者几百万次训练。训练好的模型可以放到真实的机器人上面应用。

此外,ML-Agents也可以应用在建筑设计中,比如要如何合理设计通道、人流,用机器学习的方式去模拟建筑内的路线图。


原文发布时间为:2018-05-22

本文作者:李诗

本文来自云栖社区合作伙伴“雷锋网”,了解相关信息可以关注“雷锋网”。

这篇关于Unity拥抱AI:用机器学习训练NPC、机器人、模拟自动驾驶的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

SpringCloud使用Nacos 配置中心实现配置自动刷新功能使用

《SpringCloud使用Nacos配置中心实现配置自动刷新功能使用》SpringCloud项目中使用Nacos作为配置中心可以方便开发及运维人员随时查看配置信息,及配置共享,并且Nacos支持配... 目录前言一、Nacos中集中配置方式?二、使用步骤1.使用$Value 注解2.使用@Configur

Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)

《Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)》本文主要介绍了Golang分布式锁实现,采用Redis+Lua脚本确保原子性,持可重入和自动续期,用于防止超卖及重复下单,具有一定... 目录1 概念应用场景分布式锁必备特性2 思路分析宕机与过期防止误删keyLua保证原子性可重入锁自动

Python模拟串口通信的示例详解

《Python模拟串口通信的示例详解》pySerial是Python中用于操作串口的第三方模块,它支持Windows、Linux、OSX、BSD等多个平台,下面我们就来看看Python如何使用pySe... 目录1.win 下载虚www.chinasem.cn拟串口2、确定串口号3、配置串口4、串口通信示例5