对于强化学习在游戏AI领域的应用,上次我们提到了:AI+电竞 | 人工智能打英雄联盟LOL能拿冠军吗?
理论上,对于有明确目标的算法模型都可以用强化学习来尝试,如游戏AI。不过实际上,强化学习在游戏AI中的应用更多时候是为了验证和调试算法模型的准确性。通过传统的简单游戏已经验证了部分强化学习算法,而对于英雄联盟、王者荣耀这种复杂的即时策略类游戏,其算法设计会相对复杂很多。
虽然强化学习在传统的机器学习分类中没有被提及,但事实上它已经能够帮助解决深度学习中很多智能控制和分析预测等领域的实际问题,比如通过用户反馈来优化人机之间的多轮对话策略,以及在自然语言生成中,竹间智能都应用到了强化学习算法,并取得了良好的效果。此次 竹间智能 机器学习科学家 李思文,将结合王者荣耀游戏AI来继续分享一些强化学习算法设计上的思路。
就目前来说,在王者荣耀这类“复杂”的游戏中训练出高水平“类人” AI的难度确实大,不过在此讨论的是有什么设计算法的思路和需要考虑的地方。
1. 首先,如何定义“类人”
AI的行为是动态、有记忆的,是能基于新的环境信息做调整的。
类似王者荣耀的游戏 dota, 推测其内置人机对战的AI并非reinforcement learning (“推测”不代表一定),而是可能由大量逻辑堆积的,执行逻辑是固定的而不是动态的。玩家和开发者也可用通过dota bot script (lua) 进行自定义AI 。(https://developer.valvesoftware.com/wiki/Dota_Bot_Scripting)
AI实现 ultimate goal (获胜) 的手段是 policy,而非通过利用电脑超越人的“手速”优势来获胜。
正如这里提到的“Computers are capable ofextremely fast control, but that doesn’t necessarily demonstrate intelligence,so agents must interact with the game within limits of human dexterity in termsof “Actions Per Minute”.”
应该让AI的 APM 和人一致才行。
(https://deepmind.com/blog/deepmind-and-blizzard-release-starcraft-ii-ai-research-environment/)
2. 王者荣耀这类游戏,到底“复杂”在哪里
在只考虑对一个AI(agent)做强化学习调教的情况下(实际情况是multi-agentsystem, 需要协作和群体智慧),需要定义好:
Environment, agent state.
传统适合RL的简单游戏例如“Cart Pole”,甚至“ Flappy Bird”,他们的时空抽象化都是简单的,且对于goal,其environment 是 fullyobservable。
然而,对于王者荣耀这类游戏,一方只能基于友方单位视野看到地图,所以 environment 是 partiallyobservable 的,这就需要增加一批探索阴影地图的action。对于 state 的抽象描述,基本就是参考2-D matrix来描述地图了(方便作为DQN CNN的输入),但王者荣耀这类游戏的复杂在于,不能用单一空间坐标来描述state,state的所有潜在“feature”至少包括:各单位的位置和攻击,地图可视范围(白天和晚上也不一样),各单位目前携带物品及使用范围,各单位目前所学技能及施法范围,各单位血量蓝量等所有会影响action decision的,需要把这些 “feature”分成不用的layer, 每个layer类似DeepMind对星际争霸采用的“low resolution RGB image data for map & minimap”,见下图:
截图自:https://www.youtube.com/watch?v=5iZlrBqDYPM,StarCraft II DeepMind featurelayer
Action.
不同于传统适合RL的简单游戏,如“Cart Pole”、“Flappy Bird”等,Flappy Bird的action只有左右或上下的移动。而类似王者荣耀这类游戏,其复杂之处在于action 多,例如基础的action:移动类的有8个移动方向,还有普通攻击类、使用技能类、买卖物品、使用物品等。
此处会有问题:看起来基础的 action 的个数也不是很多啊,怎么说action多呢?
答:简单来说,比如cart pole 的基础的action 只有2个:{左,右}移动,但Multi-Step Plan Environment 中考虑的 the action set is the set of allpossible n-length action sequence,也就是把基础的action序列作为真正考虑的 action set 中的一员,e.g. 当n=20时,基础的action为{左,右}移动2种,也会有2^20=1e6量级的action数目。
(https://arxiv.org/pdf/1512.07679.pdf)
至于为什么要用一串基础action的序列来作为一个实际action,考虑到 n-length 无论n取1还是大于1,相对的完成goal所需的实际steps数和n是倒数关系,所以是否需要考虑 n-length action sequence ,是需要视实验和所处问题的实际情况考虑的。
例如王者荣耀游戏的真实玩家操作会是一系列基础action, 比如不会走向友方单位并攻击,不会一买完物品并卖掉,所以实际action用n-lengthaction sequence的话,在遇到数目大的情况下,有一批针对性的解决办法:
例如: https://arxiv.org/pdf/1512.07679.pdf,里面提出的 Wolpertinger Architecture, 其中的 action embedding 可以既能“generalize over the set of actions”又能在性能上做到“sub-linearcomplexity relative to the size of the action set”,因此对于action 多的问题,还是有希望解决的。
(注:另有一方的工作是基于用 multi-classclassification的思想去解决action 多导致的scale问题:https://users.cs.duke.edu/~parr/icml03.pdf;
基于error-correcting output codes(ECOC是对class数大时结合binary classifier对multi-class classification的优化): http://www.maia.ub.es/~sergio/linked/aisp2012.pdf;
把learningcomplexity 从 O(A^2) 降低到了O(Alog(A))和O(log(A)):http://www.cs.bris.ac.uk/~flach/ECMLPKDD2012papers/1125768.pdf)
Goal.
Ultimate goal 肯定是我方推倒地方基地获胜,但如果将goal直接设定为这个的,reward将是延迟很多的。如此一来在sparse feedback情况下,agent不太能学好(尽管可以用epsilon-greedy的方法让agent多尝试不用的action)。
于是这里提出了一种 hierarchical-DQN (h-DQN) framework,在时间尺度上切分出 intrinsically generated goals,让agent在intrinsicallymotivated 的情况下探索新的行为去解决这些intrinsically generatedgoals,最终 learn an optimal policy to chain them together.
(https://arxiv.org/pdf/1604.06057.pdf)
过程是(a) 有个top-level module (meta-controller)去选generated goal,(b) 有个lower-levelmodule (controller) 去达成或者关闭这个generated goal,然后这个 meta-controller 反复重复(a)-(b)。
在王者荣耀里也可以参考类似做法,比如为了实现ultimate goal推倒对方基地获胜,里面能举出一些 intrinsicallygenerated goals by time scale,例如:5分钟左右集合团战团灭对方,10分钟左右要推倒对方几座防御塔等,具有参考意义。
虽然就目前来说在王者荣耀中实现类人AI会比较难,并且更多真实世界里的任务是难于游戏AI的,但人也要像 RL 里的 agent一样不断exploration& exploitation,才能实现最终的 goal.
Thefield of Machine Learning seeks to answer the question:“How can webuild computer systems that automatically improve with experience?”
---Tom M. Mitchell, Machine Learning, 1997
另外对于王者荣耀、星际争霸这类游戏,除了RL以外,其本质上也是multi-agent system 问题。下次再深入谈谈。
图片来源于网络。
竹间智能Emotibot以类脑对话系统和情感计算为核心,希望以人工智能技术助力更多行业、机构及个人拥抱AI时代,分享AI发展的红利。
如需转载,请联系竹间智能Emotibot微信公众号(Emotibot_tech),并注明出处。
相关阅读:
竹间智能Emotibot
长按识别二维码,关注我们