LOL代练网-人工智能可以战胜SKT吗?
随着Alphago再次击败多位围棋顶尖选手,关于人工智能的讨论又热烈起来。看到一些关于人工智能是否能战胜SKT的问题,感觉到很有趣,尝试着利用自己掌握到的有限知识去回答这个问题,才疏学浅还望加友轻喷。
计算机如果想要战胜LOL、DOTA等MOBA类游戏的人类选手,还有非常非常远的路要走。
回溯人机博弈的历史,计算机是先拿国际象棋下手。
1996年2月,深蓝第一次对战如日中天的国际象棋大师卡斯帕罗夫,相必当时的人们也在和我们怀着同样的心情去关注这次对弈。7局赛制,赢1局积1分,平1局积0.5分,负1局不积分。
2月10日第一局,深蓝战胜了卡斯帕罗夫。这是人类有限的历史里,机器第一次战胜一位状态鼎盛的象棋大师。随后的五局里,卡斯帕罗夫3胜2平,以4-2的总比分战胜了深蓝。7天人机对弈大战,这并不轻松。想必卡斯帕罗夫也已经能预知到自己未来必败的故事了,因为人已经到极限,但机器却远远没有。
1997年5月,深蓝卷土重来。故事的结局大家都知道了,在决定生死的第6局,卡神在开局犯下一个严重错误,被深蓝抓住机会,拿下致胜1分。最终深蓝3胜2负1平,以3.5-2.5的总比分宣告机器战胜人类顶尖国际象棋选手。
深蓝用的是什么方法?Brute Force algorithm,算法如其名,用简单粗暴的方法去计算每一步棋,在全部可能性中去寻找最优的对弈解法。这是纯粹的数学游戏,考验也是最基础的计算能力。机器进化的方向并不复杂,那便是不断的提高自己的Computing Power. 深蓝用C语言开发,在AIX操作系统下运行。至1997年,深蓝可以每秒钟可以运算2亿次,它的运算速度也达到了1996年那个版本的两倍。这非常摩尔定律。
接下来故事就是机器对抗围棋选手了。为什么是先象棋后围棋的顺序,想必大家也都明白,复杂度原因。讲道理来说,人类每年都可以double自己的计算能力,我们只需要10年,就可以得到1024倍的计算能力,20年得到2^20倍的计算能力,再加上摩尔定律里关于成本减半,我们可以制造出计算能力无与伦比的机器,但这却远远对付不了围棋选手。
让我们看一下维基百科上棋类复杂度的对比:
围棋的复杂度在10^171,这远远超出了象棋的10^47。预计大部分人对这个数字没有概念,说一个参照的事情,在可观测的宇宙中基本粒子的数量规模在10^80-10^85之间。所以围棋传说中的,千古无同局,并非是虚言。如果Alphago继续使用前辈深蓝暴力破解算法,那看起来就有点儿愚蠢了。机器需要一次变革性的进化。
在深蓝退役后的这段时间里,最强的围棋程序在不断的进化,但实力只能达到业余五段选手的水平,再不让子的情况下,连专业围棋选手都赢不了。
2012年,Alphago的前辈Zen,两次战胜了专业九段Masaki选手,但都是在让4-5子的情况下。
2013年,前辈Crazy Stone,在让4子的情况下战胜专业九段Yoshio Ishida.
一代一代的进化,深度学习算法逐渐走入舞台中央,这就是机器所需要的那次进化。2014年,Alphgo搭载神经网络出世,击败了所有市面上的围棋程序。这仅仅是运行在一台计算主机上的Alphago. 2015年,分布式版本的Alphago拥有1202个CPU和176个GPU,在面对自己1年前的版本时,战无不胜。这个系统的神经网络受启发于人类职业选手,依靠一个对已有职业比赛记录的数据库系统,机器已经可以开始模拟人类选手的下棋方式了。
棋类选手怎么训练,自己研究棋谱,和自己对弈、和他人对弈,从中吸取和学习经验。在拥有了基本的数据库之后,Alphago可以和自己对弈无数多的局次,机器的训练量远远可以大于人类,只要计算能力足够,计算量对机器来说不是问题,在和自己对弈的棋局中,机器在对各种局势的优劣进行判断,从而进行学习,这是一个极其变态的事情,对自我可以无限复制。对于千古无同局的围棋,Alphago看到的棋局和对这些棋局的记忆,远远要比李世石更多,比李世石更记忆犹新。
2016年,Alphago强大到什么地步我们都看到了。但这里有个细节必须要说,Alphago的系统里有一个获胜概率阀值的判断程序,当局势的获胜概率低于20%就主动认输。在和李世石对弈时,这个阀值被设定在20%,细思极恐。三国时期的伟大军事家曹操,在给《孙子兵法》的批注中,留下这么一句话,叫:善战者无赫赫之功。 为什么?因为善于战斗的人,他总是以多胜少,以强胜弱,手里有必胜的把握才去开战。所以他的胜利总是看起来理所应当,没有什么值得赞颂的。Alphago在围棋领域,可以说已经到了曹操所言的这个境界,真正的“强、无敌”。
机器和人博弈的故事接下来就要来到第三阶段,我们也看到谷歌先选择的其实是《星际争霸》。
从科技媒体报道出来的消息来看,两点我们需要注意:1. 机器将会通过对屏幕信息进行捕捉的方式,来进行数据获取,而非是从游戏内读取数据;2. 机器的APM将会受到合理的限制,使人机竞争具备一个相对公平的环境条件。
为什么不直接是英雄联盟或者DOTA2? 主要原因,我认为是可控变量数,星际看起来是在可接受范围内。而且还有一些重要的问题,是AI以后想战胜LOL和DOTA2战队所必须克服的困难,这个阶段刚好用星际来过渡学习。第一点便是“实时性”。无论是象棋还是围棋,它们都是回合制游戏,而《星际争霸》则是“real-time”,立即对对方的选择作出反应,甚至有那么一瞬间,博弈双方的决策汇聚在一起。第二点,对对方意图的准确判断,为什么要建造这个东西,为什么去生产这个单位。
我认为,这是机器在挑战LOL和DOTA的路上,所必须经历的第三个阶段,而且重要性非比寻常。它所需要的计算方式和学习方法,都应该是又是一次变革性的提升,就像从“暴力破解”到“深度学习”。
第四个阶段,我认为才是机器和人类顶尖的MOBA队伍的战斗。如果基于目前已有的AI思路持续发展下去,是否有可能战胜SKT?
首先,我们先看最基础的游戏复杂度,国际象棋也好,围棋也好,它们的复杂度总归是在两个最大变量的控制范围内,棋子数量和棋盘的格子数量。一张MOBA地图有多少个像素点,一局MOBA游戏里可能出现多少种英雄组合,一个英雄可能有多少种技能顺序、多少出装选择、多少种插眼选择、多少种走位选择、多少种打野选择、多少种技能释放选择、多少个开团时机选择,再叠加到五个英雄,有多少可能性的排列和组合。难以想象,这个游戏复杂度我认为是要远远超出10^171这个数字。
其次,我认为要看机器对训练数据的学习方式。Alphago有提到两个神经网络系统,叫value network和 policy network,维基百科这么描述这句话:It uses Monte Carlo tree search, guided by a "value network" and a "policy network," both implemented using deep neural network technology. 可以看出,在底层算法上,这依然是一种蒙特卡洛树的遍历,但遍历路径会受到两个相关的优劣判断策略的引导。那好了,按照这种思路,在MOBA游戏里,需要远远不止两个用于优劣判断的network。举个例子,在DOTA游戏里有这样一个道具,常常被玩家用于发起一些关键性战术性进攻,叫做“诡计之雾”,提供一种短时间内的全体对视野守卫的隐身功能,频频开雾奠定胜局的场次屡见不鲜。问题来了,在这种情况下,AI怎样用什么样的network去帮助它在这种情况下遍历蒙特卡洛树,我实在是想不到。玩家之间的配合方式也是非常多样化,机器以人类数据为训练数据去学习的过程中,也将面对更多需要作优劣判断的场景。还有非常非常重要的一点,就是你可以看到在象棋选手和围棋选手的高质量比赛中,犯错是一件很难想象的事情,就像卡神和深蓝第二次对弈的第6局,就是卡神的开局失误,直接葬送比赛。这对程序非常有利,因为面对人类数据样本时很容易去做优劣判断,但是我们知道,在MOBA职业比赛中,选手会犯大大小小的失误,而机器在面对这些数据时,学习难度自然又有非常大的提高。我认为目前AI对训练数据的学习方式,很难适用于MOBA类游戏。
人类的进步和发展总是循序渐进,在这个阶段讨论AI和MOBA战队的战斗,看起来是很难有答案的,但我依然非常愿意去畅想未来,如果要给一个答案,我认为这个答案一定是肯定的,会有那么一天,机器像人类一样去思考场上局势,去战胜一支人类职业队伍。虽然,这一天非常可怕。伟大的军事家孙子说过:兵者诡道也。如果有一天机器学会了人类的“诡道”,人类该不该开心真的难讲。
还有一个问题,我还想去探讨一下,那就是前三个阶段,机器和人都在单挑,当进入到第四个阶段,我们应该怎么去定义这场比赛,是机器1V5,还是5个AI对战5个顶尖选手?
看过《火影忍者》的同学应该都对佩恩六道有深刻的印象,佩恩六道在战场上的模式,便是“1V多”,六具尸体受佩恩意识的控制,共享视角、共享思维,完全不需要沟通和交流,完美配合输出,自来也大人死的不冤。我们都知道,人类玩家之间因为沟通和交流出现问题导致崩盘、甚至队伍分崩离析的事情,屡见不鲜。
届时,怎么去定义这场MOBA对决应该也会出现这个问题,允许机器链接,那你就只能把它们当作一个整体去击败,它们不存在团队执行力和目标一致性的问题,而人类团队则非常非常难达到这种境界。这种信息沟通的方式,看起来简直是作弊。
我异常期待这场对决,希望在有生之年可以看到。
- 上一篇:LOL代练网-世界冠军Wings俱乐部-成立英雄联盟战队 2017/1/9
- 下一篇:LOL代练网-AD不行?UZI笑了“我有它们不怕” 2017/1/9