Katago缘何被对抗攻击找到弱点?||摩登围棋
大概上周的时候吧,我在知乎上面刷到一个问题:
https://www.zhihu.com/question/566400168/answer/2776799525
研究人员利用对抗攻击方法,使菜鸟级围棋程序成功打败了世界最强围棋 AI,什么是对抗攻击方法?
当时我和大多数棋友均表示不屑一顾,因为他们所谓的“战胜”katago的方法居然是往katago的空里乱丢几个残子,然后停招,kata也停招,自动点目把几个残子算活的,就这么赖赢了。

这不是纯纯的搞笑吗?

没想到这项研究后面还能有反转。昨天我刷到码农高天的视频,就是这盘文章的封面视频,介绍了这项工作的一个重要更新:
对抗AI已经能通过合法的方式,稳定触发katago的bug,然后合法地战胜katago。
而且那位up也用自己的katago进行测试,果然在低算力时也在相同的地方翻车了。
这意味着研究者真的利用对抗攻击找到了kata本身的bug,而不是规则上的漏洞!
所以kata缘何出现这样的弱点呢?我们看一下几个公开的对抗AI对弈棋谱




无一例外,katago都是在近乎稳赢的情况下,突然不知为何犯病没数清楚气,然后被一堆死棋给反杀了。
我曾经在评论区猜测,这些局面出现问题可能是因为局面太过低级,以至于只有在katago自我训练的极早期才会出现。因为katago自我对弈的时候,应该是胜率低过一定程度就投了,后面不再乱搅,也就导致这种搅局它真的缺乏相关训练。(就像我偶尔炸鱼,因为对手实在比我差太多,通常是威胁不到我的,我也就不怎么注意自己的弱点,导致偶尔也被反杀过。)

但是仔细观察几个反杀局面我发现我的判断存在问题,这种能系统性触发bug的局面,kata确实缺乏相关训练,但是并不是局面太过低级,而是太过稀有而高级了。
大家再仔细看上面几个反杀的局面,katago被反杀的大龙都有一个共同特点:形状为联通的一个圈,内部有对抗AI的一块局部不活但还有几口气的棋。
不知道这个局面有没有让大家联想到什么:盘龙眼。盘龙眼是围棋中极其稀有的一种活棋,看似一块棋只有两个假眼,却因为外围的联通而使得两个“假眼”同时保持为禁入点,从而整块是活棋。

盘龙眼多稀有呢?有记载的人类正式比赛中,只有日本棋手一力辽对上野爱咲美下出过一次:

(这个局面,右边对杀是连环劫黑杀白,但白棋利用这个连环劫可以获得无限的劫财,打赢A位的劫争。此后白大龙只有一只真眼,却因为连通形成盘龙眼而净活,黑目数不够认输。)
有记载的人类比赛对局只出现过一次类似的局面,可见其稀有程度。作为对比,同样因极为罕见而闻名的多劫循环,仅新世纪以来就多次出现(罗洗河vs崔哲瀚,古力vs李世石,江维杰vs李维清,包括本届农心杯姜东润vs柁嘉熹)
所以我们有理由相信,类似盘龙眼的这种连通一圈的里面还有对手的棋的情况,哪怕是katago自我训练的无数盘里,依旧极少出现。
再看前面几个kata被反杀的棋局,都出现了类似盘龙眼这种连通形状的中间有对方的棋的情况。这种局面可能真的就进入了katago的训练盲区。

然而这些局面比盘龙眼有些不同:
第一,盘龙眼虽然外围连通,但也要留两个洞,松出两口气;而kata翻车的局面气都是紧住的。这会把kata置于更危险的位置。
第二,被围在圈中间的白棋虽然有几口气,但无一例外是局部净死,更加迷惑kata的判断。外部包围的白棋也基本上到处破破烂烂,除了剩几口气基本也都是死的。
于是,从katago的角度看,如果中间的白棋是死的,自己的棋又这么连一圈,怎么看这个圈也可以算一只真眼了。(事实上,盘龙眼的外围连通一圈,拓扑学的角度也算一个巨大的真眼了,只是中间活了一块对手的棋,使得这个形状比较有迷惑性。)
如果这个圈看作真眼,那这块黑棋怎么看也铁活了。一旦katago判断这块黑棋是铁活棋,那外面那些破破烂烂的一圈也就基本被认定为死亡。这种局面下,katago在这块区域只会分配极少的算力(甚至可能几乎没算),也就没注意到自己气紧的缺陷。
从这项研究,我们或许可以同时看到围棋AI的先进性与局限性:
首先katago一定以某种形式理解了“眼”的概念,否则它不会对自己大龙的死活如此自信,这是比较先进的一面。
但另一方面,它的局限性,在于当一些极端少见的特例出现,人类稍加思考就可以明白,它却转不过弯来。