很多人在玩游戏的时候,都会感觉到游戏中的NPC非常“脑残”。但这一情况将会发生改变了。前不久,Unity推出了一个强大的开源软件Unity Machine Learning Agents,通过这个开源软件,能够将其游戏引擎与机器学习程序连接起来。通过深度强化学习算法,非玩家角色(NPC)可以不断地进行尝试和犯错,变得更有创造性和策略性,从而增加游戏的对抗性和可玩性。也就是说,游戏中的NPC将会变得越来越聪明。更加值得关注的是,这个开源软件的适用范围并不仅限于游戏中的虚拟人物,还可以用来训练那些用于真实世界的机器人。
这些年,视频游戏开发者已经在使用人工智能来优化玩家能够操纵的游戏角色了。但玩家不能操纵的角色,游戏中的NPC,都是基于人类编写的规则,在游戏体验上并不完美,玩家很容易就能掌握了其中的规律,从而会感觉到游戏非常无聊。
不过,这一切都将会发生改变。利用人工智能技术,游戏中的NPC将会根据游戏中遇到的情况,对自己的游戏规则进行编程和重新编程。也就是说,他们在游戏中的时间越长,就会越聪明。
前不久,Unity推出了一个强大的开源软件Unity Machine Learning Agents,通过这个开源软件,能够将其游戏引擎与机器学习程序(比如谷歌的TensorFlow)连接起来。Unity是游戏引擎软件的主要制造商,王者荣耀、纪念碑谷、神庙逃亡2、Pokémon GO都用的是它提供的游戏引擎。
Unity负责人工智能和机器学习的副总裁Danny Lange表示,通过深度强化学习算法,非玩家角色(NPC)可以不断地进行尝试和犯错,变得更有创造性和策略性,从而增加游戏的对抗性和可玩性。
不过,Unity的新AI-linking工具的使用场景并不局限于游戏中的虚拟角色。Lange说,这种软件还可以加速机器人的发展,比如自动驾驶汽车,可以让它们在“杂乱无章的、计算机生成的”的场景中不间断的训练,使其变得更加智能。
Unity利用机器学习技术,通过从多个角度评估场景——鸟-眼(左)和第一人称视角(右)——在这个尚未发布的坦克战斗游戏中设计出了一个策略。
Unity也坦然表示,他们并没有发明这些技术,只是让这些技术变得更容易使用。比如说,谷歌旗下的DeepMind利用深度强化学习技术,教AI玩儿上世纪80年代的电子游戏,比如“Breakout”。
在游戏式的环境中,训练自动驾驶系统也有很多的例子。比如说,MSC Software的虚拟测试驱动器应用程序提供汽车培训模拟。
The Open Racing Car Simulator和Euro Truck Simulator 2这样的游戏也被用于自动驾驶汽车的虚拟训练。而Nvidia的New Lsaac Lab则使用竞争对手Epic Games的“虚拟引擎”来生成逼真的虚拟环境,用于训练那些控制真实机器人的算法。
Lange表示,现在可以在GitHub上使用测试版的新ML-Agents工具,可以让游戏引擎和AI软件之间的链接不再动辄就要消耗数天甚至数周的时间。他说:“我们想做的是在一小时内达到这一目标。”很显然,这会让更多的人更容易尝试开发出更好的游戏角色,或者把训练机器人这一枯燥的事情变得更容易。
智能游戏
今年早些时候,Unity展示了深度强化学习的潜力,它在一个基于Unity的移动游戏Crossy Road上做了实验。在游戏中,一只鸡必须穿过一条无穷无尽的道路,每次它撞到一个礼盒,就能获得一分,但每次它撞上一辆卡车,就会失去一分。在让分数最大化的任务的下,就开始了学习的过程。
起初,这只鸡像一只喝醉了的蛾子一样四处乱飞,前后移动,不断与礼物和卡车相撞。
经过几个小时的反复试验,再加上机器学习识别出最佳战术,这只鸟以“神一般的力量”在游戏中穿行。
更复杂的NPC可以训练在更微妙的目标上,比如在第一人称射击游戏中最大化玩家的游戏时间。
Lange说:“它可能会发展出一些策略,以令人惊讶的方式展示自己。比如说,它会引诱你去追逐它,但你不会抓住它,它也不会马上杀死你。通过这样的方式来提高你在游戏中的时间。很显然,这为更有创造性的行为打开了一扇门,这是你可能想象不到的;或者说,以传统的代码水平而言,让NPC执行这样的策略会非常非常费力。”
不过,也不要别指望这种能够自学成才的虚拟对手很快就会出现。对于学者和科技公司的研究团队来说,建立具有深度强化学习的NPC仍然是一项科学实验。但如果Unity的ML-Agents能让数百万注册开发者(即使是没有很多资金的用户)更方便地进行试验,那么这个过程可能会加快。
智能机器人
像Unity和Unreal 这样的视频游戏引擎现在可以非常精确地模拟现实世界。从光与景观的相互作用,到橡胶轮胎与水泥路之间的摩擦,游戏提供的虚拟环境已经非常精确了,可以用来训练那些用于真实世界的机器人。
通过一种叫做过程渲染(procedural rendering)的方法,游戏引擎可以动态地合成一条几乎无限里程而且非常逼真的道路。通过机器学习软件可以从分析游戏中反馈的视频,并学习如何准确地解释它所看到的内容。
Lange说:“这与你在旧金山开车行驶在道路上很像。”他在2016年12月加入Unity之前,是Uber的机器学习主管。“但Uber的员工,他们需要做的就是回家,然后找外包公司来给这些视频数据贴上标签。”他们必须对每棵树、汽车、行人、人行道、车道分隔器等物体进行标记,只有这样,学习软件才能知道它看到了什么,并开发出识别它们的技术。在虚拟场景的训练中,因为像Unity或Unreal这样的软件是根据现实世界生成的非常逼真的场景,其中的每一个物体都已经贴上了标签。
自动驾驶汽车目前是一项巨大的技术项目,甚至连主要汽车制造商和硅谷的公司都在往其中投入大量的资源。但随着Unity等产品的推出,小型游戏开发者更容易上手,Unity的ML-Agents也可以为更多的小型机器人和机器人开发者提供支持
文章发表在FastCompany,由36氪编译。
|