【星际随笔之九】曲率已驱动了头发——深度分析谷歌AlphaGo击败职业棋手
作者:兴业计算机 袁煜明/马斯劼
这篇是我们自开设星际随笔以来写得最长的一篇。我们也花了不少力气。包括把那5盘棋各打了两遍的谱,包括从Nature官网上把那篇谷歌的报告花了200元下载下来研究它的算法(后来发现谷歌网站上可以免费下载的),包括也查阅了很多其他文献资料。
为了方便大家阅读,我们先列一下我们这篇随笔主要讲了哪些问题:
1. 计算机战胜欧洲围棋冠军到底为啥好像很牛逼?
2. 从棋谱看,到底AlphaGo什么水平?樊麾有没有放水?
3. AlphaGo的技术原理是什么?这次的创新在哪里?
4. 深度学习相比神经网络有啥差别?是不是旧瓶装新酒?
5. 脑洞大开一下,这么牛逼的深度学习的技术,能用来干嘛?什么样的应用是无危害的?
大致讲了这5个问题,当然过程中东拉西扯也讲了些别的。以下是正文
1月28日,Google DeepMind团队在最新一期《Nature》上发表论文称,其名为AlphaGo(阿尔法围棋)的人工智能系统,在没有任何让子的情况下以5比0完胜欧洲围棋冠军、职业围棋二段樊麾。这条消息引起了各方的高度关注。
我们的确挺震惊的,打个拔高一点的比方,就像《三体》3里,维德给程心展示,用曲率驱动把一根头发吹动了,程心当时还很木然(就像现在很多人都还不以为然,不就赢了个职业二段了),但维德和他的小伙伴们非常兴奋,曲率真的可以驱动啊!以后就可以驱动飞船实现光速飞行啊!(当然,从点科技树的角度说,光速飞行比人工智能更牛逼了)
为什么我们给了这么高的评价呢?有些人可能会不以为然,计算机不是很多年以前就战胜国际象棋的世界冠军了么?这不就是又搞定了一种棋么。我们先来大概的解释一下。
围棋和国际象棋有很大的不同,这导致了计算机的智能程度有很大的差别:
1. 国际象棋可以一定程度暴力遍历,围棋不行。
国际象棋就64格,最大只有2^155种局面,称为香农数,大致是10^47。虽然没法全部去遍历(也没必要),但实际只要把开局库和残局库多输一些进去,结合一些中盘的策略选择和部分遍历就很牛了。但围棋最大有3^361 种局面,大致的体量是10^170,而已经观测到的宇宙中,原子的数量才10^80。(围棋压根没有残局库这个概念,千古无同局)。所以围棋的AI肯定没法用遍历的方法,只能让它学人去思考。
2. 国际象棋目标是清晰的,围棋是模糊的。
国际象棋的最终目标很清晰,就是吃掉对方的王,而过程中的阶段性目标也很简单,吃个车很好,吃个马也不错;但围棋不是,围棋不是以吃掉对方几个子,也不是围了多大一个空。围棋在对弈过程中,有厚薄、味道、形状等各种概念,很难量化的判断,而是很模糊的。
模糊判断一直是人类相对计算机的优越感,要蛮算八位数的乘除法,人完全没法和计算机比。但要判断些模糊的指标,那计算机就一筹莫展了。
所以,1997年深蓝就战胜了国际象棋冠军,但围棋的AI的顶尖水平仍然很差,下个普通的业余棋手也常下不过。
早在1986年,台湾应昌期老先生就悬赏了140万美元,奖励给能战胜职业棋手的围棋程序(那会的140万啊,比这次谷歌开给AlphaGo和李世石比赛开出的100万美元值钱多了)。可是直到2000年悬赏截止,围棋程序的水平依然非常臭。
2015年11月,电脑程序世界冠军“石子旋风”和中国著名棋手连笑下,一直被打到让6子才赢了一盘,感觉离战胜人类还很遥远(其实那时候AlphaGo已经和樊麾下完5盘了,为了在Nature发论文当时尚未公开)。但这次AlphaGo横空出世,展现出了巨大的飞跃进步。
具体的说,到底AlphaGo什么样的水平呢?众说纷纭,有说它无懈可击的,也有说樊麾放水的。耳听为虚,作为一名曾经的低水平业余爱好者,我下载了一个围棋打谱软件(很久很久没打谱了,新买的电脑原本就没装这个),把那5盘棋各打了两遍的谱。
我们看下来AlphaGo大致4个特点:
1. 招法很像人,而不是按部就班的。
这点很多人看了棋谱后都是这么个感受。以前的AI下围棋经常会神经质,下得好好的,突然某一步就下得很奇怪,一看就知道是电脑。但AlphaGo一直很有章法,无论是占地、对杀、打入、侵消、弃子、收官,都有模有样,如果不看说明,根本看不出哪一方是电脑。
这里再补充一个细节,在看第二局时,我由于没看说明,看开局真的以为AlphaGo是白棋。因为那局一开始就下了个大雪崩的定式(围棋里一个比较复杂的定式),走下来感觉是黑棋吃亏了。我当时以为肯定是电脑背了定式,而樊麾记不清楚了就被欺负了,结果居然是反的。做围棋AI,最简单直接的想法肯定是多背点开局的定式,但AlphaGo肯定没有这么做。谷歌团队说没有让AlphaGo去学习很多围棋知识,看了棋谱我相信是真的。
2. 局部作战能力很强失误不多
5盘棋下来,除了第一句是铺地砖式的按部就班,后面4盘虽然都没有大规模的对杀,但每盘都有些小范围的战斗。从结果来看都是樊麾脆败。每每樊麾下出一些无理手、随手,马上就被电脑抓住机会扩大战果。而电脑的失误很少(我这水平能发现的很少,或者说被樊麾抓住机会的很少),除了少数像刚才说到的第2局大雪崩定式处理时有低级失误(我感觉应该是27扳和31点下得不对)。
3. 喜欢实地,追求简明
总的来说,AlphaGo比较喜欢实地,很少去取势。5盘棋里,第2,、第4盘它是执黑的,但也就第4盘下了个三连星,取了点外势,也不是太想围空,下着下着就又去四处打入赚实地了。其他几局就更明显了。当然,这个也没什么不对。很多职业高手也都喜欢实地,甚至是酷爱实地。
AlphaGo还有个很重要的特点就是追求简明。除了喜欢取实地外,其他时候也都经常会去主动定型,尽可能地让局面明晰。这和高手的特点不太一样,一般来说,高手都不喜欢定型,这样留有味道,未来有多种可能性(尤其它接下来的对手李世石特别喜欢把局面复杂化,乱中取胜)。AlphaGo这么一定要定型,会失去一些机会,有时会有点缓。但这个也不算很大的弱点,估计这个和算法有关,它把局面定型了才能判断到底哪个局面更优。
4. 还会打劫
看有个采访,问著名职业棋手李喆,如果是他,如何对付AlphaGo。他说觉得有两个突破口,一个是布局,一个是打劫。布局我觉得的确是,5盘里AlphaGo没有表现出任何布局的才能来,但布局并不关键,当年李昌镐布局也很平庸,照样靠官子赢回来。
而对于打劫,很多认为AI无法战胜人类的观点,很重要的依据就是围棋有个很复杂的事情就是经常会打劫,AI肯定会晕。但这次和樊麾对局的第5局是出现了打劫的。过程中AlphaGo找劫、应劫都有模有样,来回了十几手,最后是樊麾消劫形成转换。过程中应对没有问题。所以,我感觉打劫并不会成为AlphaGo的软肋。
综合来说,AlphaGo的实力已经很强了。专业人士有的评价是强业余,有的评价是职业初段,或接近职业。这个其实我觉得并不重要,重要的是,计算机已经在模仿人类一样去思考,已经在模糊判断决策方面做得比很多人好了——虽然樊麾的水平并不算高,这5盘棋里有很多低级失误,但说实话,90%的爱好者,下一辈子棋,也赶不上樊麾的水平(像我这样的水平,仔细打谱摆棋能发现很多低级失误,但真要自己去下失误会更多)。AI不就是用来替代人工么?所以,AlphaGo能战胜90%的人类,就已经足够了。
马上3月份,AlphaGo就要挑战人类的世界围棋冠军李世石了。网上预测谁胜谁负争得不可开交。但其实我觉得结果已经不重要(作为一名曾经的围棋爱好者,我真心的希望李世石能赢,那么多年从来没盼过李世石赢啊,第一次盼他啊)。这个比赛的胜负,营销的意义更大。对于一个AI算法来说,已经实现了里程碑式的进步了。
回到开头举的《三体》3的例子,曲率已经能驱动一根头发了,接下来什么时候能驱动一本书,一张桌子,并没有那么重要。
那么AlphaGo到底有什么高深的算法,让它的水平出现了质的飞跃?接下来我们解读一下自己花200元买的谷歌那篇发在Nature的论文,说说我们的理解。以下部分稍微有点生涩,不喜欢研究算法的朋友可以跳过。
从算法原理来讲,在象棋、围棋这类大型博弈游戏中,存在着b^d个可能行动序列,其中b和d分别是某一状态s下的博弈宽度和深度。从宽度来看,围棋每一状态的可选步法要远大于象棋。从深度来看,象棋的胜负点是清晰的,于是可以从某一状态截取子集,深度可以缩减。但对于情况更加复杂,难以判断胜负点的围棋来讲,这一位置选择的方法就行不通了。此前最为先进的围棋程序都采用蒙特卡洛树搜索算法(MCTS),该算法使用蒙特卡洛算法的模拟结果来估算一个搜索树中每一个状态的值,随着模拟次数增加,相关的值也会变得越来越精确。通过选择值更高的子树,选择策略也会不断进化。以下是Google DeepMind的示意图,上图为计算机眼中的国际象棋落子思路,下图为围棋落子思路。
在此次对战中,AlphaGo所需要考虑的位置更少了,因此计算次数甚至远少于1997年的深蓝(数千倍),可以说AlphaGo的“思考”方式更接近人类。这是深度学习、蒙特卡洛等多种算法结合创新所带来的,从“计算”到“智能”的超越。
具体来讲,AlphaGo采用了深度神经网络和树搜索的结合方案。
1)采用类似深度卷积网络(使用多层神经元,安排在交叠的区块中来构建抽象和本地化的图片)的架构,用19*19的图像来表现棋盘,使用卷积层来构建位置表示,从而减少搜索树的有效深度和宽度。
2)使用Value Networks(价值网络)来评估位置,使用Policy Network(策略网络)来选择步法。如下图。
3)在训练过程中,首先使用人类棋手的棋谱来训练可监督学习策略网络pσ,以及快速决策网络pπ;之后训练强化学习策略网络RL pρ,通过自我对抗模拟(即自己和自己下棋,左右互搏)来改善pσ,将策略调整至赢棋而非预测准确率最大化;最后训练价值网络vθ,用来预测pρ所得到的策略中哪种是最佳策略。
因此,在AlphaGo中,蒙特卡洛树搜索算法结合了经过训练的策略网络和价值网络,具备了不断学习、智能判断的能力,是一种算法的创新应用。当然,这一切的基础仍然存在于蒙特卡洛树算法、神经网络等现有技术的基础之上,AlphaGo的能力一部分是建立在无数人类专家的棋谱之上的,但它也通过自己和自己对弈的左右互博来提高了自己,它自己和自己下了2000万局了。
看完整个算法,可能有些人会觉得这个算法没什么啊。不就是机器学习么?可能有些算法的优化,相比过去并没有很大的创新啊?
是的,我个人觉得。谷歌这篇论文,如果不是因为列了一下赢了欧洲冠军5盘的实验成果,别说作为Nature的封面论文了,发在Nature上都有困难,或者说作为一篇SCI也是有点水的那种。(当然,不排除谷歌隐藏了一些技术细节上的独门秘笈,但至少在论文里看不出)。
那么大家就会想, 既然谷歌在算法上并无大的创新,为何在战绩上全面碾压了现有程序?
按论文介绍,AlphaGo对阵几个全球顶尖的围棋程序,Crazy Stone,Zen和Pachi,胜率分别达到77%、86%和99%。
从采访Facebook智能围棋Darkforest负责人田渊栋博士的来看,他分析,和Facebook团队比起来,主要是因为谷歌起步早,投入大,专家人数也比他们多得多,像一作David Silver和二作Aja Huang都长期从事计算机围棋的研究工作。而在谷歌和Facebook之前,尚无顶尖的IT公司从事这方面的研究。
多说一句,往后,Facebook也是围棋AI领域的有力竞争者。就在谷歌在Nature发论文那天,Facebook的CEO马克·扎克伯格就在其Facebook主页发帖,正在紧锣密鼓地研究围棋AI。小扎在主页上还写到,智能围棋项目负责人田渊栋博士,办公桌就在他桌子边上20英尺(小札难道还没有独立办公室么),他喜欢让AI团队离他近一点。小札对这个项目的重视可见一斑。(从行文看,小札当时应该还没看到Nature那篇论文,看到之后估计会更着急)
如果懂一些技术和算法的朋友,再延伸一点想,还会有个疑问。神经网络是80年代就已经提出来的算法,当时曾经风靡一时,但后来衰败得都快被遗弃了。到2006年时,Hinton等人旧瓶装新酒,提出了个深度学习的概念,这个领域又重新热起来了,各种研究成果不断涌现。那么,现在的深度学习,和80年代的神经网络比,有什么本质区别吗?不就是个多层神经网络么?
我们大概了解梳理了下情况,当年神经网络衰败,很重要的原因是训练时间长,学习缓慢,效率低下,完全无法商用。而06年的深度学习,一个很重要的原因是计算机性能的大幅提高;当然,算法机制方面也有很大的改进。深度学习和普通的多层人工神经网络的区别在于,前者让网络每一层都进行无监督学习,让网络每一层都自己提炼特征。很多模糊信息的抽象归纳,人类都还做不到,所以没法直接给神经网络直接明晰的输入输出,但计算机通过无监督学习来提炼特征可以进行抽象。(80年代的人可能也有过这种想法,但当时的硬件条件实现不了,所以没被重视)。
用本文开头那个例子来说,这次AlphaGo击败了樊麾,就像是曲率驱动了那根头发;那么Hinton等人提出深度学习,就像是AA和程心从云天明的童话里悟出了曲率驱动。
最后一个问题,这么牛逼的人工智能技术,能用来干嘛呢?
谷歌说到底是个商业机构,虽然那些研究院的KPI是发多少Nature,Science,但董事会看的还是最终有多少商业产出。
简单的说,以前的计算机只能用来做精确的计算,但现在能够对模糊判断做出最佳决策的话,计算机基本能做各种人能做的事情了。相比人类来说,计算机唯一不具备的是情感,但于工作而言,没有情感不是坏事啊。(有人会说计算机也没有创造力,但其实不然,基于蒙特卡洛算法和无监督学习,计算机也能进行创造,创造力有可能更强,只是它自己不知道自己是在做创造)
以下我们来脑洞大开一下。在大开之前,我们先界定一个概念。无危害人工智能。
虽然计算机的智能程度接下来可能会变得很高,但毕竟有各种可能导致计算机出现失误,或是未能理解人类的实际情况。比较好的应用场景是,即使计算机有失误,也不会有太大的负面影响。所以,可以让计算机去帮着侦查寻找线索,但不能让计算机去法庭审判。
所以,现有的比较热门的应用领域里,也都是尽可能的先推进无危害人工智能。比如谷歌不亦乐乎的无人驾驶,也会是很久以后的事情,最先启动的是智能辅助驾驶;比如人脸识别,央行出台的文件也是将其作为辅助身份识别手段,而非充分的识别手段;比如自然语言处理,可以用服务机器人来一定程度替代客服,但不能用来写论文或是商业策划。
当然,这些应用还是太传统,我们来进一步的脑洞大开一下:
产品设计/配方研发。最基本的,比如设计个工业产品的外形,设计个服装、首饰的款式。计算机在经过大量样本训练培养了良好的审美观后,就可以设计出优雅、时尚的造型款式。进一步的,比如设计饮料、食物、香水、烟草、化学品的配方,计算机都有可能独辟蹊径。人类到现在也没弄明白中医的阴阳五行是啥原理,也很难在古人的基础上改进配方,但也许未来计算机可以。
情景预测/危机预警。诸如天气预报、交通状况等都可以预测,也包括危机预警,无论机器设备、车辆、人体健康状况、恐怖分子活动等,出现问题之前都会有各种征兆,计算机系统都可能提前预警。当然,所有深度学习的最大问题是足够多的数据样本,而这类预测预警的有效数据收集会相对麻烦一点。
大数据分析。大数据是现在已经被用烂的一个词。很多所谓大数据的逻辑都是非常简单直接的,无非是你买一次奶粉就给你推荐纸尿片。或者逼格高一点是用户画像,也是人工设了一些简单的逻辑规则,比如用iphone的收入高;家庭住址是内环小区的收入高;经常上京东的为男,经常上聚美优品的为女等等。(这里不是说用户画像不对,而是现阶段很多所谓的用户画像还太简陋)。但我相信,一个能够在围棋里计算上百种变化,识破职业棋手各种欺着与骗招的程序,可以把数据分析做得更加智能,能从蛛丝马迹里判断出网络骗子,能把各种数据融会贯通,分析出也许上京东的是公司女秘书,上聚美优品的其实是热恋中的男孩。
写作与创作。现在有些软件也能写个小诗啊啥的,(虽然诗风都很飘忽。但随着深度学习能力的样本扩大,自然语言处理能力的提高,未来计算机写点应用文(诸如通知、海报、纪要、总结、请帖、条据等等)应该都没问题,创作出一些格调优美的散文、歌曲也不排除。人类的文学家也许只能靠写科幻、玄幻类小说了。
战争。这个不多说了……
金融。量化交易在国外已经相当盛行,但也未能完全替代基金经理和研究员,但不排除未来有一天。所谓看图富三代,计算机的看图能力肯定要远强于人。人类投资交易最大的敌人是贪婪和恐惧,计算机都不会。个股可能还有些基本面需要人来调研分析,大势的研判就真的可能不需要了。
过去的计算机,把我们从繁复枯燥的计算里解放出来;可以投入到更有创造性、更需要模糊判断的领域;而人工智能未来真的成熟后,我们还能干嘛呢……
近年来,比尔盖茨、霍金、马斯克等人都极力反对人工智能。我一直对此不以为然,感觉这三人主业都不是搞这个的,非要手伸这么长对别的领域指手画脚,要么是杞人忧天,要么是哗众取宠。事实上他们也得到了很多负面的反馈,美国智囊团把他们三个提名为“勒德分子奖”(反对科技进步的负面奖)。但现在想来,也有一种可能,是他们知道的比我们更多,或是想的要更多……