Uploads%2farticles%2f10689%2fqq  20160309011115
|
2016-03-09

国内围棋 AI 挑战世界冠军,并非哗众取宠,而是深度学习的胜利

编者按:人工智能 ALPHAGO 与围棋选手李世石的世纪之战开赛在即,国内人工智能异构神机也趁机向另一位围棋冠军柯洁宣战。那两者的区别是什么?开发时间仅一个多月的异构神机是否在哗众取宠?本文作者杨作兴亲身参与了异构神机的比赛过程,对于它的实力,以及人工智能均有独到的看法。感兴趣的朋友可以在他于深圳湾的主页,与他交流。

3月7日,我参加了由异构智能公司,极客帮和聂卫平围棋道场三方共同主办的「异构智能挑战未来」发布会。相关报道可阅读深圳湾此前的文章

作为 AI 领域的行业人士,我很有兴趣了解吴韧博士异构神机算法的独到之处,以及硬件实现的独到之处,在媒体提问时间,我抢先问吴博士这个问题,吴博士好像没有给到我答案。

发布会结束后,大家意犹未尽,吴韧,俞斌,华学明,蒋涛等仍在发布会边上的一个房间继续热聊。俞斌九段是应该是围棋界最懂软件的,他之前有写过围棋方面的软件(蒋涛曾经买过俞斌的围棋软件),现在也在做关于围棋教育方面的 APP。他一直试图做一个高水平的对弈软件用于围棋教学,但效果不好。吴博士的围棋智能软件在 3 月 6 号赢过一个职业四段一局,俞斌对这个事情很有兴趣,问吴博士算法原理,并希望能看看吴博士的源码。看到俞斌如此有兴趣,有人建议俞斌跟吴博士的围棋智能软件切磋一下,找找感觉。尽管第二天俞斌要以嘉宾身份坐早上 8 点的飞机参加 ALPHAGO 跟李世石的对弈,但对于围棋智能的强烈兴趣,他欣然前往吴博士下榻的 Westin 酒店考察一下围棋智能的实力。

第一局俞斌执白,10秒走1步,大约50步左右,围棋智能认输。第二局,俞斌继续执白,让两子,30秒走1步,大概用了1个多小时,结果如下:

俞斌的评价是,走了一步臭棋,两步好棋,让两子情况,他还占些优势,如果让三子,结果还很难说。总的来说,他觉得实力还不错,超过他的预期。我当时的感觉也比较吃惊,我一直认为围棋智能需要用到 ALPHAGO 那样的 170 个 GPU 加上 1200 个 CPU 那样的计算能力,才可能跟职业选手对弈,但吴博士智能围棋硬件就是一个苹果笔记本。而且吴博士就两个人花了一个月的业余时间,写了这个算法和软件,当时感觉:吴博士真厉害,人工智能真的很棒。

作为一个人工智能行业人士,我一直在思考这是如何做到的,ALPHAGO 是大神,吴博士是大神?聂棋圣认为围棋最难的是棋局判断,这就是所谓的棋感,就是顶尖九段对一个局面也可能有多个看法,计算机是不可能做到这一点的,围棋智能能做到这点么?

之后,结合我对计算机硬件和人工智能算法的了解,以及俞斌九段在 3 月 7 日晚上跟围棋智能下棋过程中的一些讲解,我好像想明白了,把我的想法跟大家分享一下。

在下面阐述之前,我需要申明一下,我是芯片的专业人士,对人工智能算法有一点了解,但不是专业的,对围棋连业余都算不上。因此对于我阐述中不太对的地方,欢迎大家拍砖(微信号:yangzuoxing001)。

人工智能搞了好几十年了,人们一直寄予了很高的期望,但失望大于期望。直到 2005 年 HILTON 发明了神经元卷积网络(CNN):

这个网络的基本原理是对物体特征的逐层抽象,它有三个重要的意义:

  • 1)物体特征是通过计算抽取出来的,不是模式识别年代由专家假定的特征。采用 CNN 抽取出来的特征,设计者自己也不知道它应该出来什么特征。
  • 2)卷积神经元的参数对于每一个小窗口的参数是一样的,这个极大的降低了特征提取的计算量。
  • 3)提取特征的模型参数是通过学习出来的,随着学习样本的增多,模型参数会越来越准确,特征的提取也越来越准确,使用者会感觉它越来越聪明。

采用以CNN为代表的深度学习方法以后,人工智能开始取得突破性的进展:

人工智能在语音和图像识别方面开始超越人:

  • 1)语音识别(错误率):机器(6%) < 人 (8%)
  • 2)人脸识别(错误率):机器(0.23%) < 人 (0.8%)

AlphaGo 完胜欧洲围棋冠军、职业二段选手樊麾,进一步显示了深度学习在方法学上的成功。那围棋智能是如何使用深度学习做到这一点的?他未来还会做到多好?它的软肋在哪里?

围棋最难的是什么?是棋感,聂棋圣如此说,很多下过围棋的也这么说。为什么难呢?因为当前的局面说不清楚是好是坏,一个人一个感觉。一颗子下去,好还是不好,大部分情况由感觉决定。为什么出现这种情况,大家下棋不是要计算么,为什么不是棋手算出来的?围棋每一个子下去有 361 个位置,凡是空的地方理论上都可以下子,如果我们能看两步棋,那我们就需要在脑子里边考虑 361*361=13.0321 万个棋局,如果考虑四步,那就是 312.7704 万种棋局,如果 361 步都能算出来,那就是——抱歉,采用 EXCEL 算不出这么大的数。因此围棋很难通过计算来下棋,大家在训练和实战中,通过定式和感觉来下棋。这个人搞不定的事情,计算机可以搞定么?计算机的计算力能力远大于人,但很遗憾目前的计算机也搞定不了这么大的计算量。

但是深度学习改变了这个局面,计算机通过训练,可以培养出来棋感。具体情况见下图:

这里边有三个重要的要素:

  • 1)海量的棋局,几十万,几百万的对局,越多越好。
  • 2)CNN计算网络,可以设计成不同的层数,每一个的大小可以不同,中间还可以加入各种保证收敛的非线性层。
  • 3)网络模型参数,这个最重要,这个就是棋感。

训练的过程是这样的,输入海量棋局,调整 CNN 网络结构和网络模式参数,使计算出来的局面判断结果跟人判断的结果一致。最后局面的结果是确定的,但从第一子到最后结局之前的局面如何判断?初期的局面的确很难判断,但一个基本的倾向是,凡是最后结果好的,前面走的局面都做正向判断,哪怕有几步明显是臭棋。如果我们采用同一套 CNN 网络结构和同一套模型参数,让海量棋局的计算机局面判断和人为判断是一致的,那从原理上来说一个计算机没有见过的棋局它也能以极大的概率判断正确。这样计算机的棋感就训练出来了。

有了这个棋感模型,计算机下棋就简单了。在当前局面下,计算机可以采用蒙特卡洛方法随机设定几个落子点,根据这几个落子点评价一下局面,选择几个对自己有利的落子点(根据局面判定),然后假设几个对手的落子点,为对方做局面评估,选几个对对方有利的下子点,如此继续,这样计算机就可以看到后面的多步棋。

上图是例示了黑棋四个可能下子点,白棋根据黑棋情况的相应两个可能落子点。

那么采用深度学习方法后,计算机能算多少步呢?

  • Step:计算机能算的步数
  • T:落子限定时间
  • N1:第一步的可能落点
  • N2:第二步可能的落点
  • Nm:第m步的可能落点
  • CNN_time:采用CNN网络评估一个棋局需要的时间

举例来说,如果 CNN_time = 0.5 mS,  T = 30 S, 那总共可以计算 6 万次 CNN。我们可以采用如下策略:

  • N1:50,50个局面判断完成后,我们选择其中20个最好的落子点
  • N2:30,根据第一步优选的20个落子点,第二部每个点尝试30次,从30次里边选择最好的10个落子点
  • N3:20, 根据第二步的10个落子点,第三步每个点尝试20个落子点,从中优选10个落子点
  • N4:15,根据第三步的10个落子点,第四步每个点尝试15个落子点

那总的计算次数为:50+20*30+20*10*20+20*10*10*15=34650 次 CNN。也就是说在 CNN_TIME = 0.5 mS,每步限定时间为 30 S的情况下,计算机可以算出 4 步棋。

根据上面的知识,那我们现在回头看看吴博士的围棋智能:

  • 1)关于计算能力。吴博士采用苹果笔记本,而 ALPHAGO 采用 170 个 GPU 和 1200 个 CPU,这两者的计算能力可以初略认为差距是 1000  倍,那 1000 倍的计算能力对围棋智能意味着什么呢?如果下一步选择都是 10 个可能的话,1000 倍的计算力就相当于 ALPHAGO 可以比吴博士的围棋智能多算三步棋。但吴博士的程序跟 ALPHAGO 是差三步棋么?这个还不一定,因为 CNN 的计算时间除了跟计算机的性能相关外,还跟 CNN 的结构复杂程度,模型参数大大小有关。而由于 CNN 的结构和模型参数的大小,可能造成一个数量级的计算时间差异(在围棋局面评估结果差不多的情况下)。
  • 2)关于围棋直觉。这个主要来源于深度学习和 CNN 网络。但如果 ALPHAGO 跟吴博士的围棋智能比较,那就是模型结构和输入围棋局数和质量的差异了。那我们再想,如果一个做深度学习的资深工程师,给他海量的围棋数据,他是不是也可以很快造一个挑战围棋职业选手的神机?这个是可能的,但是要打败 ALPHAGO 或者吴博士的围棋神机,就不一定了。

到这里,相信大家对围棋智能应该有所认识了。围棋智能还是没有思维,他不是我们普通人想的那种智能,他是计算机,他会的只有计算和存储。但他又有智能表象,他会学习,他可以准确分析棋局。

今天就是 ALPHAGO 跟李世石的世纪大战了,我想根据上面的分析,对这个比赛预测一下:

  • 1)第一局至关重要,如果第一局李世石赢了,那后面几局 ALPHAGO 基本没有什么机会。因为在短短几天智能 ALPHAGO 很难大幅度调整它的计算能力,模型结构和模型参数。ALPHAGO 应该会准备很多版本,但这些版本跟第一局用的版本应该没有太大差别。ALPHAGO 当然知道第一局最重要,第一局使用的应该是最好的 ALPHAGO。不过这次 ALPHAGO 即便输了也没有关系,他很快可以继续提高计算能力,继续更大的海量数据训练,它可以在一个月内提高一个量级,但李世石一个月提高不了一个量级。因此计算机打败顶尖棋手就是这一两年的事情。
  • 2)如果第一局李世石输了,他通过第一局的较量,能摸到 ALPHAGO 的规律,做出调整,他能赢下后面的四局。我想有一个简单的调整办法。ALPHAGO 会对李世石的所有棋局做充分的学习,如果李世石不采用自己通常的走法,甚至不采用普通棋手惯常的走法,ALPHAGO 面对自己没有学习过的东西,会比较愚蠢的,这就是围棋智能的软肋。我想李世石作为围棋顶尖高手,他应该可以发现 ALPHAGO 更多的破绽。

我认为,吴韧做出的围棋人工智能,是深度学习的进步,他可以做到,别人也可以做到,这是方法学上的成功。

对于文章中的错误和不足之处,欢迎留言讨论。

版权声明:本文系深圳湾原创文章,转载请注明来自深圳湾,并标明网站地址 shenzhenware.com。转载、采访、投稿、团队报道联系公众号:shenzhenware
Uploads%2fusers%2favatar%2f1073132921%2fthumb 132
林峰 2016-03-09 08:03

写的还是蛮容易懂的

Uploads%2fusers%2favatar%2f338640627%2fthumb shining portrait squre

长篇纪实+技术剖析。即便是要观战 AlphaGo 和李世石的世纪大战,这篇文章也能够给你很多指引。

Uploads%2fusers%2favatar%2f1073131514%2fthumb avatar
李小波 2016-03-09 09:30

深度好文,深入浅出,点赞!

Uploads%2fusers%2favatar%2f1073138637%2fthumb 1
陈凯文 2016-03-09 10:26

这篇文章解释了「深度学习的胜利」,但不能证明异构是否「哗众取宠」。希望除了基础理论的解释,更多介绍一些异构本身在算法设计和训练程度。

Uploads%2fusers%2favatar%2f1073133000%2fthumb 132
杨作兴 2016-03-09 11:59

吴博士太太想公布算法细节,那是他的命根子。他们计划每两个礼拜找聂卫平棋院的小棋手做一次比赛,比赛过程会全程直播

A1
shooter 2017-09-01 14:25

mark

>>
Back to top btn