雷锋网按:本文转自CCF官方公众号中国计算机学会,雷锋网已获内容授权。
5月23日AlphaGo2.0版本在人机围棋比赛中以1/4子的微弱优势战胜了柯洁,一方面继续彰显了人工智能的强大,但也让人们对AlphaGo和人工智能有了新的认识。先说出结论,再看分析。
1.在围棋这个项目上AlphaGo目前走在了人类的前面,但并没有完全攻克围棋这项运动。它只是通过深度学习找到了一个比人类认识更优的解,但不是最优解。最优解无法找到,即便用尽地球上所有的资源。从专业的角度来讲,就是用深度学习去逼近了一个强化学习中的价值判断函数,然后再跟蒙特卡洛搜索树结合的方法(具体详解可参看《郑宇:一张图解ALphaGo原理及弱点》,不再重复)。既然人工智能和人类都不能找到最优解,现在说哪一方已经完全彻底的失败还早。
2. 人类也是在进步的,我们也不要低估了人类后天的快速(小样本)学习能力,这点AlphaGo基于现在的学习方法还做不到。短期来看人获胜概率小,但长远来看(未来5-10年)人还有机会,因为人也有很强的学习能力,可以从少量跟AlphaGo的对弈的棋局中快速学习。而即便再给AlphaGo1亿副棋谱,再添加一万块GPU,如果还是基于现有的学习体系,它进步的速度也终将放缓,因为新增的棋谱和计算资源相对于2x10171这个搜索空间来说只是沧海一粟。我们对人脑的了解还远不如对围棋的认识,这里面还有很大的未知数。
3. 目前人类职业棋手跟AlphaGo的差距也就在一个贴目的水平,没有大家想象的那么大。其实这个贴目的差距(按中国标准7目半),在职业棋手看来,已经是非常大的差距了。很多职业高手,进入官子阶段后发现自己还落后对方7-8目,就会主动投子认输了。很多通过数子来决定胜负的比赛,输赢往往都在1-2目之间(比如柯洁就输给AlphaGo半目)。否则会被其他专业棋手笑话,自己落后那么多都不知道,点空能力太弱了。
要能真正客观、准确的看待这个问题急需要较强的人工智能专业知识,也需要一定的围棋功底。下面先纠正网上认知的一些误区:
误区一:AlphaGo可以让人类顶尖棋手4个子,AlphaGo2.0可以让上一个版本4-5个子。
要消除这个误解,首先要跟大家普及一下围棋知识:在围棋里“让对方两个子”和“赢对方2个子”有着天壤之别。这点对于下围棋的人不用多说,但我今天才意识到,很多吃瓜群众一直以为这就是一回事。难怪网上会流传以上的错误言论。
让对方两个子: 在围棋里让2子是说让一方先在棋盘上放上2个棋子(棋子只能放在星位),然后对方才开始走。这两个子在对弈之初的价值巨大,对于专业棋手来讲,每个棋子价值至少在10目以上(这是最保守估计了)。让两子相当于至少先让出去对方20多目的地盘。由于棋盘是有限的,如果不能在后面的比赛中,在有限的空间里赢回这20多目,那就是让子失败了。而且让子数越多,被让方获得的价值不单是线性增长的,因为子力之间会形成配合,获取更大的利益。比如说,让四子,其价值就可能远不止40目了。
赢对方2个子:是指双方下完后,赢的一方比输的一方多出2个子。如果按照吃住对方一个子算两目的方法来算,那2个子只相当于4目。AlphaGo赢了柯洁1/4子,就相当于半目棋子而已。
所以“让对方两个子”和“赢对方2个子”不可同年而语。如果真的有围棋之神存在(既他一定能找到最优解,我们人是没有希望下过他的),一般顶尖专业棋手认为他们跟这个神的差距在让2-3子之间。由于AlphaGo可以被证明不能保证找到最优解,所以他离神还有一定的距离。因此,说AlphaGo可以让人类顶尖棋手4个子,这简直就是天方夜谈。
误区二:AlphaGo也会下出一些明显不好的招数,是因为他自我判断形式占优,而放松了自身的要求。
AlphaGo的搜索策略就是优先对获胜概率比较大的分支进行更多的深度搜索,这个策略在任何时候都不会改变,也不能改变。他不会觉得自己优势了就下出缓手。下得不好的时候是因为其价值判断本来就是一个近似,而且搜索空间也不能穷尽,得不到最优解,因此,有时估计还不错的棋,其实不一定是真的最好的下法,AlphaGo出现这种不稳定状况是正常的。这也是人类善存的希望所在。当然人类也有自身的弱点,如疲劳、情绪波动等,人也会判断失误。而且棋局很长,有些之前不太好的棋,经过后面的变化(包括不是预料中的变化)有可能会变成好棋。所以,不是所有的错误,都会直接影响到比赛的结果。而且现在大家似乎有点怕AlphaGo了,即便是AlphaGo下出一招不好的棋,大家更多的是怀疑自己的水平(是不是我们没看懂啊?),而选择相信AlphaGo的“深谋远虑“。
误区三:AlphaGo可以不断自学习,从新的棋局里获取经验,快速提升自己。
AlphaGo的系统由于参数非常多,需要大量的数据来训练,新增的几幅棋谱对提高它的棋力起不到任何作用。而且AlphaGo在做参数调整时是针对一大批数据的整体优化,也必须对很多棋谱做批量处理,训练时间非常长,不可能在很短时间内大幅提升自身的水平。即便是同一组训练棋谱,参数调整方法不一样也会训练出棋力水平差异较大的系统。其实AlphaGo是通过自我对弈来生成很多棋谱,然后利用棋谱中的(两个连续的)盘面跟最后的胜负对应关系训练出价值网络来。这里只是借用了一下强化学习的框架来训练深度神经网络的参数而已,主要贡献还是深度学习的近似能力带来的(解决了传统强化学习针对复杂环境和动作状态无法求解的难题)。因此,AlphaGo并没有大家想象的那种自我博弈就能自己不断进步的能力。
误区四:AlphaGo会故意放水输掉一局比赛。
这个没有可能。要想输还不能输的那么难看和明显,是一件非常难办的事情,可能比赢棋还要难。在模型训练好之后,AlphaGo能够临时改动的只有在搜索部分投入的资源多少(搜索多大的空间)可以改动。缩减的太小,几乎不会有太大变化,但如果缩减太多,就会下出一些非常低级的棋来。这点从技术角度来讲很难把握。
误区五:计算机的计算能力一定比人强,所以不要去跟AlphaGo比计算,应该把局面简单化,避免复杂的战斗。
AlphaGo依靠的是一种基于树的搜索算法,遇到复杂局面搜索空间变大,对未来输赢的价值判断也会变难。因此,人算不过来的复杂局面,对AlphaGo来说也很困难。如果局面太简单,机器可以非常好的计算出比较优的解,人类棋手更加没有希望。因此,把局面弄复杂,人类棋手才有希望获胜,虽然这个对人类也提出了更大的挑战。
总结
基于人类目前对围棋的认识和理解,现阶段仍然会输给人工智能。我并不是觉得柯洁有希望能够赢得后面的比赛,但人类也在进步,通过跟AlphaGo的对弈,人类也在重新认识围棋。只要人类的思想和文明在不断进步,人就有可能在未来5-10年里通过不断的学习赶上当前的AlphaGo。当然,AlphaGo也会进步,但它还不是围棋之神,也没有攻克围棋这个难题。如果现有的学习方法没有全面的革新,其进步的速度也会慢慢放缓。基于此考虑,人类还会有机会。当人们对围棋有了更深入的了解之后,又会设计出更好的人工智能算法。两者其实并不矛盾,相辅相成,互相促进,不管谁输谁赢都是人类文明进步的体现。人类的智能也将始终走在机器的前面,而不会被机器取代。