围棋变化与人工智能——谈围棋之四
前注:8月30日,美国的未来主义科学网Futurism将AiphaGo打败人类顶尖围棋高手评为2017年迄今最重要科学发现之一。为此,本集谈围棋就主要谈谈围棋的变化之多少以及人工智能在围棋上应用的成功。
与泽塔夫妇的合影。右二为泽塔先生,左二是他夫人,右一是谭国保先生(公众号7月25日发表的《酒逢知己千杯少——厄尔布尔士山下的围棋故事之九》有详尽介绍)
我在伊朗期间原先的房东泽塔先生,据说曾担任过伊朗巴列维王朝时期的某一任文化部长,革命后从国外回来了,是一位见多识广、学识渊博的老人。他对中国文化非常感兴趣。常请我们到他家里去喝茶、聊天及品尝一种他太太用麦芽、面粉和橄榄油制作的柔软的甜食——萨曼糯(Samano)。
当他发现我们放在办事处大厅里的云子围棋和木制棋盘后感到很惊奇。他说他听说过围棋,也听说过中国和东亚的日本、韩国等国的民众会下围棋,但他从没有见过围棋。可是,即便是与这么一位颇有学识的波斯老人谈论围棋也几乎能让我晕倒。比如,有一次,他在办事处指着草编的棋罐中的黑子和白子对我说:
“围棋子为什么是黑色和白色的呢?”
“?”我从来没有想过这个问题,但也不乏随机应变的本事,于是便沉吟了一会说,“代表阴和阳吧。”
“那什么叫阴和阳呢?”泽塔更不懂了。
“阴和阳是自然本源,就和黑暗和光明那样。”说起阴阳,我觉得还能应付。
“哦——”泽塔先生似乎也明白了,“原来围棋是魔鬼与安拉的战斗。”
这位泽塔先生会下国际象棋,也总是用他对国际象棋的理解来衡量围棋,所以总也理解不了。比如,他问我:围棋的黑白棋子形状一样,又没有王后和士兵之类的身份差别,那怎么走呢?
我告诉他,国际象棋是不同身份的棋子有着不同的走法和力量,而围棋则每个子都一样,没有力量强弱,也没有身份贵贱,很是平等。一个棋子它有多大力量就得看下棋人将它放到哪里了。放得位置好,这个棋子就有力量,甚至一下子将对方击溃,或一子定胜负。放的不好,就毫无用处,废子一个,甚至还会坏事,或自绝活路,或让出先手。还有,下围棋就是一人一步棋地将黑子或白子根据自己的需要放置到棋盘上的交叉点上就可以了。所以说,围棋的走法最简单。
在他和他太太到办事处来玩时,为了让他有所体会,除了跟他聊围棋,我还和他各自拿了几个黑白子分别做样子下到棋盘上,然后表扬他说他走得对,他会下围棋了。泽塔一听便高兴得手舞足蹈,对走过来给我们续茶的他的太太自豪地说,“史先生说我会下围棋了!”
为了让这位可爱的波斯老人更好地了解围棋,我还把我当时所知道的有关围棋变化的知识告诉了泽塔先生。在到伊朗前,我曾读过美国《科学家》杂志(The Scientist)英文原版1987年某期的一篇专论古老东方的瑰宝——围棋的文章,还曾经将其翻译成中文,可惜后来译稿连同原文复印稿都找不到了。但我却非常清晰地记住了这篇文章里面记述的有关围棋变化的数据。记得那篇文章曾经专门计算过国际象棋和围棋的变化。如果我没有记错的话,该文在谈到围棋的变化时,大致是这么说的:
国际象棋有纵横各8 个矩阵,一共64 个空格,如果按照每盘棋双方各走30 步棋计算,其变化总数大约是10 的120 次方。而围棋却有361 个交叉点,比国际象棋的棋盘容量大得多,因此其变化也多得多。如果围棋也按照每盘双方各走30 步棋计算,其变化总数竟然会多达10 的700 次方!这是一个多大的概念呢?据目前人类对我们所生活其中的宇宙的了解,我们知道,太阳系的所有基本粒子总和是10 的40 次方,而银河系的全部基本粒子也不过只有10 的70 次方。
这就是说,围棋的变化可能比人类已知宇宙的全部基本粒子还多无数倍。何况几乎从来没有哪一盘围棋双方可以在六十步内下完过呀!(一般而言,现在一盘围棋平均要下到180手才分出胜负——中盘胜另当别论,但如果收官的话,一盘棋至少要下250手棋。这就是说,对弈双方一般情况下平均每方要下90手棋,是上述算法依据的三倍。)
请读者记住这些有关围棋的数据。据我所知,国内迄今所有文章在介绍围棋变化总数时所引用的数据均远远小于上述数据。即使现在,我在将这些数据准确地背诵和记叙出来时也有点怀疑自己是否记错了,但我仍然相信自己的记忆力,相信那篇文章上计算出来的这些数字都是对的,没有记错。
那天,泽塔先生听我结结巴巴地用英文说完这些巨大无比而且也拗口无比的数字后,显然很吃惊,因为他惊讶地睁大了眼睛对我说道:“安拉,阿赫巴尔!”(“Allah,Akhbar!” 意为:真主伟大!)
为我的这本书(指《我在伊朗下围棋》一书,华文出版社2015年8月出版——作者注)作序的国家围棋队总教练俞斌先生在他的序文中也说到,“围棋的魅力源自于其天文数字级的变化。中国古人对围棋有研究,北宋数学家沈括认为,围棋总共最多可能下出768 位数的棋局来。768 位数是什么概念呢?比宇宙中存在的星星数还多!有人说围棋的变化是无限的,这是艺术的夸张,围棋的变化应该是一个极其巨大的正整数。”
在看到俞斌先生为拙作所写的序言说到了北宋沈括对围棋变化的计算结果时,我感到非常吃惊! 因为俞斌先生所言的与我前面所述的英国《科学家》杂志1987 年那篇文章中“如果围棋也按照每盘双方各走30 步棋计算,其变化总数竟然会多达10 的700 次方”的说法是多么地相近啊!沈括先生1000年前就有如此神算,真令人惊讶!
围棋的变化竟然多到比人类已知宇宙的基本粒子还要多无数倍的程度,这一研究的确让人始料不及。当这类关于研究围棋变化的科学数据逐渐为人所知时,人们才感觉到在人类所创造的智力游戏中竟然还有这么一个可能终人类文明也无法穷尽的东西。这实在是令人无法想象的。
记得1997 年,运算速度当时只有每秒100 多亿次的深蓝计算机(每秒约可计算出2 亿步棋)打败了当时的国际象棋世界冠军卡斯帕罗夫,引起国际棋坛的极大震动。甚至有不少很有前途的国际象棋棋手也开始选择退役,因为他们觉得他们的智慧在运算技术迅速发展的电脑面前将不值一提,前途一片渺茫。可是,这些国际象棋棋手们可能不知道,无论人类的电脑技术再怎么发展,计算机的运算速度再怎么加快,倘要让计算机实现与职业围棋世界冠军对弈并打败之的目的,估计还有一段很长的路要走。
2008 年5 月,当时世界上运算最快的超级计算机“走鹃”(Roadrunner)突破Petaflop 屏障。Petaflop 是衡量计算机性能的一个重要单位,即每秒钟进行一千万亿次运算(2010 年年底,中国自行研制的超级计算机“天河一号” 实测运算速度可以达到每秒2570 万亿次。现在的天河二号运算速度就更快了——作者注)。“走鹃”的计算速度比12 年前打败卡斯帕罗夫的“深蓝”要快10 万倍,中国的天河一号则要快20 万倍,但如果想用它们来与围棋有段棋手下棋的话,肯定还是不行的。从深蓝打败卡斯帕罗夫之后的十多年,情况也确实如此。人们不禁会问:为什么会这样呢?
我不懂计算机,但我知道计算速度和价值判断完全是两回事。围棋与国际象棋的最大区别并不仅仅在于因为前者棋盘比后者的大很多或者所致的变化多很多,而是在于前者强调的是一种子力价值判断上的模糊识别,而后者则没有。
与国际象棋的象、王、车、兵、后等棋子有着事先约定的等级身份及其具有相应的走法不同,围棋的每一个子都是平等的,而且走法也是一样的。但是,每个棋子身份平等并不代表其价值也平等。而且,围棋每一个棋子价值的大小并不取决于它的身份或走法而是取决于下棋时它被使用或者说被下到的地方。一旦该棋子落到正确的地方时,它的价值就要比落到其他地方或者落到错误的地方大上无数倍。
也就是说,下棋时每个围棋子儿的价值究竟会是王后还是士兵甚或是垃圾,完全是由下棋者在下棋的过程中自行决定的,而不是事先按照棋的规则约定好的或一成不变的。你下得好的话,你下的每一步棋都可能是王后,否则的话,这些棋也可能都是士兵或者是垃圾。
围棋每步棋的价值都是不一样的,下围棋需要进行不断的价值判断和取舍。这种价值判断不仅是指具体的目数计算,更重要的是要进行模糊的价值判断。而且,这种价值判断不仅包括每一步棋,也必然包括每一步棋与原有的棋子以及盘上每一块棋及它们之间关系的变化。围棋盘上的每一个局部的变化都可能无形中影响到其他局部或全局的好坏。
在具有无限大变化的围棋盘上,这种对每步棋价值进行判断的模糊识别作用与地球上的所谓蝴蝶效应很相似。所谓蝴蝶效应是指在一个动力系统中,初始条件下微小的变化往往能带动整个系统的长期的巨大的连锁反应。这是一种混沌学现象。比如众所周知的一个例子是,南美洲亚马逊森林地区一对蝴蝶煽动翅膀翩翩起舞,但它们煽动的小小的气流没准会在地球的另一端演变成一个巨大的龙卷风。这种互相影响在显露之前可能是未知的或是无法准确预知的或者永远显露不出来。
围棋的奥妙也就在这里。棋盘上各个边角处相距甚远的棋子最初似乎毫不相干,但在一定条件和变化下,它们互相之间的正负面影响就可能会非常巨大。比如引征和打劫。计算机也许可以计算出已确定劫材本身的价值,但它却无法判断众多未确定或待确定(待制造)劫材的价值。这与计算机的速度关系不大。
计算机虽然长于计算,但其最大的软肋也就在这里。因为计算机本身没有价值观,它只知道已知情况的对或者错,而不知道未知情况下可能也存在着暂未显示出来的对与错,也不知道如何控制对错之间的转化,更不知道如何利用现有条件或创造新的条件去改变现存的对和错。
在对和错的价值判断上,计算机是死的,无法与人比。所以,用计算机下围棋没有非常先进的人工智能技术加以配套是不可能的。现在的国际象棋程序已经非常先进了,“深蓝”打败卡斯帕罗夫就是明证。但在后来十多年里,人工智能软件却连一个业余初段都赢不了。比如,20 世纪90 年代,台湾地区的应昌期先生曾悬赏100 万美元征求第一台击败围棋九段高手的电脑(实际上是计算机程序)。但到前年AIphaGo横空出世之前,依然是任何一个水平稍高的业余有段棋手都可以横扫国际上所有的装有最先进围棋程序的电脑。
俞斌先生在为本书所写的序言中还说:“中国棋院前院长华以刚透露了一件鲜为人知的事情,世界首富比尔·盖茨想进行围棋智能化研究,但因围棋变化过于深奥,中国微软研究院知难而退,比尔·盖茨在电脑领域挑战围棋的计划搁浅。
比尔·盖茨肯定是围棋的理解者,他想要进行围棋智能化研究,委托中国微软研究院,通过中国围棋协会,寻找数学方面和围棋方面的专家来研究开发,经费由他来负担。全世界的微软研究院只有三个,中国有其中的一个。结果这项研究胎死腹中,原因是微软研究院无人敢于接招。”富可敌国的比尔.盖茨先生在围棋人工智能技术开发上居然也知难而退。真让人感到意外。现在看来放弃人工智能在围棋上的应用是微软的一大失策。
2010 年北大一位才子开发的MOGO 围棋对弈程序对此曾有突破,但也只在9×9 小棋盘上,一上19×19 大棋盘,人机对弈程序就犯迷糊了。北京邮电大学也开发了一个围棋软件“本手”,也是9×9 小棋盘。据说,国家围棋队总教练俞斌九段曾让两子跟它下过两次,均输了半目。有点儿意思。但这只是9 路盘,形同围棋局部定式演绎。没有多大实战意义。还有,也是2015年初冬结束的美林谷杯首届世界计算机围棋锦标赛上,韩国开发的水平最高的冠军程序“石子旋风”在颇受瞩目的“人机大战”中被中国围棋名人连笑七段打到让六子后才险胜一盘。
因此我觉得,要想实现计算机与人下围棋,人类不仅要研发出更快速度的计算机,还必须在人工智能的研发上出现重大的突破。7-8年前,人工智能技术不仅已可进行模糊识别,也开始进行模糊识别的高级形式——情感识别的研发。不过,要让计算机成功做到高等的情感识别,人们就必须研发出代表着未来100 年人工智能技术水平的高等级人工智能神经网络技术来。换句话说,计算机运算速度已经很惊人了,现在急需研制出如同高智商的围棋天才一样聪明的人工智能神经网络程序。否则计算机打败围棋职业棋手还有很长的路要走。
在这本书出版大半年后我才知道,其实也就在2015年,谷歌研制的AIphaGo围棋人工智能软件已经悄悄地取得了人工智能神经网络的巨大技术性突破并在那年秋已经选择欧洲围棋冠军华裔樊麾职业六段下了六盘棋,樊麾居然0-5败北!
谷歌对此却秘而不宣。直到2016年初,谷歌才在宣布AIphaGo的惊天战绩同时,又宣布了人工智能要与韩国围棋巨星李世石进行比赛。后来的事情世人都知道了:AIphaGo 4:1战胜了李世石。人工智能终于在围棋上打败了人类。去年底今年初,AIphaGo化名Master在网上与中日韩三国60位顶尖围棋高手过招并取得了全胜的战果。人类完全不是人工智能的对手了。
那么,AlphaGo 又是怎么解决了在围棋上战胜了人类的难题的呢?经查,AIphaGo就是通过建立了比较完善的、也是我在三年前这本书中提出来的那种所谓的人工智能神经网络系统而打败人类的。
AIphaGo的人工智能神经网络系统由价值网络(Value Networks)和策略网络(Policy Networks)两部分组成。前者评估棋盘位置,后者则选择下棋步法。这些神经网络模型通过一种新的方法训练,即自我学习,也就是凭借自己强大的计算力和记忆力,除了将人类围棋高手下过的棋谱存入待查外,还不时地自己和自己下棋(Self-Play),从而将实战中最佳的着法全部存入自己的战法库。然后在下棋时再根据棋盘局势将这些最佳着法检索出来,再加以价值计算。这也叫检索计算法。谷歌的这一人工智能神经网络技术的突破使得原来人们认为计算机打败人类至少还需要10-20年的时间的愿望破灭了。
但这并非坏事。人工智能在人类最复杂的智力竞技游戏——围棋上战胜人类是一个拐点,即人工智能开始超越了人类。创造了各种先进文明的天之骄子——人类作为万物之灵已经世上不败地骄傲了几千年,现在终于开始有其敬畏的东西了,尽管这个东西是人类自己创造出来的。