欢 迎 访 问 卢 昌 海 个 人 主 页

除了自己的无知,
我什么都不懂。

-苏格拉底

 
信 息
 
 
 
All English Contents
作品列表 | 电子图书
站长简介 | 常见问题
版权说明 | 电子邮箱
 
统 计
 
 
 
自 2023-03-10 以来
本文点击数
19,135
自 2008-02-01 以来
本站点击数
32,186,003
昨日点击数 6,961
今日点击数 3,656

喜欢本人文字的读者
>>> 欢迎选购本站电子书 <<<

围棋: 人类的反击?

- 卢昌海 -

上个月有一条新闻 (最早来自 2 月 17 日 Financial Times 的一篇题为 “Man beats machine at Go in human victory over AI” 的报道) 引起了我的兴趣。 不过那几天恰好在伦敦旅游, 看到的时候距离新闻的出现已晚了几天, 便想着既然晚了, 不如干脆等等后续消息再聊。 可是等着等着居然没见到什么后续消息, 于是只得回过头来, 以炒冷饭的姿态补聊一下。

那条新闻是说美国的业余六段棋手 Kellin Pelrine 利用新近发现的开放源代码围棋程序 KataGo 和 Leela Zero 的漏洞,以压倒性的优势击败了那两者。

换作是在 2015 年之前, 这种消息根本成不了新闻——因为那时的围棋程序本就跟人类棋手差了一大截。 但时过境迁, 自从 2015 年 10 月, “深思” (DeepMind) 公司的围棋系统 AlphaGo 以 5:0 的比分击败法籍华裔职业二段棋手樊麾 (Fan Hui), 又于次年 3 月以 4:1 的比分击败曾 14 次荣膺世界冠军的韩国职业九段棋手李世石, 正式攀上围棋世界的巅峰以来, 围棋已步象棋后尘, 被人工智能踩在了脚下。 我在 “从 ‘深蓝’ 到 ‘深思’” 一文中介绍过那段有趣的历史。

正因为介绍过那段历史, 上面那条新闻引起了我的兴趣。 也正因为有兴趣, 尽管滞后了那么久, 仍要回过头来补聊一下——尤其要聊聊 Pelrine 击败 KataGo 和 Leela Zero 能否被视为围棋领域的一场扭转乾坤的 “人类的反击” (human strikes back)。

让我从读到那条新闻时产生过的两个念头说起吧。 那两个念头——确切说是两个问题——为:

  1. 被 Pelrine 击败的围棋程序 KataGo 和 Leela Zero 跟拙作 “从 ‘深蓝’ 到 ‘深思’” 所介绍的那些围棋系统 —— AlphaGo、 AlphaZero 等等——相比, 处于什么水平?
  2. KataGo 和 Leela Zero 多快能补上漏洞? 是通过直接编程来补, 还是通过 “自学” ——包括利用漏洞 “双手互搏” 来加速 “自学”。

我之所以想等等后续消息再聊, 也正是想对这两个问题的答案有更多了解。 可惜直到今天, 跟那条新闻有关的信息依然是当初那些。 看来 Pelrine 击败 KataGo 和 Leela Zero 跟当初 AlphaGo 击败李世石相比, 在轰动性上完全不能同日而语。

既然没有后续消息, 那就以当初的消息为基础, 附带参照一些稍具技术性的资料, 来炒这盘冷饭吧。

首先要提到的是, 被 Pelrine 所利用的 KataGo 和 Leela Zero 的漏洞是通过计算机发现的——而且 Pelrine 本人正是作出这一发现的研究组的成员。 具体地说, 那漏洞是通过一系列以 KataGo 为 “靶子” 的机器对机器的所谓 “对抗性机器学习” (adversarial machine learning) 而发现的。 有关这一发现的论文发布于 2022 年 11 月, 标题为 “Adversarial Policies Beat Superhuman Go AIs”。 围棋程序存在漏洞及通过计算机发现漏洞本身都并没什么了不起, 因为目前的一切围棋程序都远不能穷尽围棋的变化, 不能严格实现理论上的最佳策略, 从而毫无疑问是存在漏洞的。 而既然存在漏洞, 那么即便人类棋手没能力发现, 用计算机发现依然是可能的。 但此次发现的漏洞有一个特殊之处, 那就是它的原理并不艰深, 从中能衍生出的策略也不涉及复杂计算, 甚至对人类来说有相当的直观性, 故而一经发现, 就连人类棋手也能运用 (不过也正因为有直观性, 这种策略很容易被人类棋手识破, 在人类自己的高水平对局中并无用处)[注一]

也许因为漏洞是通过计算机发现的, 大大削弱了新闻里的人类份量, 也无可避免地减弱了新闻的轰动性。 另一方面, 当初击败人类的 AlphaGo 及后续版本——比如 AlphaZero ——已然 “退隐”, 如今被击败的 KataGo 和 Leela Zero 只是依据 AlphaZero 的设计理念, 另起炉灶开发出来的程序。 虽然 KataGo 和 Leela Zero (在此次漏洞被发现之前) 也达到了超越人类棋手的水平, 但击败它们终究不等于报了 AlphaGo 击败人类的 “一箭之仇”, 而更类似于击败 “仇人” 的徒弟, 这恐怕也进一步减弱了新闻的轰动性。

但尽管 “仇人” 已然退隐, KataGo 和 Leela Zero 跟 AlphaGo 及后续版本——尤其 AlphaZero ——相比, 究竟处于什么水平 (即我读到那条新闻时产生的上述第一个问题), 仍是很值得探究的。 我在网上搜了搜, 没能搜到什么信息, 看来直接的答案并不存在。 不过在前文提到的那篇论文里, 有些线索或许可以让我们对这一问题的答案作出某种猜测。

依据那篇论文, 早在 Pelrine 对阵 KataGo 和 Leela Zero 之前, 研究者们就已凭借所发现的漏洞, 用计算机跟 KataGo 进行过数以千计的对抗, 结果是: 如果 KataGo 不进行树图搜索 (tree search), 对抗的胜率高达 100%; 如果 KataGo 每一步都采用 4,096 visits 的搜索, 对抗的胜率约为 97.3%; 如果 KataGo 每一步都采用 10,000,000 visits 的搜索, 则对抗的胜率约为 72%[注二]

另一方面, 那篇论文在介绍相关研究时提到了一项跟该论文同期开展的研究, 那项研究的 “靶子” 恰好是 AlphaZero ——确切说是 AlphaZero 的一个复制版, 训练水准显著低于 “正版” AlphaZero。 那项研究也找到了漏洞, 并且也凭借所发现的漏洞, 用计算机跟 AlphaZero 进行了对抗, 结果是: 如果 AlphaZero 不进行树图搜索, 对抗的胜率约为 90%; 如果 AlphaZero 每一步都采用 800 visits 的搜索, 则对抗的胜率约为 65%。 尽管没有明说两项研究找到的是否是同一种漏洞, 但那篇论文宣称, 两项研究的殊途同归意味着像 AlphaZero 那种类型的棋艺上 “自学成才” 的程序, 它们的漏洞是共同设计上的漏洞而不仅仅是各自编程时的漏洞[注三]。 能作出这样的宣称, 显示两项研究找到的漏洞有很大的相关性或可比性——因为否则的话, 两个没有可比性的互不相关的漏洞完全有可能只是两个系统各自编程时的漏洞。

如果两项研究找到的漏洞有很大的相关性或可比性, 那我们就可以以之为线索, 间接对比或猜测一下 KataGo 和 AlphaZero 的相对水平。

具体地说, 从那篇论文引述的对抗胜率可以看出, AlphaZero 采用 800 visits 的搜索时的表现 (即对方胜率约为 65% ——相应的己方胜率约为 35%) 胜过了 KataGo 采用 10,000,000 visits 的搜索时的表现 (即对方的胜率约为 72% ——相应的己方胜率约为 28%)。 虽然与两者相对抗的是不同的程序, 甚至两者的搜索所涉及的 “visit” 的定义也未必相同, 但这种不同恐怕超不过 800 和 10,000,000 之间的巨大差异。 事实上, 那篇论文提到, 采用 10,000,000 visits 的搜索时, KataGo 平均要一小时以上才能下一步棋, 从而明显已达到了能力的极限 (甚至超出了普通棋赛允许的时限); 而采用 800 visits 的搜索时, AlphaZero 只对应于高段人类棋手的水平, 从而远远没有达到能力的极限。 两相比较之下, 起码从应付此类对抗的能力上讲 (这是此类比较对本文的实质含义——下文的有关陈述亦只限于这一含义, 而不是对两者棋力的全面比较), AlphaZero 显然要比 KataGo 厉害得多。 而从 AlphaZero 采用 800 visits 的搜索就能将对方胜率从 90% 压低为 65%, 以及这个 AlphaZero 的训练水准显著低于 “正版” AlphaZero 来看, 发挥全部威力的 AlphaZero 应该不是对方能够比拟的[注四]

一般认为, KataGo 是目前最强的开放源代码围棋程序——或者哪怕不是最强, 起码也是最强的之一, 因此它相对于 AlphaZero 的水平在很大程度上也可以代表 Leela Zero 相对于 AlphaZero 的水平——确切说是水平的上限。 也因此, 尽管无法进行滴水不漏的论证, 在我看来 KataGo 和 Leela Zero 很可能都远没有 AlphaZero 厉害 (这就是我对上述第一个问题的答案——尽管只是猜测性的答案)。 而如果 KataGo 和 Leela Zero 都远没有 AlphaZero 厉害, 那么 KataGo 和 Leela Zero 的落败就并不能外推为 AlphaZero 的落败; 相应地, Pelrine 击败 KataGo 和 Leela Zero 哪怕广义上可归为 “人类的反击”, 但即便不计较漏洞是通过计算机发现的这一因素, 恐怕也只能视为战役性的局部胜利, 而并非扭转乾坤的战略性胜利。 更重要的是, 人工智能的发展速度远远超过人类智能的演化速度——在棋类领域尤其如此, 因此对这场 “人类的反击” 无论怎样拔高, 用长远的眼光看也注定是昙花一现的。

在等待后续消息未果的过程中, 有一点稍稍出乎我意料, 那就是 Pelrine 之外似乎没听说有其他棋手利用此次发现的漏洞 “咸鱼翻身”, 像到景点 “打卡” 一样, 趁机留下一个击败高水平人工智能围棋程序的个人纪录, 甚至——如果跟 KataGo 或 Leela Zero 比赛能影响等级分的话——趁机混一点等级分。 考虑到 Pelrine 不仅棋力达到了业余六段, 而且恰好是发现漏洞的研究组的成员, 如果具有此种 “双重身份” 的他是唯一击败 KataGo 和 Leela Zero 的人, 则不能不让人怀疑利用漏洞的门槛有可能是相当高的——甚至有可能在一定程度上依赖于普通棋手不具有的后一重身份。 当然, 也可能是具有足够棋力的其他棋手自重身份, 不愿下这种从棋理上讲非常难看甚至有些无赖的单纯 “捡漏” 的棋。 但无论出于何种原因, 假如没有其他棋手像 Pelrine 一样取得胜绩 (严格讲不仅要取得胜绩, 而且要针对足够多 “visit” 的搜索取得胜绩, 才能作为 “人类的反击” 的有效战绩), 在我看来对 Pelrine 击败 KataGo 或 Leela Zero 一事的定位是有不容忽视的负面影响的。 因为它让此事变成了一种类似 “孤证” 的事件。 而倘若真是 “孤证”, 就有必要用更苛刻的眼光来看待。 在那样的眼光下, 坦率讲, Pelrine 的 “双重身份” 不仅有损代表性, 而且也有损他作为单纯的——即对弈时不依赖计算机的——人类棋手的公信力。 在那样的眼光下, 整条新闻之缺乏后续消息, 倒是在一定程度上暗合了 “孤证不立” 的道理。

在结束本文之前, 回过头来聊聊我读到那条新闻时产生的上述第二个问题, 即: KataGo 和 Leela Zero 多快能补上漏洞? 遗憾的是, 这个本该是棋手和程序开发者共同关心的问题也同样缺乏后续消息。 我在网上看到的跟补漏有关的唯一信息是 GitHub 上 KataGo “群落” 里的一个题为 “Adversarial Policies Beat Professional-Level Go AIs” 的讨论 (编号为 #705)。 该讨论开启于 2022 年 11 月 27 日, 是前文提到的那篇论文发布后不久, 所讨论的则正是论文里提到的漏洞 (连标题都明显是效仿论文标题)。 只不过, 也许是因为——如前所述——围棋程序存在漏洞及通过计算机发现漏洞本身都并没什么了不起, 且漏洞当时还停留在机器层面 (即尚未被人类棋手所利用), 整个讨论于 2022 年 12 月中旬就结束了, 并未显示出任何急迫性, 也并未提到明确的补漏措施或时间表。 至于 KataGo 和 Leela Zero 作为有 “自学” 能力的程序, 是否已演进到自动补了漏, 则起码目前仍非我所知晓。

以上就是我对前述新闻的迟到的闲聊, 其中一部分是基于我所看到的信息作出的猜测。 但愿我不曾漏看重要信息——但假如漏看, 请读者不吝指正[补注一]

注释

  1. 形容了半天, 这个 “原理并不艰深”, “对人类来说有相当的直观性” 的漏洞及衍生出的策略究竟是什么? 很惭愧, 我不是棋手, 因而偷个懒, 借一位微博友人 (@万精油微博) 的文字来概述一下: “这个战术简单说起来就是在棋盘各处走棋, 走出几块死棋。 AI 围棋在判定死棋后就不再赋予太大的权重, 而是在别处考虑。 这个战术的主要手段是用这几块死棋反包对方的棋。”
  2. “visit” 这一概念在论文里未曾定义 (也许对领域内读者来说是常识), 我猜是树图搜索时的节点访问次数。 不过具体定义并不影响本文的分析——因为本文只用到 “visit” 次数的相对大小。 另外, 细心的读者可能会问: 被 Pelrine 击败的 KataGo 和 Leela Zero 是否进行了树图搜索, 以及 (如果进行了的话) 采用的是多少 “visit” 的搜索。 很遗憾, 我在资料中并未看到答案。
  3. 如前所述, KataGo 和 Leela Zero 是依据 AlphaZero 的设计理念开发出来的程序, 故同属于 “像 AlphaZero 那种类型的程序”, 至于 “棋艺上 ‘自学成才’” 的含义, 可参阅拙作 “从 ‘深蓝’ 到 ‘深思’”。
  4. 这个结论有赖于很多假设, 因而只是猜测性的。 如果研究者们可以用击败 KataGo 的程序对抗一下 AlphaZero, 尤其是对抗一下发挥全部威力的 AlphaZero, 就能对它的正确与否作出裁定。 可惜的是, AlphaZero (包括复制版) 既不是开放源代码程序, 也不能免费使用, 因此起码就我目前所知, 这种对抗尚不在任何研究组的研究计划之中。

补注

  1. 一位推特网友 (@Junyan_Xu) 提供了包括围棋网站上的讨论在内的一些信息, 其中显示前文提到的那篇论文发布后不久, 就有一位五级 (“级” 是业余段位以下的围棋等级, 级数越小水平越高, 一级之上是业余初段) 棋手利用所发现的漏洞, 针对 50 “playout” 的搜索 (“playout” 跟 “visit” 的区别在于前者不计入重复访问的节点, 故 50 “playout” 对应的 “visit” 次数通常多于 50) 击败了 KataGo (此为 2022 年 12 月 1 日, 比 Kellin Pelrine 击败 KataGo 和 Leela Zero 早了两个半月左右); 也见到有棋手称自己打算试试, 看凭借这一漏洞多久能升到九段 (此为 2022 年 12 月 2 日, 不过后来并无下文)。 另外, 也有人提到 KataGo 已针对这一漏洞有所演进, 原先要通过数以百万计的 “visit” 才能下对的某些棋, 如今只需 5,000 左右的 “visit” 就能下对了 (此为 2023 年 2 月 21 日)。 这些对本文有一定的勘正或补充, 故简录于此。 [2023-03-11]

相关链接

站长近期发表的作品

网友讨论选录

  • 推特网友 Junyan Xu   (发表于 2023-03-10)

    随着新闻的发布, 论文也于 2 月 18 日发了新版, 可能卢老师没发现? v3 版本的附录 E 估算了 KataGo 和 AlphaZero 的棋力, 得出结论是 KataGo 128 playout 的搜索就超越人类, 而 AlphaZero 800 visits 只是有可能超越人类, 所以还是 KataGo 更强。 这也比较合理, KataGo 训练很久了, 而且加入人类知识, 训练更高效。

  • 卢昌海   (发表于 2023-03-10)

    非常感谢留言。 你提到的附录我也注意到了, 不过我基于的是对两者最佳表现 (即最多 visits 下的表现) 的比较。 KataGo 由于经过更多训练, 故只需少数搜索就能胜过人类, 但搜索增多带来的改进却似乎不大 (起码从应付此类对抗的角度讲——我对文字作了修订, 强调了这一点)。

  • 推特网友 Junyan Xu   (发表于 2023-03-11)

    Schmid 等人训练的 AlphaZero 是基于 DeepMind 开源的训练代码…… [卢注: “Schmid 等人” 即文中提到的 “一项跟该论文同期开展的研究” 的研究者们] 但是要注意他们训练用的时间远远比不上 DeepMind 的 AlphaZero, 卢老师的文中似乎将两个 AlphaZero 完全等同了, 这样也不太好。

  • 卢昌海   (发表于 2023-03-12)

    推特的 “树状” 评论结构有好有坏, 导致我直到现在才注意到这个留言。 他们用的只是 AlphaZero 的一个 replica 这点我注意到了, 只不过由于对他们的文章是略述, 另外也考虑到 replica 在训练上多半弱于原机, 对我的论点并无削弱, 故未特意强调。 不过会补充说明一下。

  • 网友: 不洒脱的佐藤君   (发表于 2023-03-25)

    文章里提到的 AI 有没有修好 bug 我不清楚, 但是 “野狐围棋” 的 “绝艺” 指导也被这个策略击败了, 修了很长一段时间, 现在应该还没修好。

  • 网友: 不洒脱的佐藤君   (发表于 2023-08-02)

    “绝艺” 经过几个月的修补, 现在应该克服了这个问题, 之前用这个 bug 击败 “绝艺” 的日本棋手又下了几轮, 已经无法用这个 bug 再次让 “绝艺” 入套了。

  • 卢昌海   (发表于 2023-08-02)

    Good to know! :-)

本文的讨论期限已过, 如果您仍想讨论本文,
请在每个月前七天的 “读者周” 期间前来讨论。

>> 查阅目前尚在讨论期限内的文章 <<