战罢两奁分白黑,一枰何处有亏成(译者序)
围棋是中华传统文化的一颗明珠,属于琴棋书画四艺之一。
围棋是最古老的棋类游戏之一,相传为尧帝所创,早在春秋、战国时期,《左传》《论语》中就有记载。从古诗中我们能感受到历代以来围棋深入人心的程度:“楚江巫峡半云雨,清簟疏帘看弈棋”(杜甫),“别后竹窗风雪夜,一灯明暗覆吴图”(杜牧),“战罢两奁分白黑,一枰何处有亏成”(王安石),“且共江人约,松轩雪夜棋”(寇准),“忘忧清乐在枰棋,仙子精功岁未笄”(宋徽宗),“随缘冷暖开怀酒,懒算输赢信手棋”(唐寅)。
围棋也是世界上最复杂的棋类游戏之一。在国际公认的几大棋类中,围棋在复杂度上独占鳌头,并且远超同侪。正如本书中所介绍的,围棋的每一回合都千变万化,因此潜在的可选棋局的数量极其庞大,“远远超过宇宙中所有粒子的总和”。因此用传统的方法来预测围棋的变化是几乎不可能的事情。其他几大棋类,如国际象棋、中国象棋等,也有类似的特点,但围棋与它们相比有着数量级的鸿沟。例如,国际象棋平均每回合的可能变化大概有30种,而围棋平均每回合的可能变化有250种左右。如果只提前预测5步棋,国际象棋需要预测大概2400万种变化,而围棋则需要处理约1万亿种变化。由于复杂度的增长是呈指数级的,因此多预测几步,两者变化数的差别就会变成天文数字。
我们从人工智能(AI)在棋类游戏上“攻城略地”的历史中,也可以看出这种差别。1997年,IBM的计算机深蓝利用经典AI算法历史性地战胜了国际象棋世界冠军加里·卡斯帕罗夫(Garry Kasparov),攻克了西方世界的“最后一城”。2006年,在首次中国象棋人机大战中,超级计算机“天梭”以5.5:4.5战胜了5位象棋大师。至此围棋成为人类剩下的“最后一座堡垒”,而这座堡垒又坚守了10年。研究界和AI业界几十年的尝试都没能突破,这让人们产生了一个共识:如果还限于经典AI算法的藩篱之中,那么即使配备再高的计算力也无法突破围棋这座堡垒。从这一点上来说,围棋是独一无二的。这也是本书选用围棋作为核心话题的原因。
直到2016年3月AlphaGo横空出世,战胜了围棋世界冠军李世石,围棋这座堡垒才终于宣告失守。虽然这也要归功于近年来硬件水平的不断提高和分布式计算的不断成熟,但最重要的是,如果没有AlphaGo革命性创新的深度学习算法,超越人类水准的围棋AI是不可能实现的。
那么AlphaGo到底做了怎样惊天动地的突破,才使得人工智能最终攀上围棋的巅峰呢?这也正是本书的核心内容——深度学习算法。AlphaGo在深度学习上做出了两次突破。第一次突破,即AlphaGo的第一个版本,是将几种传统机器学习算法与简单的深度学习算法的创造性的集成,产生了“一加一大于二”的效果。AlphaGo采用围棋职业高手的棋谱作为基础数据,以此训练神经网络(经典机器学习到这里就止步了),然后再进行强化学习,通过自我对弈来增强性能,最后在对弈的过程中,把前面的神经网络用在经典树搜索算法中指导下棋。这种监督学习与强化学习的有机结合,正是它产生突破的关键点。第二次突破,也就是AlphaGo Zero,对上一个版本做了巨量的减法,完全抛弃了人类棋谱数据,也完全抛弃了人类对围棋的理解(如劫争之类的围棋专属特征),从零开始,通过强化学习来自我进化,重新发现所有的围棋技巧。由于这个全新的架构更加简单,更加直接,在摆脱人类规则的影响后,它产生了自己独有的洞察力。并且由于引入了几项前沿的深度学习技术(如残差网络等),它的学习效率比上一个版本更高,最终达到了从未有过的棋力水平。此外,这套算法泛用性极强,很容易进一步扩展应用到其他的领域。实际上在翻译本书时,AlphaGo已经有了更加泛化的下一代版本AlphaZero,它很快就学会了3种不同的棋类:围棋、国际象棋和日本将棋。
人工智能,尤其是近年来大热的深度学习,总体来说是偏数学和理论的。几本经典书籍都是以数学推导为主,话题全面,公式量大,但阅读难度较高,并不是最适合作为入门教程。但要想写出浅显易懂的内容来,就必须抛弃很多数学推导,并更多地讨论实践的内容。本书就是一本非常好的实践性入门介绍。它采用Keras深度学习框架,用Python来实现代码,并选取了计算机围棋这个既激动人心又浅显易懂的课题。
如果要用一个词来总结本书的特色,我认为是“庖丁解牛”。本书虽然没有深入讨论太多理论细节,但基本上将AlphaGo背后所有的理论知识都覆盖了。对这样高深的课题进行如此全面的介绍,需要非常细致的层次划分,才能逐步深入,产生深入浅出的效果。
本书第一部分介绍基础知识,分别是机器学习概述、围棋基础介绍以及围棋软件的基础框架,这部分内容恰好能让我们在零基础的情况下开发出一个最基本的围棋机器人来。这是第一个层次。
第二部分对AlphaGo与AlphaGo Zero背后的技术做了划分,并且按照难易度巧妙地进行了合理的安排。树搜索、神经网络、数据预处理、代理开发即部署、强化学习这几个话题,层层深入,使我们在阅读的过程中渐渐对AlphaGo有了更清晰的认知。并且每一章我们都能开发出一个更强大的围棋机器人来,从而可以直接看到自己的进步。这部分最后三章分别介绍了一项强化学习的高级技巧,它们也是AlphaGo和AlphaGo Zero必不可少的组成部分。这是第二个层次。
第三部分把前面介绍的所有内容集成到一起,最终开发出我们自己的AlphaGo和AlphaGo Zero。这是第三个层次。
读完本书,我们不但会对围棋AI这个课题有广泛而深入的理解,而且能够掌握并自己实现最前沿的技术成果。我们不仅会有丰富的实践体验,也会对其背后的理论有初步的思考与把握。打好坚实的基础,再去阅读更深入的理论性著作,或者尝试开发AI在更多领域的应用,就变得更清晰而轻松了。因此我强烈推荐在阅读几本经典理论著作之前,快速阅读本书。
非常感谢人民邮电出版社杨海玲编辑,是她的邀请让我有机会翻译本书,也让我在这个过程中学到了许多知识。虽然我本科毕业设计做的是机器学习,但毕业之后成了典型的程序员,再也没有深入接触过这个领域了。这次翻译让我能够再次深入了解这个自己阔别已久的领域,也为我打开了通向新世界的一扇窗。经过这些年的发展,机器学习已经变得前所未有的强大,实在是令人豁然开朗、耳目一新。对我个人来说,本书是最佳的人工智能和深度学习入门书,希望读者也能有这种体验。
由于我的理论基础并不坚实,翻译与写作水平也有限,因此书中难免会出现翻译不当或表达不畅的情况,希望读者谅解并指正。