技术控必看,谷歌工程师首次揭秘AlphaGo的算法
最近,AlphaGo和李世石的围棋大战刷爆了朋友圈,之前的比赛AlphaGo首次击败人类围棋冠军,朋友圈都在转发人工智能的前景有多么乐观,其在未来发生的应用场景会非常多,机器代替人类的一天将在不久会出现。随着2016年3月13日李世石第一次取胜AlphaGo,朋友圈又引起了一片哗然,都是对人类充满了希望,感慨人类未来会越来越好,未来的世界还是人类主宰。AlphaGo的出现,无疑反应了谷歌的技术实力,研究水平之深。今天,我们采访曾经的谷歌中国第三位工程师,许丞,李开复的50大弟子之一,试图从一个谷歌人的角度谈谈AlphaGo与李世石的这场激战。
鼓励师
您之前在谷歌有从事过人工智能相关的工作吗?
许丞
老实说,其实没有。。。我在谷歌参与的项目主要有谷歌地图搜索,谷歌生活搜索以及谷歌光纤网络。我参与过使用机器学习的项目,比如条件随机场进行命名实体识别和Logistic Regression做点击概率预测,但是没有直接做跟Deep Learning等相关的项目。
有两个项目可能跟目前热得发紫的深度学习相关的吧: 在谷歌我们有一个去学习深度学习的codelab,工程师都可以去学习如何使用像DistBelief(第一代谷歌大脑项目)来进行实验研究。我研究过如何用DistBelief去完成MINST手写数字识别,我写的程序还进了后来的tutorial。之前的研究者如果要去做手写数字识别,需要自己先定义好各个features, 然后再训练模型。谷歌大脑系统完全不用写features,直接把原始手写数字标注好,直接让机器去寻找最好的features并生成模型。这个过程简直太奇妙了。
第二个项目是在参与谷歌光纤网络项目的时候,我们需要去用计算机视觉的方式去解决一个物体识别的问题。简单来说的话,就是从街景车的全景图里面,用谷歌大脑去识别是不是有电线杆子,听起来这个电线杆子没什么用。。。。嗯。。。在做光纤布线的时候还是有用的。街景图里面去识别物体已经用在了抹去车牌或者说隐私保护的很多场景下,经过对比测试之后,目前我知道的数字是谷歌大脑识别这些数字或者名字的能力已经超过了人眼。
鼓励师
AlphaGo为什么可以下围棋?之前深蓝击败卡斯帕罗夫的时候是用了什么原理?呃。。。计算机是怎么可以下棋的?
许丞
计算机下棋的一个基本原理就是在状态空间上进行搜索。。。。嗯,太专业了是吧?好吧,那我们用一个简单的方式来描述一下这个过程。
我们把围棋简化一下,简化成一个叫做九宫棋的棋类游戏。
这个棋就是个简化版的五子棋,规则就是谁能把3个棋子连一片,就算赢(这也太简单了吧?围棋比这个可复杂多了。。。嗯,所有的抽象模型都是由简单开始的)。
我们把每个棋的一个形态当做一个状态,把所有的可能性都作为它的子状态。那么久可以形成一个如下类似的一颗树,这颗树就叫做博弈树。
这样的一棵树基本上把自己接下来可能的步数,以及对手可能走的步数都模拟了一遍,这就是大家下棋的时候所说的能够往后看几步了。看得步数越多,显然赢的可能性就越大,因此就越厉害。
对于九宫棋(三子棋),所有的状态空间是一定的,所以其实是能够知道必胜的走法的。但是对于围棋或者象棋来说,每一次可能的步数都很多,这样每多看一步,就产生很多倍的新的状态空间,对于机器来说,可能就会内存不够或者时间不够了。
因此大家会定义一个用来评估当前局面的函数,叫做评估函数。比如拿九宫棋来说,可以有很多,比如那可以是目前已经连成2个子的个数,或者任然空着的行列对角线的个数等等。评估这个局面可以告诉计算机,目前我这一步的情况如何,是不是很好。
对于某些特别不好的局面,那么评估之后就会被剪掉,这叫做剪枝法。因为博弈树是一个下完一个,另外一个跟着下,因此剪枝的方法一般用的是α–β剪枝法(Alpha–beta pruning)
通过这颗搜索树,那么机器就知道如何下子跟走棋了。
鼓励师
这样就明白了。那么《自然》论文的AlphaGo的原理是什么样的呢?跟刚刚讲的一样吗?
许丞
其实所有的计算机下棋的程序抽象来看都是上面那个的过程。只是因为难度不一样,所以具体的算法复杂性也会有巨大的区别。
AlphaGo最厉害的地方是用人工神经网络来建模了"棋感"这一个完全无法用计算机语言来描述的概念。通过上面的学习我们可以知道,评估一个棋局的局面实际上可以用简单的函数来描述,也可以通过往后看几步来分析。这个评估函数建模了棋局的胜负概率,因此至关重要。人类经过训练之后,能够比较快速的去数目并判断棋盘的局势,但是机器显然很难(对于计算来说,数数显然是很快的,但是围棋的目数和局势显然不是单纯数一下数目)。
- 美博客称谷歌摩托移动交易可能成为一场灾难(08-16)
- 谷歌再加码投资可再生能源(10-10)
- 谷歌苹果在美手机市场排前两位(12-31)
- 谷歌收购摩托罗拉 国产手机厂商将继续受益(05-23)
- 未来Android平台可能走向半封闭(05-26)
- 苹果VS谷歌,谁是最后的赢家?(06-26)