因此我这部分的猜测是,OpenAI很可能选择了200ms以内的某个值,在决策效率(更快的反应速度)和决策深度中取得了平衡,将dota 2 1v1比赛转变为类似围棋的马尔科夫决策过程。
OpenAI算法猜测:先验知识+增强学习
目前OpenAI对他们dota人工智能算法的细节披露相当有限,只是初步表示了他们并未使用任何模仿学习(Imitation Learning)或者类似于alphago的树搜索技术,纯粹使用了self-play即俗称 “左右互搏”的增强学习(reinforcement learning)方式训练。模仿学习是一种有监督的机器学习方法,如alphago最初的落子器就是通过围棋对战平台KGS获得的人类选手围棋对弈棋局训练出来的。而OpenAI并没有使用这种方法,可能主要原因还是较难获得dota 2 1v1的大量对局数据,由于dota 2中有100多个英雄角色可选择,每个英雄的属性和技能均不一样,意味着要对每个英雄做优化训练,如OpenAI在本次The International赛事中,只会使用一名英雄角色Shadow Field(影魔),从人类对局中获得海量(如10万局以上)高水平Shadow Field的1v1对局录像数据其实并不容易。
使用增强学习去令机器学会玩一款游戏,我们不禁马上联想起谷歌DeepMind使用RL学习来玩打砖块的经典案例。DeepMind模型仅使用像素作为输入,没有任何先验知识来辅助AI进行学习,算法Agent通过和环境S的交互,一开始选择随机动作A(向左还是向右移动滑板,动多少),并得到游戏分数的变化作为奖励,然后Agent继续如此玩下去,游戏结束后Agent得到最后游戏总分R,按照这种方式不断让Agent玩N局游戏,可以得到了一系列训练样本(S,A,R),通过训练一个神经网络去预测在状态S下,做动作A可能最后得到R,这样接下来Agent不再随机做出决策A,而是根据这个函数去玩,经过不断的迭代,Agent将逐渐掌握玩打砖块的诀窍,全程不需要人工制定任何的脚本规则。
但是,在dota 2之中,或许很难采取类似学习打砖块那样从随机行动开始的“大智若愚”方式去做增强学习,因为对于打砖块而言,每次动作A对于得分R的影响都是明确可量化的,但在dota 2中,这将会是一个非常长的链条。如以基本动作“补刀”为例:
补刀即对方小兵濒死时,控制英雄做出最后一击杀死小兵获得金钱,不是己方英雄亲自杀死小兵不会获得金钱。如果从随机行动开始,即AI胡乱攻击随机的目标,Agent要联系起补刀行为和最终胜利之间的关联是很困难的:补刀行为——小兵死亡——获得额外金钱——用金钱购买正确的物品——正确的物品增强英雄能力——提升获胜概率,完全不借助外界先验知识,仅通过模拟两个Agent“左右互搏”,从随机动作开始去做增强学习,其收敛速度会异常的慢,很可能哪怕模拟几百万局都不见得能学会“补刀”这个基本动作,但补刀仅仅是dota这个游戏入门的开始。
然而,根据OpenAI宣称,他们仅仅用了两周就完成了算法的训练,或许这里基本可以肯定,OpenAI使用了外界先验知识。
实际上,Dota 2游戏的开发商VALVE有一个dota 2机器人脚本框架,这个脚本框架下的机器人会熟练做出各种dota的基本动作,如补刀、释放技能、拦兵、追杀、按照脚本购买物品等,部分如补刀等依靠反应速度的动作可以展现得非常难缠。只不过机器人动作的执行非常机械,主要由于预设脚本的设定难以应对信息万变的实际竞技,使得机器人总体水平根本无法接近一般玩家,更别说跟职业顶级玩家相比了。
脚本机器人的优势是战术动作的执行,如上述增强学习很难马上学会的“补刀”动作脚本机器人天生就会,属于先验知识,而且可以凭借无反应时间和对目标血量和攻击力的精确计算做得非常完美,缺点在于行动决策弱智。这样如果祭出“组合拳”,使用脚本机器人执行基本战术动作,通过增强学习训练的神经网络负责进行决策,就像《射雕英雄传》中,武功高强但双目失明的梅超风骑在郭靖身上,长短互补一举击败众多高手那样,岂不完美?
我想OpenAI很可能也确实是这样做的,首先优化脚本机器人,将原子化的战术动作A的脚本做得尽善尽美,充分发挥机器的微操优势;同时通过增强学习训练一个神经网络,计算目前局势S下(包括场面小兵和双方英雄的状态和站位、技能CD和魔法值情况等),执行那个战术动作A得到的预期最终reward最高,即A=P(Si),并且在较短的离散空间内,比如200ms不断进行决策并通过脚本执行动作A,最终使得OpenAI在大局观和微操上都取得尽善尽美。当然,由于OpenAI自身还没公布算法细节,上述方法只是一个最有可能的猜测,通过先验知识+增强学习获得一个单挑能力很强的Solo智能。