最近朋友圈再一次被Google Deepmind刷屏。他们推出了一个新的围棋程序AlphaGo Zero,改进了之前打败世界冠军的程序AlphaGo。AlphaGo Zero号称完全不需要人类先验知识,可以以较短的时间和较少的计算资源通过强化学习的方法,从零开始,学习出一个新的围棋界“独孤求败”,再次震惊了学界和大众。
作为人工智能领域的同行,虽然我不属于深度学习领域,但仍然为他们取得的成绩感到欢欣鼓舞。同时,我也希望从人工智能其他领域科研人员的视角,解读一下AlphaGo Zero的前世、今生及未来。本文主要作用是给非计算机专业的读者们科普,非常欢迎专家们批评指正。
自人工智能诞生以来,让机器自动玩智力游戏并寻求战胜人类,就一直是人工智能领域追求的重要目标之一。
因为智力游戏被公认为是智能的一种具体表现,而人工智能的终极目的就是用机器实现人类(部分)智能。人工智能正式诞生的元年,即1956年,阿瑟·萨缪尔(Arthur Samuel, 1901—1990)就编写一个程序下西洋跳棋战胜了他自己;1962年,这个程序击败了一个美国的西洋跳棋州冠军;1994年,一个新的西洋跳棋程序Chinook战胜了人类总冠军。
1997年,IBM开发的深蓝击败了国际象棋世界冠军卡斯帕罗夫,当时也引起了巨大轰动。
为什么在已经证明了机器下西洋跳棋和国际象棋比所有人类都要厉害的情况下,还要做围棋?为什么围棋最受关注,而不是其他智力游戏,比如五子棋呢?这里最关键的原因在于围棋的复杂性。更确切来讲,围棋是所有大家熟知的智力游戏中,搜索空间最大的,所需要的计算量也是最大的。
AlphaGo Zero并不是石头里面蹦出来的孙悟空。在此之前,人工智能界做过很多努力,也总结出了很多有效的思路、经验和技术。用机器来玩智力游戏,首先的步骤是建模,即把这个游戏表示成一个机器可以处理的问题。同西洋跳棋和国际象棋一样,围棋可以被建模成一个搜索问题。更具体一点,下棋的步骤可以表示成一个搜索树,其中每个节点代表一个棋盘状态。
AlphaGo Zero横空出世,颠覆了人们的认知。
2015年10月,AlphaGo 5:0击败了欧洲围棋冠军樊麾。2016年3月,AlphaGo 4:1击败了前世界冠军李世石。2017年5月,AlphaGo 3:0击败了世界排名第一的中国选手柯洁。在这段期间,一个AlphaGo的改版程序Master在各大围棋平台上以60:0不败战绩横扫各路围棋英豪。
然而,更惊奇的是,2017年10月,AlphaGo自我创新,提出了一个新的变种AlphaGo Zero。该程序完全不依赖人类专家的对局,从零开始,使用强化学习的方法;仅用一台带有4个TPU的机器,40天下了两千九百万局棋;从中自我进化成了一个新的围棋界的“独孤求败”;100:0吊打李世石版本AlphaGo,89:11痛殴Master。至此,基本可以论断,在围棋领域,机器已经完胜人类了。
从技术角度来看,AlphaGo Zero继承并改进了之前的框架。AlphaGo Zero依然把围棋建模成一个搜索问题,依然采用基于评价的方案来做决策。其主要的学术贡献在于提出了一套新的估算评价函数的方法,更好地融合并改善了已有的两种重要的方法(即蒙特卡洛树搜索方法和基于深度学习的方法),从而达到了惊人的效果。
AlphaGo Zero证明了后者是完全可行的,至少在机器下围棋这个领域。
AlphaGo Zero甚至比AlphaGo还厉害,这是不是这意味着强化学习比有监督学习厉害呢?并不是。除了算法上的改进之外,AlphaGo所用到从高手棋谱中得到的数据,即<输入,输出>对(<棋盘状态,选择>对),并不一定是最优解。这是关于数据质量的问题。对于复杂问题(如围棋)的标注,人类的标注有时并不一定是最佳选择。很多时候,人类高手容易出现盲点。
而强化学习算法,因为不依赖太多先验知识,反而能够跳出窠臼。所以, AlphaGo Zero的有些落子,出现了一些“神之一手”,人类顶级选手都想不到的招数。
除了为强化学习注了一剂强心针之外,Alpha Zero还号称,通过这种从零开始的强化学习,它可以学习到已有的和新的围棋定式,也就是说学习到了新的知识。而定式是通过出现频率来判断的。
这点也非常有意义,因为这再次表明了显式的知识可以通过隐式的(学习)过程来得到,而且这种过程能得到以前从未有过的知识。虽然这很振奋人心,但目前还需要持辩证的观点。例如,基于出现频率来判断知识是不是靠谱(如有些频率出现高的未必就能称为知识)?以及这些新得到的定式是否真的很有用?这两点在文章中并没有详细分析。
总而言之,AlphaGo Zero攻克了智力游戏中的皇冠——围棋;提出了一个新的“基于蒙特卡洛树搜索的强化学习”方法来估算搜索中的评价函数;验证了强化学习的有效性;进一步表明用隐式的方法能够获取显式的知识,当之无愧是人工智能史上一个里程碑。