(再)聊几句AlphaGo

0.

从最简单的一个游戏,井字棋,说起,它的规则是这样:

两个玩家,一个打圈(◯),一个打叉(✗),轮流在3乘3的格上打自己的符号,最先以横、直、斜连成一线则为胜。

下图就演示了一局游戏的进程,最终画圈一方获得了胜利:

Three-game

如果让电脑来下井字棋,它会怎么考虑?电脑首先会设想,如果我第一步分别下在角、边、中心,对方可能下在哪些位置,对方下在那些位置之后,我又可能会下在哪些位置,像倒置的树一样,去把所有可能的情况都列出来,在每一步都选择对自己最有利的下法。

545px-Tic-tac-toe-game-tree.svg

有人总结出了这么一幅图,把第一手✗下在角上的所有可能情况都列了出来:

600px-Tictactoe-X.svg

由于可以列举出所有可能的情况,我们已经知道,如果双方应对都不出错,游戏将以平局结束。更进一步,对于这个游戏中出现的任何局面(即使之前有人应对出错),我们也能够知道最好的下法是什么,以及在最好的下法下,游戏的结局将是什么。

当我们谈“拆解”了一个游戏的时候,需要先说明是哪种“拆解”,以刚刚这个游戏为例,可以引入一个概念了:

强拆解:有一套算法,可以从游戏的任何局面开始,给出最完美应对,即使在这之前有人应对出错过。

无疑,对于井字棋,我们已经有了“强拆解”。与强拆解对应的,还有若拆解和极弱拆解:

弱拆解:给出一个算法,能从初始局面开始保证先行方(或者后行方)不败,无论其对手采取何种策略。

极弱拆解:证明在初始局面下,先行方是否有必胜/不败策略;或者证明后行方是否有必胜/不败策略。只需证明存在性即可,不需给出一个构造。

注意这几种拆解的区别:强-弱的区别在于,强拆解可以从任何局面开始,弱拆解要求从初始局面开始;弱-极弱的区别在于,弱拆解要求给出具体的下法,而极弱拆解只要证明存在必胜/不败策略即可,不需要给出具体下法。

弱与极弱的区别,有点像数学中的“存在性证明”和“构造性证明”,具体不再展开,举一个例子说吧,在一个与世隔绝的荒岛上发生了一起命案,就像阿婆的《无人生还》里的场景那样,我们知道“这些人中间有一个是杀手”,但并不知道“这个杀手是谁”,这种“知道有杀手”但不知道“杀手是谁”的情况,就类似上面的“极弱拆解”,或者数学上的“存在性证明”:我们只知道有一个必胜策略,但不知道具体策略是什么。

1.

1997年是一个神奇的年份,在那一年发生了两件与今天的话题有关的事情。5月,IBM的深蓝电脑以3.5:2.5的比分打败了人类的冠军卡斯帕罗夫,3个月之后,未来的围棋冠军柯洁出生。

深蓝打败卡斯帕罗夫,主要靠的是三种武器:开局库、残局库、强大的中盘计算力。

开局库中存储了大量开局的下法、变招、最佳应对方案,遇上匹配的开局,可以直接按照开局库来下,像这种机械性记忆的内容,电脑比人脑擅长得多,想想你从小到大才背了几首古诗、几篇古文,而现在随便哪个手机里都可以存得下《四库全书》吧。

残局库中存储的则是残局的下法,棋子越少,变化的可能性越少,计算量就比较少,现在计算机对于3~7子的国际象棋残局,已经可以做到“强拆解”(回想一下强拆解的概念?)了,对于部分的8子残局,也有了强拆解。

强大的中盘计算能力,在开局之后,残局之前,电脑利用前面井字棋中类似的方法,把各种可能的下法一一列举,找出最强的应对。但是,国际象棋的下法可能性、步数,比井字棋多太多了,电脑不可能完全列举出来,需要在树状结构中,把一些明显不利的下法去掉,这种做法在计算机算法中叫“剪枝”,为了判断哪些下法是不利的,人类还需要教电脑一些国际象棋知识:如果“王”被吃掉,就输了,如果“后”被吃掉,是一个极大的损失,如果“兵”被吃掉,是一个比较小的损失……等等。

经过这些剪枝之后,电脑大概可以推算12步,而人类顶尖选手,通常最多只能算到10步。

如果电脑能像下井字棋一样,把所有可能的下法都列举出来,不就能做到对国际象棋的“
强拆解”了吗?

2.

在回答这个问题之前,先讲一个小故事:

在印度有一个古老的传说:舍罕王打算奖赏国际象棋的发明人——宰相西萨·班·达依尔。国王问他想要什么,他对国王说:“陛下,请您在这张棋盘的第1个小格里,赏给我1粒麦子,第2小格给2粒,第3小格给4粒,以后每一小格都比前一小格加一倍。请您把这样摆满棋盘上所有的64格的麦粒,都赏给您的仆人吧!”国王觉得这要求太容易满足了,就答应给他这些麦粒。当人们把一袋一袋的麦子搬来开始计数时,国王才发现:就是把全印度甚至全世界的麦粒全拿来,也满足不了那位宰相的要求。 那么,宰相要求得到的麦粒到底有多少呢?

480px-Wheat_Chessboard_with_line.svg

稍微用一点数学,就能算出来,需要的麦粒总量是2^64-1颗,写成数字是:

18446744073709551615

数字精确,但不直观。稍微做一下转换,有一个重量单位叫格令,是指一颗大麦粒的重量,说中文名不太好理解,说它的英文名就清楚了——grain,1 grain大概是64.79891毫克,算下来,国王需要准备1195328909025吨粮食。数字还是太大,看不出什么感觉来。

再换算一下,地球上有70亿人,如果把这么多粮食平分给地球人,每个人大概可以分到170吨,想想在学校食堂的时候每顿饭打3两、5两米饭[1],如果每人每顿饭都能吃掉5两米,170吨够吃621年。

国王需要准备70亿人每人吃621年的那么多的粮食。

或者,据美国农业部发布的大米展望报告显示[2],2015/16年度中国大米产量预计达到创纪录的1.457亿吨,生产填满国际象棋棋盘那么多的粮食,需要中国生产8200年。

国王需要准备中国8200年能生产的那么多的粮食。

用这样的描述,来代替2^64-1,就可以建立起对指数有多大的直观感受,而不仅仅是并不起眼的2、64和1。

说回国际象棋的“强破解”问题,如果像画井字棋的“树”那样画国际象棋的树,这棵树上的局面数会有10的123次方这么多,根据深蓝每秒运算2亿步棋来算的话,对于博弈树的遍历需要10的107次方年[3],这个时间还是不够直观,据科学家估计,宇宙诞生至今有136亿年,10的107次方,相当于宇宙寿命的7后面跟着96个0那么多倍:

7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 倍。

那么围棋呢?

据估计,如果还是画树,这个树上会有10的360次方那么多种局面,以深蓝的计算能力,这个数字比国际象棋的复杂程度,又多了253个0。0再多,就只是数字而已了,不管是国际象棋还是围棋,其复杂程度都已经超过了宇宙中原子的个数(约10^80),“强拆解”是一件很难的事情了。

3.

相比国际象棋,除了状态数相差很大之外,围棋还有两点重大的不同:

  • 围棋棋子都是一样的,但每个子的价值却是不一样的,这与子的位置有关,还跟子与其他子的位置关系有关,同一颗子的价值,也会随着棋局的进展,不断发生变化。
  • 围棋没有类似国际象棋的那种“残局”,国际象棋越下,棋子越少,而围棋越下棋子越多,局面也越多,到了官子阶段,无法像国际象棋一样直接套用残局库来解决。

所以AlphaGo是怎么战胜李世石的?还是从状态树上下手。

AlphaGo的算法,也是在各种下法可能的“树结构”上去想办法:减少树的宽度、减少树的深度、快速遍历树。对应了三个技术:策略网络(policy network)、估值网络(value network)、快速走子(fast rollout)。

  • 策略网络:把人类棋手下过的棋谱给电脑,让电脑学习这些棋谱,来预测每个局面下人类可能的下法及每种下法的概率。
  • 估值网络:把电脑自我对弈的大量棋谱和结果,让电脑学习,来判断每个局面下哪一方更加占优,在电脑无法遍历更深的树时,使用估值网络的结果来估算最终结果。
  • 快速走子:跟策略网络类似,也是预测最可能的下法,准确度有所牺牲,但预测所需时间大幅度减少。

可以看出,策略网络减少了树的宽度、估值网络减少了树的宽度、快速走子加快了遍历树的速度。这些技术综合在一起,让AlphaGo的棋力获得了巨大提升:

alphago

图片编译自Google发表的论文中的内容,显示了这些技术的各种组合下的棋力如何。值得一提的是,这张图表示的AlphaGo的棋力是2015年10月份的,那时在Google内部自测已经达到了3000分以上的等级分,这也是为什么那时候的AlphaGo可以战胜等级分只有2900多的欧洲冠军樊麾,在那之后AlphaGo仍在不断进步,在赛前据小道消息称,内部自测AlphaGo的等级分已经超过4000,而与李世石的5场正式比赛之后,AlphaGo有了正式的等级分。相信Google还会不断提升AlphaGo的棋力,最终与柯洁将有一战。

goratings

(图片编译自:http://www.goratings.org/)

关于快速走子、估值网络、策略网络的配合方式,在微博上看到一个形象又不失准确的描述[4]:

一位业余4段(策略网络)提供了若干想法,然后两名业余3段(快速走子)狂下上万甚至上百万盘,旁边一位业余5段(估值网络)不停的指指点点:“此黑棋大优”,“此棋白不行了”,“黑棋崩了,不用下了”,然后把这些判断对应的概率写下来。 人间方才一秒,阿法狗的世界已过千年,然后我们看到“狗狗棋圣”在盘上落下了或精彩、或奇怪的一着。

讲了这么多AlphaGo的原理,还漏掉了一个重要的信息,所谓的“策略网络”、“估值网络”中的“网络”是指什么:“网络”这里是指“人工神经网络算法”,是指在计算机中模拟大脑神经元的结构和联络方式,通过给定数据的训练,不断调整“虚拟神经元”,使得电脑在遇到新的数据的时候,可以根据已经进行过的训练,输出结果。一般来说,给计算机用来训练的数据越多、质量越高,训练的效果就越好。

具体到AlphaGo,它在训练时使用的是大量业余选手的数据、自我对局的数据,而职业选手的棋谱数据并没有使用[5],并结合各种方法,最终打败了顶尖的职业棋手。

4.

不难看出,AlphaGo虽然在围棋上战胜了人类,但还算不上是拆解,根据之前的讨论,AlphaGo融合了各种技术,利用电脑强大的计算能力,战胜了人类顶尖选手,但它并没有能够走出必胜的棋,也没有证明围棋存在必胜策略,因此,AlphaGo并没有成功的“拆解”围棋,不管这个“拆解”指的是“强拆解”、“弱拆解”还是“极弱拆解”。

那么,它算是智能了吗?

根据WikiPedia上的定义,“人工智能”又分为“强人工智能”和“弱人工智能”:

强人工智能观点认为有可能制造出真正能推理和解决问题的智能机器,并且,这样的机器能将被认为是有知觉的,有自我意识的。强人工智能可以有两类:类人的人工智能,即机器的思考和推理就像人的思维一样;非类人的人工智能,即机器产生了和人完全不一样的知觉和意识,使用和人完全不一样的推理方式。

弱人工智能观点认为不可能制造出能真正地推理和解决问题的智能机器,这些机器只不过看起来像是智能的,但是并不真正拥有智能,也不会有自主意识。

按照上面的观点,AlphaGo在下围棋这件事上,并没有自主意识,只是看起来像是智能的(排除掉第四局中下出的几步傻棋),勉强可以算是“弱人工智能”。

关于如何测试强人工智能,也有诸多不同的测试方法:

  • 图灵测试:如果一个人C通过网络聊天,去询问两个他不能看见的对象任意一串问题。对象为:一个是正常思维的人、一个是机器。如果经过若干询问以后,C不能分辨A与B的不同,则此机器A通过图灵测试。
  • 咖啡测试:将一部机器带到一个普通的美国家庭中,让它泡好一杯咖啡。它需要找到咖啡机、找到咖啡和水、找到杯子,然后按正确的键以冲泡咖啡。
  • 机器人学生测试:让一个机器去注册一所大学,参加和人类学生同样的考试,然后通过并获得学位。
  • 雇员测试:让机器处在一个经济上重要的职位,需要它能够和同样职位的人类做得同样好或者更好。

2014年,一个名叫Eugene Goostman的聊天程序,在5分钟的在线聊天之后,成功的让33%的评委误认为它不是聊天程序而是真人。

但这是否算是通过了图灵测试了呢?Eugene模仿的是一个13岁的乌克兰小男孩,而并不是成人,通常我们认为,越小的人懂的越少,也越好模拟,而且聊天的时间也只有5分钟,如果时间再长一些,出破绽的可能性也许就越强。

更关键的是,Eugene只是“看起来像是智能的”,并不是“智能强大到了可以跟人谈笑风生的”,换句话说,Eugene的使命就是为了通过图灵测试,它的目的就是要在一定时间内模拟人对问题的反应,就像是没有监考的开卷考试交上来两张同样是满分的卷子,一张来自真正掌握了这门课程的学霸,一张是对着参考书抄满了卷子的学渣,但你无法判断哪张卷子是来自哪个人,但这并不意味着学渣和学霸对这门课有了同样的掌握。

关于图灵测试的这个缺陷,有一个说法是:当一个测试规则被公布出来之后,它就失效了,因为人们会为了通过图灵测试而去修改电脑程序,而不是让电脑程序有足够多的智能来通过图灵测试。

而另外的咖啡测试、机器人学生测试、雇员测试,显然电脑的能力还差得远。

5.

在可预见的未来,有很多职业会随着电脑程序的不断进步而消失,比如自动驾驶技术成熟之后,不仅在驾驶技术上可以取代出租车司机,而且,通过大数据的运算和预测,可以实现更方便的调度和预定。

目前Google的自动驾驶汽车已经获得了在加州的上路许可,并且在路上行驶了足够多的里程,也发生了第一起责任事故[6],日本的自动驾驶技术,已经在某城市的一小段路上实现了自动出租车[7],但这项技术在全球、尤其是在中国的应用,除了技术上是否安全的担忧之外,还涉及到更多的利益、法律、社会问题。

而上文中提到的雇员测试,要求机器人处在一个经济上重要的职位可以达到人类的水平或者更好,法官、律师无疑是这样的职位,其需要的智力水平、专业素质、学习能力、分析问题解决问题的能力都非常高,电脑目前的优势,还只是在高强度的计算、重复性的劳动上面,离法律人所需的素质还相差很远。更不用说,让人工智能代替律师或者法官所带来的利益、法律、社会、伦理问题该如何解决了。

记得以前看过这样一段轶事:

上世纪三十年代,吴经熊是上海特区法院的院长,签署过不少死刑判决。他在自传中写道:“我当法官时,常认真地履行我的职责,实际上我也是如此做的。但在我内心深处,潜伏着这么一种意识:我只是在人生的舞台上扮演着一个法官的角色。每当我判一个人死刑,都秘密地向他的灵魂祈求,要求他原谅我这么做,我判他的刑只因为这是我的角色,而非因为这是我的意愿。我觉得像彼拉多一样,并且希望洗干净我的手,免得沾上人的血,尽管他也许有罪。唯有完人才够资格向罪人扔石头,但是,完人是没有的。”

在这段话边上,学生时代的何帆给的批注是:“伪善。”

如今,他拿出笔,划去那两个字,在旁边写上:“人性。”

这个,人工智能该如何模拟?

6.

老罗曾经评价过人工智能的一句话:“人工智能就像一列火车,它临近时你听到了轰隆隆的声音,你在不断期待着它的到来。他终于到了,一闪而过,随后便远远地把你抛在身后”。

今年3月李世石对战AlphaGo的五番棋大战,就是围棋界的人工智能专列在人类眼前驶过的时刻,我一位师兄评价说:有些人目送着火车驶过,却还有人在驾驶和制造火车。人工智能只不过重新定义了智力劳动和机械劳动的范围,很不幸,围棋换了个位置而已。

在未来,电脑技术的发展,肯定会代替越来越多的人类工作,对于法官和律师而言,一些重复性、机械性、缺少技术含量的事务性、体力工作,电脑参与的程度注定会越来越高,简单说,凡是人类觉得“没有技术含量又不得不做好烦啊真想请两个实习生来做”的工作,都是很有可能被电脑取代的,我对此的态度是表示欢迎,毕竟人类可以腾出手来做更需要智慧、更需要创造性的工作。

相比其他行业的人,法律人有一个强大的优势,那就是适应变化的能力。由于新的法律和司法解释不断出台,他们天然的需要学习新的知识,更新自己的认知,他们对于变化的接受程度也更高。也许终究有那么一天,电脑强大到可以逐渐替代所有人类劳动,而法律人被替代,应该会发生在很多行业之后。

AlphaGo战胜李世石,虽然是个突破,但无需杞人忧天,如果真的有一天,人工智能的技术有了巨大突破,可以完全替代法律人了,那它也应该已经强大到可以为人类安排一切了,它的决定是帮助人类、服务人类,还是压迫人类、奴役人类,我们无从可知,但这一定是全人类共同需要面对的。

[1]. 我一直没搞清楚食堂的饭是按米算还是按饭算的,而且不同学校的1两饭、甚至同一个学校的不同食堂的1两饭都千差万别。

[2]. 来源:http://finance.sina.com.cn/roll/2016-01-19/doc-ifxnqriy3132783.shtml

[3]. 来源:https://www.zhihu.com/question/22770218

[4]. 来源:http://blog.sina.com.cn/s/blog_72b0a6e10102w6ia.html

[5]. 来源请求

[6]. 来源:http://www.ifanr.com/626629

[7]. 来源:http://auto.sohu.com/20160304/n439350351.shtml

发表评论

电子邮件地址不会被公开。 必填项已用*标注