微信邦 发表于 2018-5-7 20:44:19

机器学习能在游戏开发中做什么?

机器学习适合做什么?
当前,机器学习在很多领域都取得了相当巨大的进步。从应用领域来看,机器学习在“信息识别”、“数据预测”、“复杂控制”几个方面,展现出很大的能力。比如“信息识别”领域,依赖于大数据的训练,现在的图形识别已经非常完善了,手写数字的识别仅仅是类似Hello World一类的简单应用;“数据预测”领域,对于一些公共事件的预测准确率已经达到了相当高的程度,将来这种技术在各种具备历史数据的预测应用上,将有长足的发展,比如广告的推荐系统、财经数据的决策系统等等;“复杂控制”方面,自动驾驶的技术经历了十几年的研究,剩下的似乎只有识别硬件的成本问题了。
然而,以上这些技术,相当一部分来源于“大数据”,或者叫“监督学习”的训练,也就是说,实际上这些机器的智能是来源于人类积累在数据中的“智慧”。机器仅仅是在“模拟”人类的某种思考判断,而这种模拟采用的更多是类似“查询搜索”的方法。不过几千年来,人类的经验都是记录在书本上,需要用另外一个大脑来学习,然后才能加以运用,而机器学习跳过了人脑这个阶段,从经验直接到应用,确实是一个伟大的进步。可以增加一点想象的是,以后所有“需要经验”的事情,将可以用电脑来代替。不过那些需要“创造”或者“发现”的事情,比如艺术创作,理解和发现客观规律,还是需要人脑。所幸是机器学习在“无监督学习”领域,能协助人类更好地去理解和发现世界的特征,这个方面也是非常有用的,但现在似乎应用领域并不非常活跃(也许是我的了解还不够广泛)。
[机器学习预测房价的例子](文中部分图片来源于网络,如涉及任何版权问题,请联系腾讯游戏学院) AlphaGo在围棋领域战胜人类,给了我们很大的想象空间,我们会想:机器是否也能像人类一样理解游戏规则,从而玩游戏呢?我个人的理解,现在还是不行的。如“监督学习”的模型下,机器只能通过大量的人类“经验数据”,来模拟人类的游戏行为,但无法独立做出判断和思考。如果使用“深度学习”,确实会有一种“超越人类”的错觉,但是无法忽视的是,“深度学习”需要一种高度抽象、模拟游戏胜负规则的公式,来指导机器的自我对弈。在围棋、象棋这类已经发展了数千年的游戏领域,“子力计算”等游戏模式经验,已经能相当准确地描述这个游戏了。而对于其他的一些比较复杂的游戏,要高度抽象地用数学模型来概括一个游戏,还是需要人类大量的思考。这也是为什么深度学习在一些规则简单的游戏中,还能表现的比较好,而另外一些比较复杂的游戏上,就需要大量的人工干预才能稍微像样的原因。

所以我认为,机器学习在现阶段,最成熟的应用,是利用“监督学习”的方法,对于大量人类的“经验”大数据进行模拟思考的方面。既可以用于“理解”客观世界,也可以“模拟”人类对于复杂环境的行为。
游戏角色AI在开发上的困境
机器学习很容易让人联想到在游戏中的角色AI。一直以来游戏中NPC或怪物的AI问题都是一个游戏比较难解决的问题。比如游戏的角色行为过于单一,让玩家乏味,或者游戏角色容易因为BUG陷入一些卡死的境地。为什么游戏角色AI会有这些问题?大体不外乎几个原因:其一是描述一个完整的AI非常的繁琐,环境越复杂,AI逻辑流程越容易出现漏洞;其二是为了游戏角色AI的目标非常多样化,很多游戏角色并不是越“聪明厉害”越好,而应该是作为一个“演出系统”,来让玩家体验游戏世界的工具。

[一套简单的游戏行为就需要十分复杂的行为树]
现在比较流行的游戏角色AI开发方法,无外乎“状态机”和“行为树”两种,而这两种在数据结构上,是可以无损转换的,也就是说本质上是一样。这两个技术,都是为了帮游戏开发者,更准确、更完整的表述AI逻辑判断的数据结构。但是游戏本身的逻辑复杂度,还是要由程序员一段段的去理解,然后才能编写成程序。在另外一些游戏中,会用到一种叫“面向目标的路径规划”的技术,实际上是“状态机”的一种升级技术:利用A*(A-Star)等寻路算法,来自动生成“状态”之间的逻辑路径,而无需一开始就以人工输入的方式全部输入进去。这种技术因为是在运行时产生状态机图,所以表现出来的行为会更加丰富和准确,较少会陷入一些“没有事先预测到的状况”从而陷入逻辑卡住的情况。 但是不管状态机和行为树如何努力,从开发者角度来说,都必须通过人脑来抽象和理解游戏世界的规则,和各种可能的情况。加上游戏AI很多时候是需要一种“表演”效果,要用代码和逻辑去“模拟”出一场表演,是相当繁琐的工作量。(如果以深度学习技术来说,实际上也无法做出这种表演效果,因为这种表演的逻辑行为,往往不是“最优”的选择,甚至是相当“差劲”的。) 所以,归根结底,游戏中的AI的困境,是由于工作量的原因造成的。由于我们没有很好地生成“游戏行为”的工具,导致我们的游戏行为往往不够好。
机器学习如何应用在游戏角色AI的开发上
在机器学习领域,学习人类的行为,并且应用于合适的场景,是“监督学习”下最常见、最成熟的技术之一,经典的应用就是“自动驾驶”。相对于自动驾驶需要昂贵的雷达设备,才能“感受”现实世界,在游戏中所有的数据都唾手可得,这种监督学习的应用更是没有任何障碍。 假设我们的游戏,已经把基本的游戏规则开发好,游戏场景也已经布置好,剩下的就是如何置入游戏角色。就好像一部电影,场景、道具都已经到位,摄像机和剧本都已经准备好,那么剩下的就是演员的表演了。按照以前的做法,我们需要用复杂的状态机系统,去操控那些游戏角色演出,而现在,我们可以让策划(或者其他开发人员)直接去操控游戏中的角色,去以真实的游戏操作行为,让游戏角色做出演出行为,而机器学习的程序,就好像录像机一样,可以通过记录我们操控的角色行为,去学习如何模仿我们的操控。当我们表演的足够丰富后,机器学习就可以完全取代人工的操控,做出一些和预设相同的行为特征。 如果我们的游戏能像上面的方法去开发角色AI,我们将会在游戏AI行为工具上,得到一次巨大的进步。我们不再需要通过人脑去抽象和转化游戏的“表演”,而是可以直接去“扮演”,这样除了可以节省大量的“程序员”的开发工作外,对于调试AI行为,表达更丰富的角色行为特征(性格),也是有相当大的好处。 [游戏开发在很多方面已经越来越接近电影制作]
显然,如果完全用“游戏”的形式来取代AI开发,即便在机器学习的支持下,可能还会有很多不足之处,比如“人工表演”可能无法覆盖所有的游戏场景环境。但是只要能节省下工作量,我们还是可以利用旧的状态机技术,来定义比较“完整”的逻辑环境,弥补那些可能存在的漏洞。不过我相信,随着对游戏测试的深入,机器学习能更快更好地应对这些逻辑漏洞,毕竟“玩”几把游戏,比写代码然后调试,要快的多。
游戏角色AI的业务价值
现在的成名游戏中,确实有那么一大批是似乎对游戏角色AI“没有必要性需求”的,比如我们常见的MOBA类游戏。在棋牌类游戏中,我们也不太希望用一个厉害的AI让我持续的输钱。但如果设想一下,如果我们的策划能比较低成本地生产“AI”,那么我们的游戏就会脱离“玩具”的层面,变成一种可以“表演”的产品。我们常常说IP对游戏的重要性,而真正能体现出IP的,往往是故事体验,这就需要一套很好的“表演”系统。 从另外一个角度说,如果我们的游戏除了精彩的PVP内容,还有很多优秀的PVE内容(所谓的单机体验内容),那么玩家也许会慢慢倾向对我们所生产的PVE内容来付费。从电影市场这么多年的发展来看,优秀的“表演”还是会有很大的市场的。从知识产权保护的角度来看,PVE内容很容易得到保护。除了利用海量用户去激活PVP的收入,在PVE方面的开发,也许是一个新的市场空间。 [《巫师3》不仅仅是一部互动电影,也是一个玩法优秀的游戏,更是一个超级IP]
关于作者
韩伟,腾讯互娱高级工程师,拥有17年互联网从业经验,曾任职于互娱研发部公共技术中心,为多款游戏提供底层平台技术支持,目前在“Next产品中心”研发创新类型游戏。
页: [1]
查看完整版本: 机器学习能在游戏开发中做什么?