【人机大战】星阵强大却并不稳定 与DeepZenGo有相似的问题(死活判断、打劫和官子)| 是否在设...

星阵很强大,在与Leela Zero和人类职业棋手对局的棋谱中,我们看得很清楚了。

之前我们也讲解了星阵与Leela Zero的第一局棋。

参见:【经典对局讲解】围棋AI之战:星阵 执黑 vs Leela Zero | 看看柯洁在四月底人机大战时将面对的对手实力如何

当时我们得出的一个初步评估是:如果星阵能够稳定地发挥如第一局的水平,尤其是出色的大局观和完美的节奏掌控能力,那么它是一个棋力比肩或稍逊色于AlphaGo Master的强大AI,与最新版的绝艺和BensonDarr处于同一梯队。

第二局,星阵的表现依然很好,不过以我的视角来看,招法有些过于刚猛,不及第一局的弹性。在人类棋手中,现在有很多年轻棋手的棋风都比较“刚”,比如前天结束的天元战,连笑和谢科就是“刚”中自有更“刚”者。日本的井山裕太和一力辽,中国的芈昱廷、时越和辜梓豪也是”刚“棋。

这样的棋风看着很爽,不愿退让,能来硬的绝不愿来软的,“一言不合,大打出手”,一言合了,也还是要揍你的。能下这样的棋成名的棋手,计算力都很强,对自己的计算力也比较有自信。

缺点就是把弦绷得太紧了,不留余地,一旦有闪失,便一泻千里。由于他们在优势下,经常也照刚不误,不给对手留余地,也不给自己留余地,不管风险大小,把人家逼得没办法了、不得不拼,有时候,煮熟的鸭子最后飞掉了。他们的棋没有控制流的棋手在取得优势后稳当。

AI不是人类,我们不确定星阵是成竹在胸才“刚”着来的,还是它的特点就是如此。

按说,强大的围棋AI不一定存在棋风之说,怎么赢它就怎么下,以胜利为目标。比如AlphaGo Master与柯洁的第一局和第三局,它就是均衡型、控制流,“你不来招惹我,我也不招惹”;但如果人类棋手想杀Master的棋,跟它来”刚“的,它就会拎起40米长的大刀,让你见识一下什么叫棋局戛然而止,比如柯洁与AlphaGo三番棋的第二局。它无所谓棋风,看你想怎么来。

反正赢家就是赢家,前两局星阵都赢了,”刚“不”刚“似乎也无所谓了。

第三局,星阵依然赢了Leela,但由于第一步落在了天元上,初始胜率略降。这一局还是赢了,星阵依然很“刚”,而且这一局它显露出一些破绽。Leela有机会在搏杀中扳回一局。在大型对杀中,星阵“刚”则“刚”矣,稳却未必稳。越是走钢丝的棋,对计算的可靠性就要求越高。“刚”到极致,就需要“无漏”,所谓的“算无遗策”。但星阵的计算力似乎不足以支撑它下出这么“刚”的棋来

第四局,星阵输给了Leela,败因是在打劫和死活的判断上不够精确;第五局,星阵再度败北,这次其实还是与打劫和死活判断,以及由此导致的形势判断和收官有关。在这两局中,星阵撑得依旧很满,局部它认为有可能有手段的便宜都算进自己的账面上了,但实际上有些手段是不成立的。

在其他平台同时进行的与职业高手让先的对局中,星阵取得了不错的战绩。但与姜东润对局时,星阵再次出现了死活判断不清的问题。看到下面这张棋谱,哪怕没关注进程的棋友也能一眼看出星阵下得很刚猛,然而涉及到大区域多块棋的死活问题,星阵没能处理好。这个场面在DeepZenGo身上,我们看到过太多次了,不感到陌生。

如果是人类棋手之间的对局,上演这种屠龙大戏,我们通常会赞美黑棋的计算力胜过白棋。姜东润计算固然强,但真的是他靠计算力强压星阵一筹,所以生吞对方大龙吗?恐怕不能这么说。问题不是星阵的计算力没有人脑强,而是它误算漏算了。

至于为什么会出现这样的场面,我们看看开局。在左下角,白棋被黑棋搞成这么惨,活了个极小的角,外边被黑棋吃了这么多目数,而且厚成铁,亏到厄瓜多尔去了。

角部白棋应该是算错了,从而全局的形势判断也不靠谱了,否则不会干这种事儿。

后面白棋为什么被屠龙,与左下黑棋这里厚成铁有直接关系。当然,也不是说白棋一定会全死进去,这个过程中,星阵依旧有下错的地方。不过,要想拖家带口全部拽活,那是不可能的。

星阵为什么会出现与DeepZenGo相似的死活判断错误呢?

这个问题没有简单的答案,我们也无法仅凭看几张棋谱就给出一个准确的解释。不过,看了昨天的一篇报道,也许我们能有一个猜测的方向。

首先,po主想提醒并更正一下,按照AlphaGo Zero体系架构的AlphaZero既可以下围棋,也可以下国际象棋,还能下将棋,都达到了顶尖水平。DeepMind虽然没明确说九路、十三路或贴任意目数,但这应该对AlphaGo不是问题,——再复杂的贴目和改小棋盘,能复杂过跨棋类的难度吗?说星阵“超越了AlphaGo的架构”,po主觉得这种提法不够准确。当然,po主相信星阵肯定有与AlphaGo不同的地方,有该团队自己的创意。

对于金先生公布的这些信息,归根到底可以概括为一句话,星阵比AlphaGo施加了更多的人工干预而po主始终认为,以基本规则为根据,人工干预的越少,围棋AI就越强,破绽就越少。人为附加的条条框框越多,这个AI的棋里漏洞也就越多。

“下出优势下不退让的围棋对局”,这句话有实施上的问题。其实人类专家(不管是围棋专家还是人工智能专家)并不一定能够判断出这个优势下的退让是会赢得更稳、是一种需要,还是纯粹AI觉得怎么都赢了、随机选择一条路径。

有时候,你觉得优势下”我不退让照样能赢“,可能就下崩了,因为你是漏算了对手的某种反击,尤其对手的棋特别高、高到超出你的预计时。孟泰龄觉得没棋的地方,柯洁可能觉得有棋呢;柯洁觉得这样下绝对没事的场合,AlphaGo可能觉得“我这里还有手段呢”。

哪个人类棋手敢面对任意一个局面拍板“这里百分百可以不退让,我说行就行”?

极简单的局面也许可以判断得准确,比如固定几目棋的小官子阶段。可这又需要确定什么时候叫”极简单的局面“,什么时候是”还不那么简单的局面“,什么时候是”其实没那么简单、但以你以为已经很简单了的局面“。这是个很复杂的事情。

如果你能准确的判断出在每一个局面下“我不退让也一定能赢,不管对手有多强、下出什么样的棋,所以这个时候我不需要退让”,那你已经超越了人类顶尖棋手,也超越了这些AI,你是围棋之神了。po主不认为这是现阶段人类有办法做到的事情。

为什么po主认为人类要少施加干预,让AI尽可能地根据围棋的基本规则自己学习才会更强呢?

很容易理解。因为只有围棋的基本规则在围棋的领域里是“绝对真理”。而人类以为的“正确棋理和判断”,要么是可以通过围棋的基本规则直接推导出来的,这一点机器可以通过大量的自我对弈找到规律,没必要人为添加(AlphaGo Zero和AlphaZero就是这么做的,并证明了可行性,而它们的前代AlphaGo Master也已经极少施加人为干预了,不过即便是少施加干预,也比从“零”开始的AlphaGo Zero实力弱),要么是错误的,或局限于人类有限的理解范围内是相对正确的,它们不足以帮助AI提升到远超于人类的棋力。人为干预越多,给AI造成的“误导”就越多。

当人为干预达到极致的时候,所谓的“围棋人工智能”就退回到了早年的“人工补丁+专家数据库”的计算机围棋程序时代。

DeepZenGo为什么存在着直到引退都无法克服的死活判断+打劫+官子缺陷?就是因为它的算法里含有很多Zen时代的东西。DeepZenGo始终没有摆脱旧日领先、今时落后的负累,——这些曾经是他们引以为傲的成果。

“星阵”是否背负了“神算子”算法上的某些负资产呢?

当年的计算机围棋程序是怎么做的?这个地方发现有bug,好,打个补丁;布局不太好,那就把人类高手的对局数据拿来作参考数据;定式下得不对,那就把常见定式弄进去。可是围棋的变化太多了,不会重复的棋局数量浩如烟海,你怎么管得过来?总有你预料不到的新问题出现。

AlphaGo Lee在第四局出错了。2016年的那次人机大战结束后,DeepMind在几个月内没有对外发声。所有人都在猜测他们是怎么寻找这个bug,然后怎么修补,说白了就是觉得他们会打补丁呗。以前不都是这么做的吗?

然而DeepMind没打补丁。让AlphaGo通过自我学习,然后就克服了这个问题。他们没有做针对某一个错误的人工修补。当然,为了让AlphaGo学习得更快,DeepMind倒是设计了一些专门喂招的特殊AlphaGo,针对性地提供前代版本容易上套的招法,使得升级后的AlphaGo吃一堑长一智。这都是AlphaGo“靠自己学习”得到的长进。

DeepMind还进一步优化了神经网络架构,让AlphaGo消耗更小的运算资源便获得更强大的棋力,同时更不需要人类围棋专家的知识和建议作指导,直至后来走上了“从零开始”的道路。

从AlphaGo的演进过程中,我们看到AlphaGo越来越强,直到现在,大家也公认AlphaGo Master / AlphaGo Zero / AlphaZero 占据围棋的三座高峰,只有效仿其思路的AI才可与其有接近的棋力,它们的共同特点就是让AI自我学习、人工干预少

其他AI,人工干预得越多,成长所遇到的障碍就越多,下着下着,不是这个地方出现低级错误,就是那个地方又崩溃了。问题总比补丁多,打到什么时候是个头啊?

机器学习存在“黑盒子现象”。我们不知道施加一个人工干预的动作后,是否会引发什么不可知的连锁反应。人工干预越多,产生的影响越难监测和控制,有一个形象的比喻是“牵一发而动全身”。至于为什么牵了一发就会动全身,对不起,这一过程发生在漆黑一片的密闭空间,天知道是什么个机理。

“优势下不退让”,这种说法本身就是要对AI施加人工干预。而且,如我们前文所述,这个干预还个标准很难确定的东西。

退让,那就意味着有赢多赢少的概念了。AlphaGo是赢得越稳越好,不在意赢多赢少,星阵则是赢得越多越好。

赢得目数越多,就越得到“鼓励”。怎样赢得更多呢?杀棋屠龙,或者下得更撑。逆收七目的官子大,还是搏一把干掉对方一条大龙赢二十目大?

这不仅是对终局结果设置了“考核标准”,还相当于蔓延到对整个对局进程产生干扰

曾经,围棋也有下彩棋的,赢得目数越多,彩头就越多。下彩棋的棋手在整个棋局的进程中都是以此为目标选择招法的。这可绝不仅仅是官子收得严谨一点而已。

我们在星阵的棋谱中,看到了不少“撑得很猛”的招法,有些是成立的,有些是不成立的。不知道这样的棋风是无心插柳,还是有意栽花?

如果星阵在局部死活判断、大范围对杀、打劫和官子上存在与DeepZenGo相似的问题,那么柯洁在10天后的人机大战中未必没有机会。

星阵输的这几局棋,并不是在分先正常下的对局中输掉的。这一点也应该指出来。

输给Leela Zero的两局是“让位”了,即第一手或前两手落在高位,胜率比正常下略低;输给姜东润的对局是让先的棋份。在这三局中,星阵均有明显冒进的高风险招法,似乎急于扳回。

正常进行也许未必会输。然而,死活判断和打劫出错与此关系不大,这个明显的BUG肯定是存在的

只是不清楚星阵的这些BUG有多大成分是纯粹的计算力不足所致,又或者与DeepZenGo相似,是人工干预和其他因素产生的算法固有缺陷而所致。

理论上,如果计算力无穷大,我们直接用蒙特卡洛树搜索的算法就能战无不胜;但实际上,谁也做不到计算力无穷大,算法设计得越好,达到同样棋力所需的计算力就越小,在同等计算力支撑下达到的棋力就更高。AlphaGo Master用四个TPU所达成的棋力,AlphaGo Lee就绝对做不到,分布式的棋力仍不及前者的单机版。

计算力多少叫够用呢?永远都不够用。在计算力有限的前提下,只能把算法做得更好了。

训练AI所需要的计算力与运行其所需要的计算力不是一回事。这一点正是大公司掌握丰富资源的优势所在。不过,如果设计思路本身就有缺陷,即便提供足够的资源,恐怕也未必能够达到所期待的高度。

(0)

相关推荐