最近基本上每天晚上回家后就会不时打开直播,看看阿法狗对战李九段。我对围棋不懂,基本上是幼儿园的水平,看直播的感受就是听几位九段讲相声。不过对于围棋的复杂度是有所了解的,围棋搜索空间是10^170 [1], 这个比我们所知宇宙中所有的原子数目还要多,靠蛮力进行搜索没戏。
很多人拿AlphaGo与十多年前深蓝对战卡斯帕洛夫相提并论,而这两个问题的复杂度完全是不可同日而语的。象棋的搜索空间大致为10^50,如果你小学的数学没有完全忘记的话,应该知道围棋与象棋搜索空间上的差距是10^120。他们两者的区别是,象棋可以通过增加计算量蛮力解决,而围棋不可以。
AlphaGo本质上来说使用两个深度神经网络:value network和policy network (科普文章:AlphaGo: Mastering the ancient game of Go with Machine Learning,请自带梯子)来减少搜索的可能性与做出最正确的决策 。而深度神经网络的本身运作方式也是得益于近年来神经科学的发展,通过模拟神经编码和神经元之间信息传递的方式来达到一个“智能"的状态。 [2]
在写这篇文章的时候,AlphaGo已经3:0李九段,第4局正在直播中,很难说后面两局AlphaGo是否能全胜,不过就算是人类这次能够侥幸胜利一两盘,之后的未来也一定是计算机的。说实话,围棋这个游戏真的不适合于人类玩,学习围棋的本质上来说是一个模式识别的过程,当给定了一个棋盘之后。所谓的人类天才能够相对容易发现局势与自己脑中的某一个类似的棋局相似,然后根据自己的经验(也就是记忆)来决策下面如何应对。人类玩在这种开放性的竞技游戏(比如说围棋、象棋、星际、魔兽)中的进步,就是靠着天才创立流派(也就是模式,比如说围棋中国流,星际的PVZ宇宙天空流),靠着扎实的功底打遍天下,最后靠着后人不断的改进和创建新的流派。
而机器就完全不同,机器的进步不需要等个几十上百年出来一个天才来创造一个新的流派,其本身可以靠着强大的运算能力来不断的随机模拟创建出一个新的模式,甚至有些模式是在游戏的过程中随时创建的,这个是人类完全无法处理的情况。看直播的感受就是,AlphaGo的棋总是不被看好,但是越后面却发现它(或者说他)之前下的子很有先见之明。现在人类如果想要打败AlphaGo,就是尝试看看它是否有“模式”可循,说白了就是现在算法的bug,说不定人类走了某一类棋之后,电脑的运算就会出一系列的臭棋最终输掉。不过电脑如果输掉这种棋局,也有自我修复能力,会在下次神经网络训练的时候调高这种模式的权重,然后来针对性的训练,找出自己之前无法处理好的模式,这种投机取巧的方式也只能用那么几次而已,没有什么卵用。
而可悲的事情是,由于人类天生不足,还根本没法去理解AI下的棋,学都学不会。
今天搜索了一下星际争霸AI的进展,看到伯克利有一个叫Overcommitment的AI已经在微操作上已经有了非常大的进步,里面一些飞龙hit and run打闪电兵的操作已经超过了之前那些职业选手几条街了。以前痴迷星际的时候,每年都会期待着看一个叫做“星际争霸XX年最精彩时刻“的视频,那个视频制作精良,每年只有一集。里面最主要的内容就是那年的高手在比赛中的微操如何的牛逼。如果AI有机会看到这个视频,一定会不屑的从嘴里吐出两个字:”傻缺“。
听说Deepmind的下一个目标是征服星际争霸AI,这个真是非常的有意思,把人类又往悬崖边上推了一步。星际争霸这个游戏远比围棋复杂,首先棋盘最大是256*256(而非围棋的19*19),里面需要近乎实时的反应(而非1分钟下一步),里面有策略,有欺骗(因为有战争迷雾的存在),有约束(比如说经济 vs 科技 vs 战斗)。如果星际争霸AI能够做到完美胜过人类,并且算法还是一个通用而非刻意调教出的一个专用算法,那么可以预见在下一场人类 vs 机器人的大战中,人类也几乎没有取胜的希望了。
好吧话就说到这里。最后套用百年孤独的开头来结尾:
-- 多年以后,面对机器人行刑队,我会想起那个看AlphaGo写博客的晚上。(完)
[1]: 关于围棋和象棋的搜索空间复杂度:http://ai-depot.com/LogicGames/Go-Complexity.html
[2]: Wikipedia:深度学习:https://zh.wikipedia.org/wiki/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0