-
陈经技术分析:谷歌围棋算法存在巨大缺陷,达不到人类最高水平
关键字: 围棋人工智能谷歌围棋程序围棋程序战胜人类AlphaGo李世石樊麾策略网络价值网络蒙特卡洛AlphaGo还不如人类高手的地方
分析AlphaGo的弈棋算法,可以相信,AlphaGo到了一定的局面以后就是必胜,因为它不会在此后犯错。实际之前的Zen、CrazyStone也是这样,到了后盘必胜局面,就靠MCTS,它们都能知道必胜了。这时电脑会下得特别猥琐,“赢棋不闹事”,胜多胜少一样。而人类高手后半盘胜局被翻盘很常见,官子没时间算清楚,稳定性比电脑差得多。
樊麾对AlphaGo的第二局就有这样一个局面。AlphaGo执黑,由于在右下角大占便宜,这时已经必胜了。黑下135,放白136活(如破上面的眼,白借O16的连出再做出一眼)。中韩职业高手刘星七段和金明完四段都指出,黑135右移一路,下在O18,是能够杀死白棋的。
但是AlphaGo为什么不下?我们可以试着推理一下,如果黑强杀,接下来局面会是这样:
黑135下三角一着强杀,白提一子,黑137退。白138先手切断右上黑棋,虽然是靠劫。接下来白有ABC甚至更多“捣乱”的方法,但职业棋手一眼就能看出来,白的捣乱必然失败,因为白角也没几口气,还要撑劫,黑肯定能对付。但是AlphaGo作不出这种推理!
刘星说,AlphaGo肯定知道白是死的,但选择了稳当的下法。笔者认为恐怕不是这样。AlphaGo的搜索框架里,并不一定能断定白是死的,因为需要的手数不少,打劫虽然更不利于白,但增加了推理手数。它并没有一个搜索任务叫“杀死白右上角”。如果硬要去这么搜索是做得到的,但是如果它这样去想问题,棋力反而会下降,因为围棋很复杂,杀棋付出代价太多会败。AlphaGo推理时会发现,放活白,100%胜,杀白,有风险(虽然实际没风险,但它很可能没去算)。所以AlphaGo集中搜索放活的必胜下法,最后选择是放活。如果局面是不杀不胜,那AlphaGo就会发现其它招不行早早放弃,就会去集中算杀棋的那些招。
也就是说,一些对于人类非常明显的死活,对AlphaGo反而是麻烦的。人类高手在这个局面很可能就去吃棋让对手早点认输,因为没有任何风险。AlphaGo就不行,它没有分配足够的计算资源去算这个死活,而是去算它认为胜率更高的分支,这些分支要消耗非常多的MCTS局面。人类一眼能看出来的死活,AlphaGo却需要“足够”的计算资源才能算出来。有时因为局面的焦点问题,它还真就分配不出来。只有其它分支不行,被价值网络与MCTS早早砍掉,这块棋的死活才会获得足够资源算个通透。
这不会影响AlphaGo的胜利,但已经可以看出,它的思维其实和人不一样。它并不是一定能算清的,只有你逼得它没办法了,它才会去算清。但是人就有优势了,人看一眼就知道结果,AlphaGo以及基于MCTS的这些程序,都得去算不少步才知道。程序并不像人一样,对于棋块能给出结论。人给出结论需要计算,但是算一次就行了,然后就一直引用那个结论,直到条件变化。但是程序得去算,算到死了才是死,有一些局面计算甚至是活的,它只是概率性地在那选择,并没有给出确定性的结论。
再看一个局面,第三局樊麾执黑对AlphaGo。金明完四段指出白60扳,62打,都是走在黑空里的损着。还不只是亏空,本来白不走,右中的白棋粘在S7位,是有一个眼的,现在没有眼了,对中间的攻防战影响不小。
这是AlphaGo确定无疑的亏损错着。但是证明这个结论,需要黑能够对付白Q3长捣乱,要杀掉白右下。职业棋手也要花一点时间,但不难。结论是,因为中下的黑子够厚,所以没有棋。要是没有H4J4这两个黑子,就有棋了。这里涉及到的手数和分支是不少的,虽然结论是明确的。下面是一个白捣乱失败的参考图。
对于AlphaGo来说,这个局面就很麻烦了。如果逼得它不得不做活,它会用MCTS一直模拟下去,最后认为还是死。但现在局面还很空旷,局面选点很多,它并不知道去开一个“任务”算右下角的死活。
在很多高手对局里,类似这个角的局面就是有棋的,甚至没有棋,高手也会下类似60这样的棋“留余味”,例子很多。所以AlphaGo的策略网络会给出60这个选点。但是高手会迅速否定掉60,因为做不活,而且会损右中白棋的眼。
AlphaGo不会有“损眼”这种概念,它得模拟到很多步以后,才能知道右中的后手眼很关键。60提出来以后,MCTS救不了它,因为手数和分支太多。价值网络也救不了它,因为这里死了,白也只是吃了亏,并不是明显败局。价值网络背后的3000万局里,60及其后续捣乱手段可能出现过不少胜局,会给60这招一个好分。
这里我们能看出来AlphaGo的巨大不足了,它对于围棋中的很多“常识”其实是没有概念的,例如“后手眼”、“先手眼”,“厚薄”。有一定水平的人类棋手都明白围棋概念很多,开发者根本就没有准备去建立这些概念,而是自己想了一个决策过程。表面上看AlphaGo和人类高手一样先选点,再推理验算,但这只是表面的相似,内在机理是完全不同的。
AlphaGo的策略网络可能和人类最高手没有水平差别,甚至更厉害都可能,因为可以考虑更多选择。但是接下来的价值网络和MCTS验算的区别就大了。人类高手是进行复杂的概念推理,大多数情况下可以把“棋理”讲清楚,为什么这么选择,几个变化图就够了,高手们就取得了一致。但AlphaGo是不行的,它只能死算。在封闭局面,死算表现是很稳定,超过人类高手。但是在前半盘的开放局面,它不知道去算什么,其实也是东一下西一下没有逻辑地在那撞运气地推理。
由于围棋的复杂性,它增多推理的局面数并不能带来多高的棋力提升。Distributed AlphaGo(1202个CPU,176个GPU)的计算能力是“单机版”AlphaGo(48个CPU,8个GPU)的很多倍,但互下只有78%的胜率。
我们可以得出一个重要结论:
在早期的开放局面或者中间复杂局面中,AlphaGo的算法有时会走出明显吃小亏的错招,如果“思考”时需要较多的手数与搜索分支,就可能超过它的搜索能力。而人类高手能看出来程序的错误,有能力避免这类错,因为会进行高级的概念推理。这是人类高手的巨大优势。
为什么AlphaGo的这个弱点表现得并不明显?这是因为开发者用各种办法进行了“掩盖”,而且对手必须很强才行。这个弱点只对高手才存在,甚至象樊麾这样的职业二段都无关紧要。这局樊麾根本没利用白棋损了一眼这个错误,自己先在中间行棋过分被抓住。人类对手面对的各种考验更多,局部出了错被AlphaGo一通死算抓住就锁定败局完蛋。人类对手需要自己先稳住,不能出“不可挽回”的错着。就算是顶尖职业高手也不一定做得到,之所以出了错在职业圈里胜率还可以,是因为对手又送回来了。
AlphaGo开发者没有在程序中提出围棋常识概念,甚至所有开发者都不是高手(只有第二作者Aja Huang是弈城8d,高手让三四子都可能),很多高深的棋理不明白。但是他们用深度神经网络的办法,隐性地在多层神经网络中实现了很多围棋概念。为什么一个13层的神经网络,几百万节点系数相乘相加,就能预测高手在19*19的棋盘上的行为?通过训练,这些神经网其实已经隐含了很多概念,一层层往下推。所以它下的很像人,确实和人的神经系统类似。
机器用多层神经网络识别图片的能力,甚至超过了人。但在围棋上,这其实是一种“掩盖”。人识别图片时是没太多概念的,直接看出结果,机器也这样。但在下棋时,其实不是在识别棋局,还是有明确的建立在“常识”基础上的概念,越是高手概念越多,而且说得清,能教给学生,是一个知识系统。
AlphaGo的策略网络和价值网络,那些神经网络各层里,是些什么“概念”没人说得清,也不好控制。DeepMind小组其实也不想去搞清楚,就是暴力堆数据,信奉大数据暴力破解。
但围棋是很精微复杂的。某种概念,可能用几百个棋局能说明清楚。但是一大堆概念混在一起,有些概念还没有明确结论,怎么训练?比如前面的“后手眼”概念,人一解释很清楚,DeepMind的人想去改进程序让AlphaGo减少这类失误,就很麻烦。可能要去堆一大堆这类棋局进行训练。先不说能不能找到足够的棋局,在3000万个棋局里,加进一些棋局进行训练会产生什么影响,就很难控制。
AlphaGo的策略网络、价值网络、MCTS三大招数确实很强大,但也存在很不好解决的内在矛盾,就是没有概念推理的能力,很简单的都做不到。
-
本文仅代表作者个人观点。
- 责任编辑:陈轩甫
-
首次超过燃油车!我国新能源乘用车渗透率破50% 评论 175马斯克公开反对禁止TikTok 评论 168伊朗外长否认以空袭:除非遭重大袭击,否则不予回应 评论 285重庆通报“燃气费异常”:燃气集团党委书记被免职 评论 826“伊以都在降调”,国对国直接打击结束? 评论 172最新闻 Hot
-
伊朗外长否认以空袭:除非遭重大袭击,否则不予回应
-
特朗普“封口费”案法庭外,男子自焚
-
“美国在中东再怎么牵扯精力,不能忘了中国才是头等大事”
-
马斯克公开反对禁止TikTok
-
“伊以都在降调”,国对国直接打击结束?
-
美方挑事:中国做出贡献,威胁全欧洲
-
印度大选开锣,莫迪稳赢了?
-
俄气真香?欧盟机构警告:一时断不了
-
“德国车是世界上最好的,不必害怕中国,但…”
-
抛弃自家兄弟,肯尼迪家族15人支持拜登
-
“拜登考虑再援以10亿美元武器”
-
日教材称“殖民推动韩国近代化”,韩外交部召见日大使抗议
-
重庆通报“燃气费异常”:燃气集团党委书记被免职
-
G7竟威胁中国:跟俄罗斯走近,与西方就远
-
以色列“有限复仇”:选在了伊朗核计划中心
-
5.3%,一季度“开门红”能转化为“全年红”吗?
-