当前位置: 华文问答 > 游戏

如果用强化学习来打王者荣耀?有什么设计算法的思路和需要考虑的地方?

2017-06-07游戏

对于强化学习在游戏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,而非通过利用电脑超越人的「手速」优势来获胜。
  • 正如上面讨论提到的: https:// deepmind.com/blog/deepm ind-and-blizzard-release-starcraft-ii-ai-research-environment/ 「Computers are capable of extremely fast control, but that doesn’t necessarily demonstrate intelligence, so agents must interact with the game within limits of human dexterity in terms of 「Actions Per Minute」.」 应该让 AI的 APM 和人一致才行。


    2. 王者荣耀这类游戏,到底「复杂」在哪里

    在只考虑对一个AI(agent)做强化学习调教的情况下 实际情况是 multi-agent system, 需要协作和群体智慧),需要定义好:

  • Environment, agent state.
  • 传统适合RL的简单游戏例如「Cart Pole」,甚至「 Flappy Bird」,他们的时空抽象化都是简单的,且对于goal,其environment 是 fully observable。然而,对于王者荣耀这类游戏,一方只能基于友方单位视野看到地图,所以 environment是 partially observable 的,这就需要增加一批探索阴影地图的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 feature layer

  • Action.
  • 不同于传统适合RL的简单游戏,如「Cart Pole」、「Flappy Bird」等,Flappy Bird的action只有左右或上下的移动。而类似王者荣耀这类游戏,其复杂之处在于 action 多 ,例如基础的action:移动类的有8个移动方向,还有普通攻击类、使用技能类、买卖物品、使用物品等。

    此处会有问题:看起来基础的 action 的个数也不是很多啊,怎么说action多呢?答:简单来说,比如cart pole 的基础的action 只有2个:{左,右}移动,但https:// arxiv.org/pdf/1512.0767 9.pdf 里Multi-Step Plan Environment 中考虑的 the action set is the set of all possible n-length action sequence,也就是把基础的 action 序列作为真正考虑的 action set 中的一员,e.g. 当n=20时,基础的action为{左,右}移动2种,也会有2^20=1e6量级的action数目。

    至于为什么要用一串基础action的序列来作为一个实际action,考虑到 n-length 无论n取1还是大于1,相对的完成goal所需的实际steps数和n是倒数关系,所以是否需要考虑 n-length action sequence ,是需要视实验和所处问题的实际情况考虑的。例如王者荣耀游戏的真实玩家操作会是一系列基础action, 比如不会走向友方单位并攻击,不会一买完物品并卖掉,所以实际action用 n-length action sequence的话,在遇到数目大的情况下,有一批针对性的解决办法。

    例如: https:// arxiv.org/pdf/1512.0767 9.pdf ,里面提出的 Wolpertinger Architecture, 其中的 action embedding 可以既能「generalize over the set of actions」,又能在性能上做到「sub-linear complexity relative to the size of the action set」,因此对于 action 多的问题,还是有希望解决的(注:另有一方的工作是基于用 multi- class classification的思想去解决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/link ed/aisp2012.pdf ;

    把learning complexity 从 O(A^2) 降低到了O(Alog(A))和O(log(A)):http://www. cs.bris.ac.uk/~flach/EC MLPKDD2012papers/1125768.pdf )

  • Goal.
  • Ultimate goal 肯定是我方推倒地方基地获胜,但如果将goal直接设定为这个的,reward将是延迟很多的。如此一来在sparse feedback情况下,agent不太能学好(尽管可以用epsilon-greedy的方法让agent多尝试不用的action)。于是https:// arxiv.org/pdf/1604.0605 7.pdf 提出了一种 hierarchical-DQN (h-DQN) framework,在时间尺度上切分出 intrinsically generated goals,让agent intrinsically motivated的情况下探索新的行为去解决这些intrinsically generated goals,最终 learn an optimal policy to chain them together。过程是(a) 有个top-level module (meta-controller)去选generated goal,(b) 有个lower-level module (controller) 去达成或者关闭这个generated goal,然后这个 meta-controller 反复重复(a)-(b)。

    在王者荣耀里也可以参考类似做法,比如为了实现ultimate goal推倒对方基地获胜,里面能举出一些 intrinsically generated goals by time scale,例如:5分钟左右集合团战团灭对方,10分钟左右要推倒对方几座防御塔等,具有参考意义。


    虽然就目前来说在王者荣耀中实现类人AI会比较难,并且更多真实世界里的任务是难于游戏AI的,但人也要像 RL 里的 agent一样不断exploration&exploitation,才能实现最终的 goal.

    The field of Machine Learning seeks to answer the question :「How can we build computer systems that automatically improve with experience?」

    ---Tom M. Mitchell, Machine Learning, 1997


    另外对于王者荣耀、星际争霸这类游戏,除了RL以外,其本质上也是multi-agent system 问题。下次再深入谈谈。

    本回答来自竹间智能 机器学习科学家 李思文。