我们具体是怎么实现这一切的?实际上很简单。一套Python的API让我们可以把Unity的游戏与运行在Amazon云服务(Amazon Web Services,AWS)上的TensorFlow的服务连接起来。TensorFlow是Google在2015年发布的一个深度学习的框架。如你在这个视频里看到的,在训练的早期阶段,小鸡主要是在进行探索。但随着学习的深入,它逐渐地转变到搜索了。可以看到这一学习系统的一个重要能力就是它能成功地应对“没见过的”情形。卡车出现和礼物包的位置的组合是完全随机的。当小鸡被训练了几个小时候后,统计意义上它还是会持续地的碰到没有见过的场景。我们的Python API能很容易地从游戏里读取游戏框架和内部状态,并使用机器学习模型来反向控制游戏里的代理(比如小鸡)。
现在让我们对小鸡和它超人的能力做一个反思。小鸡游戏自身只是提醒了我们Amazon、Netflix和Uber是如何使用相同的技术来更好地服务他们的客户(不管是Uber的无缝载客体验或是Netflix给我展示按照我的口味定制的内容),不过它的确打开了在游戏开发中使用训练而不是硬编码的大门。
设想一下在游戏里训练一个非玩家角色(NPC, non-player character),而不是去编码它的行为。游戏开发人员需要做的会涉及到创建一个NPC需要被训练的游戏场景,他们会使用前面提到的Python API连接云端的增强学习的环境来进行这个训练。这个场景可以是完全人工设计的,或者是有NPC要去学习的一群人类玩家参与的。当NPC的表现令人满意后,另外一套Unity的API会允许开发人员直接把TensorFlow的模型嵌入到他们的游戏里面去,从而消除了需要继续把游戏连接到云端的TensorFlow服务的需求。
一些游戏开发人员可能会说他们在10到15年前最后尝试机器学习时“就已经这样做了”。但那是一个不一样的时代。那时候,通过富于表达的循环神经网络(RNN)——比如长短期记忆(LSTM)——来学习序列数据,以及通过卷积神经网络(CNN)来学习空间特征等技术都已经被发明出来了。但缺乏计算能力以及缺乏可扩展和精细的软件框架阻止了这些技术在实际中的成功应用,以及在诸如游戏开发这样有需求的行业里被采用。
在游戏开发里使用深度增强学习依然处于它的早期阶段。但对我们而言一切正在变得很清晰:类似于在其他大型企业里被证明的一样,这是一个潜在的颠覆性游戏技术。诸如TensorFlow这样成熟的、可扩展的、运行在云端并有集成的API接口的机器学习框架正在降低游戏开发人员和机器学习研究人员进入这个领域的门槛。正如机器学习正在进入企业的每个角落一样,你应该也会期待在你的下一个游戏里面机器学习会无处不在。
This article originally appeared in English: "Bringing gaming to life with AI and deep learning". Danny LangeDanny B. Lange是Unity Technologies公司的人工智能和机器学习副总裁。在Unity之前,Danny是Uber的机器学习的主管。在那里他领导着构建世界上最灵活的机器学习平台的工作,来支持Uber的快速成长。他还曾是Amazon机器学习(Amazon Machine Learning,Amazon提供的一个机器学习的云服务产品)的总经理;以及微软的资深开发经理,领导了一个产品团队专注于用于大数据的大规模机器学习;和IBM研究院的计算机科学家。Danny拥有丹麦技术大学的计算机科学博士学位。