走近人工智能——写在AlphaGo与李世乭鏖战前夕(七之六)

来源: 阶梯讲师 2016-03-04 12:03:23 [] [博客] [旧帖] [给我悄悄话] 本文已被阅读: 次 (13466 bytes)
本文内容已被 [ 阶梯讲师 ] 在 2016-03-15 15:49:26 编辑过。如有问题,请报告版主或论坛管理删除.

六、横空出世

就在人们普遍认为十年之内电脑不太可能在平等落子的情况下战胜职业选手的时候,一个名叫AlphaGo的电脑棋手跳将出来,公然叫板欧洲围棋冠军、法国围棋总教练、职业二段樊麾。更让人吃惊的是:AlphaGo自负地宣称“我不需你让我半个子”。

AlphaGo是英国一家专门研究人工智能、名叫“深度思维”(DeepMind)的公司所研制的电脑围棋软件。该公司创建于2010年,早期曾接受企业界大牛人伊隆●马思科的投资。公司于2014年被谷歌收购,外界估计收购金额为四亿英镑左右。

在AlphaGo的研制过程中,它曾与世界上所有著名围棋软件对弈,其中就包括雷米开发的“疯狂的棋子”。结果是,AlphaGo势如破竹,根本遇不到对手。在与这些程序对弈的500场比赛中,AlphaGo只输一场,其余全部获胜。后来AlphaGo干脆让对方四子,依旧连连获胜。

这样的结果让AlphaGo觉得其他围棋软件都太小儿科了,于是迈出了向真正人类职业棋手挑战的第一步。

自二〇一五年十月五日至九日的五天里, AlphaGo与樊麾之间举行了五场正式比赛和五场非正式(快棋)比赛:每天先下一盘正式比赛,再下一盘非正式比赛。在五场正式比赛中,AlphaGo以五比零的辉煌成绩大获全胜,其中,除了第一盘是以二目半取胜之外,其他四盘均为樊麾中盘认输。

所有媒体都对正式比赛5:0的比分大书特书(特别是樊麾的中盘认输),而对非正式比赛的结果只字不提。站在谷歌或深度思维的立场上,这当然很容易理解,因为那是他们希望世人关注的焦点。然而多数中立媒体在作报导时依然选择了与谷歌口径完全一致,不知这是因为他们一开始就被谷歌牵了鼻子走,还是因为生活在信息泛滥世界里的人们对只看前言而不看后语早已习以为常了。

其实在另外五局非正式比赛中,樊麾依然有两盘获胜,而且结果都是AlphaGo中盘认输。余下三盘樊麾中盘认输。

比赛结束后樊麾对记者说,赛前他以为自己肯定会赢,没想到第一盘就输了,于是他希望挽回局面,结果反而更加紧张。他认为和电脑下棋的最大挑战在于电脑不会犯错,而人是会犯错的。

笔者认为樊麾很大程度是输在心理上。从第一盘的结果看,二者的差距并非5:0那么大。很可能是樊麾对自己的失败感到出乎意料,于是想要出些奇招,没想到算得不够精细,结果反而连连失误。但在下非正式比赛时,估计樊麾就不那么在意比赛结果了,于是竟有两盘逼迫AlphaGo中盘认输。虽然其余三盘都是樊麾中盘认输,但这至少说明AlphaGo并没有强大到无懈可击的地步。

不管怎样,AlphaGo算是给所有电脑棋手出了气,把不能在平等落子的情况下打败人类职业选手的帽子甩到太平洋里去了。有了这次5:0的战绩,电圣战对它来说已经毫无意义了。一不做二不休,AlphaGo此番打算向人类围棋的顶尖选手发出挑战,对象就是在世界围棋界举足轻重的人物,韩国棋手李世乭。比赛将于今年三月九日至十五日在韩国举行,胜者将获得由谷歌公司提供的一百万美元奖金。届时YouTube将在网上现场直播比赛的全过程。

而第九届电气通信大学杯电脑围棋大赛也将如期于三月十九日至二十日在日本举行,获胜的前两名电脑棋手将参加于二十三日举行的第四届电圣战,与日本围棋界鼎鼎大名的棋圣小林光一对局。

不知小林光一会让对手几个子。在AlphaGo的比赛之后,原本吸引了众多电脑围棋爱好者眼球的电圣战恐怕只能黯然失色了。真怀疑那些原本极为牛叉的软件作者会不会提前退出赛事,忙着回家建造他们的神经网络去了。

AlphaGo拥有怎样的新算法,胆敢如此嚣张?莫非它真的拥有一个如同人类一样聪明的大脑?

其实不然。AlphaGo最底层的核心算法依然是雷米发明的蒙特卡罗树搜索方法。只不过除此之外,AlphaGo又增加了两个十二层的神经网络,其中一个叫“决策网络”(policy network),另一个叫“评估网络”(value network)。

这两个网络的输入都是19x19的棋盘对局,决策网络决定下一步该往哪里走,而评估网络则决定当前的棋局对谁更有利。

深度思维对外宣称说这两个网络并非一般的神经网络,而是更为高大上的“卷积式神经网络”(Convolutional Neural Network, CNN)。反正名词越深奥,一般人越听不懂,AlphaGo的神秘感就越强。

之所以要用到“卷积”,是因为这样做会给训练神经网络带来很多方便。

记得前面举过的例子吗?两块一模一样的棋,一个里面有眼,另一个没有。在人类棋手看来,这是两个完全不同的局面,因而会用不同的招式去应对。而神经网络是不懂啥“眼”不“眼”的,它只知道这两者在投票时会产生极为类似的权重分布,因而倾向于输出相同的结果。也不是说专家们就不能硬让它们输出不同结果,只是那样做,网络的层数不知又要增加多少层,优化权重和阈值不知又得多花多少时间。

咋办呢?聪明的人类想出了“卷积”这个巧妙的办法。所谓卷积,就是一种变换,它能把一片棋子当中的眼和周围的边界放大很多倍,使得电脑本以为完全相同的两块棋因为眼的存在而变得完全不同。让两个完全不同的输入去产生两个不一样的投票结果,实现起来当然容易多了。

训练这两个神经网络的方法和前面讨论过的伪民主代议制非常相似,只不过在规模上大了许多:这两个网络都是十二级网络,而用来训练它们的样本则是3000万步真实人类围棋对弈的棋局。由于样本量之巨大,加之十二级的网络,这个训练过程一定漫长而艰苦。不过其原理依然逃不出我们前面所举的伪民主代议制的例子。那就是,必须不断修改投票机制(神经网络中的权重和阈值),让棋谱给出的落子得以通过,而其他走法统统被否决。

举例来说,通常在开局时,假如已有三个角都被占领了,那么接下来最好的走法一定是去占第四个角。于是,由我们人类设计的代议制就会让抢第四个角的法案通过,而让其他法案统统被否决。

这么说,电脑棋手是可以依靠神经网络来下棋了?也不行。在真实对弈中遇到如此板上钉钉局面的机会非常少,多数情况下电脑所面对的都是它从未见过的棋局。神经网络虽然很神奇,但是并不知道应该怎样运用围棋知识去寻求答案。它所能做的,就是把棋局输入网络(实际上是在参考人类的几千万步真实对局),看看在相似的情况下人会下出怎样的落子。

由于世界上很少出现一模一样的棋局,因而人类的下法只能对棋局起指导作用,给出一些可能的好下法。接下来,AlphaGo依旧要借助传统蒙特卡罗树搜索方法,用蛮力找出最佳下法。由于神经网络已经给出了搜索范围,因而它不必将所有可能的落子都搜索一遍。

AlphaGo不是有两个神经网络吗?评估网络是咋回事,是用来做啥的呢?

原来,评估网络是用来简化蒙特卡罗树搜索的。它的输入依然是19x19的棋盘,而输出则是在当前情况下谁处于劣势。训练过程依然是受人操控的:首先,人需要想办法把用来训练评估网络的棋谱逐一打分,指出白(或黑)子在那种情况下是不是一定会赢/输,然后强制评估网络接受此结果。于是评估网络在看到类似的棋局时也能输出相对精确的局势分析。

评估网络可以提前中断蒙特卡罗树搜索。

还记得蒙特卡罗树搜索是怎样工作的吗?为了决定当前这步棋走得好不好,找一堆水平一般的人继续把棋下完,如果结果是在多数情况下自己依然能赢,则刚才这步棋就是好棋,否则就不是。

有了评估网络,这些棋就不必下到最后一个子了,只要评估网络说“这样下去你肯定输”,就可以停止搜索。这样做,可以把很多CPU时间节约出来,使其不被浪费在搜索显而易见的昏招之上。

所以,无论是决策网络还是评估网络,其最终效果都不是给AlphaGo带来智能,而是将其从繁重的蛮力搜索中解脱出来。

也许让人觉得最玄乎和不可思议的地方不是AlphaGo打败了樊麾,而是深度思维所宣称的AlphaGo的自增强学习(Reinforcement Learning)能力:在经过3000万步棋局的训练后,AlphaGo可以通过自身的不懈努力来提高围棋水平。

听上去很吓人。电脑是不知道疲劳的,不需要有人天天对它耳提面命“头悬梁锥刺股”的古训,也不需我们时不时地把游戏机从它手中夺下而大喝三声“写作业去!”只要把电源开关打开,电脑便会一直学啊学啊学啊学下去,这样用不了多久,它的智力不就很容易超过人类吗?

由于我们已经理解AlphaGo神经网络的训练过程,因而理解其学习能力也就是顺理成章的事了。在经历了3000万步的训练之后,AlphaGo应该算是“会”下棋了。于是就找两个AlphaGo互相对弈,以子之矛攻子之盾,下完后把每一步复盘。复盘后得来的棋谱正好又可以作为训练样本,把它们拿去继续完善AlphaGo的决策网络和评估网络。只不过,这中间的每一步都是在人类的指导下完成的。

具体做法是:让两个决策网络互相下棋,决策网络在下棋时会看着当前的棋局产生落子建议。假如一盘棋下赢了,那么这些落子就会被加分,反之被减分。假如某种落子建议总是导致输掉比赛,那么这些建议就会被从神经网络中除去。

就这样,在千万次的自我对弈过程中,新棋谱会不断地产生,变成决策网络的新鲜血液,而不好的棋谱会被逐渐淘汰,如此这般,电脑的棋艺也就越来越强。

另外,决策网络互相对弈所产生的棋谱也被用来训练评估网络,因为对于这些棋谱来说,最终的胜负是已知的,而评估网络需要的就是看到棋局后便能预测结果的功能。

电脑的这种学习,从开始设计学习方案到最后验收结果,包括中间的每一步细节,都必须由人来手把手地帮助实现。在这个过程中,人只能发出“把这个数组拷贝到那个数组、把刚才的步骤重复一万次”之类的低级指令,因为电脑根本听不懂“你俩互相对弈”这样的自然语言。此外,在整个学习的过程中,电脑不会表现出一点主观能动性,完全听任人类的摆布。

是的,AlphaGo是一个对“学习”二字毫无感觉的木偶,既不懂“金角、银边、草肚皮”,也不懂“尖、跳、飞、断、打劫、双活”。它所能做的只是按照人的意图把棋局输入伪民主制度中,做一番看上去体现了自己民意的投票,然后再来上一通极为蛮力的随机搜索。至于投票结果是怎样被操控的,自己的搜索能解决什么问题,自己是怎样学习围棋的,自己学会了围棋又有什么意义,它一无所知。

至此,AlphaGo的底牌已被全部翻开。

待续

阶梯讲师原创作品•谢谢阅读

 


更多我的博客文章>>>

 

 

所有跟帖: 

能把复杂问题通俗化,也是功力 -杨别青- 给 杨别青 发送悄悄话 杨别青 的博客首页 (0 bytes) () 03/04/2016 postreply 21:03:55

这个系列真不错,长知识了。谢谢。 -yigezi- 给 yigezi 发送悄悄话 (0 bytes) () 03/04/2016 postreply 21:59:14

加跟帖:

  • 标题:
  • 内容(可选项): [所见即所得|预览模式] [HTML源代码] [如何上传图片] [怎样发视频] [如何贴音乐]