跳到主要内容

围棋为什么难?

在 AlphaGo 出现之前,围棋被认为是人工智能「最后的堡垒」。数十年来,研究者尝试了各种方法,却始终无法让电脑达到职业棋手的水平。

这不是因为研究者不够努力,而是因为围棋本质上就是一个极度困难的计算问题

本文将深入探讨:围棋究竟难在哪里?为什么它被称为「AI 的圣杯」?


状态空间的爆炸:10^170 的意义

什么是状态空间?

在任何棋类游戏中,状态空间(State Space)指的是所有可能的棋盘局面总数。这个数字决定了暴力搜索的可行性。

对于围棋来说,这个数字是:

围棋状态空间 ≈ 10^170

这是一个什么概念?让我们来做一些比较。

与宇宙原子数的比较

根据物理学家的估计,可观测宇宙中的原子总数约为:

宇宙原子数 ≈ 10^80

这意味着:

围棋的可能局面数,是宇宙原子数的 10^90 倍。

如果你把宇宙中的每一个原子都当作一台超级电脑,每台电脑每秒能处理 10 亿个局面,从宇宙大爆炸到现在(约 138 亿年)都不可能穷举所有局面。

数字的直观理解

数字含义
10^9十亿,人类的总人口数量级
10^12一兆,全球蚂蚁的数量
10^23一摩尔的分子数
10^80宇宙中的原子数
10^120西洋棋的状态空间
10^170围棋的状态空间

为什么围棋的状态空间这么大?

围棋状态空间巨大的原因有几个:

1. 棋盘尺寸

围棋使用 19×19 的棋盘,共有 361 个交叉点。相比之下:

  • 西洋棋:8×8 = 64 格
  • 中国象棋:9×10 = 90 个交叉点
  • 五子棋:15×15 = 225 个交叉点

2. 每格三种状态

每个交叉点可以是:

  • 空(没有棋子)
  • 黑子
  • 白子

粗略估计,可能的组合数为 3^361 ≈ 10^172。考虑到围棋规则(如打劫、气的限制),实际合法局面约为 10^170。

3. 棋子没有移动

不像西洋棋,围棋的棋子一旦落下就不会移动(除非被提掉)。这意味着每一步都是新增一个棋子,而非移动现有棋子,导致可能的路径更多。

代码示意:状态空间估计

import math

# 棋盘尺寸
BOARD_SIZE = 19
TOTAL_POINTS = BOARD_SIZE ** 2 # 361

# 每格三种状态(空、黑、白)
# 粗略上界
upper_bound = 3 ** TOTAL_POINTS
print(f"粗略上界: 3^{TOTAL_POINTS} ≈ 10^{math.log10(upper_bound):.0f}")
# 输出: 粗略上界: 3^361 ≈ 10^172

# 考虑规则限制后的实际估计
# Tromp-Taylor 的精确计算给出约 2.08 × 10^170
actual_estimate = 2.08e170
print(f"实际估计: {actual_estimate:.2e}")

# 与宇宙原子数比较
universe_atoms = 1e80
ratio = actual_estimate / universe_atoms
print(f"围棋局面数 / 宇宙原子数 = 10^{math.log10(ratio):.0f}")
# 输出: 围棋局面数 / 宇宙原子数 = 10^90

分支因子的诅咒:平均 250 种选择

什么是分支因子?

分支因子(Branching Factor)是指在游戏的任意一步,平均有多少种合法走法。这个数字决定了搜索树的宽度

游戏平均分支因子
井字游戏~4
西洋棋~35
中国象棋~38
黑白棋~10
围棋~250

搜索树的爆炸性增长

假设我们要用树搜索算法看 N 步棋。需要考虑的局面数约为:

节点数bN\text{节点数} \approx b^N

其中 b 是分支因子。

让我们比较西洋棋和围棋:

看 N 步西洋棋 (b=35)围棋 (b=250)差距
1 步35250
2 步1,22562,50051×
4 步150 万39 亿2,600×
6 步18 亿2.4×10^141.3 亿×
10 步2.8×10^159.5×10^233.4 亿×

看 10 步棋,围棋需要考虑的局面是西洋棋的 3 亿倍

为什么深蓝的方法在围棋上失败

1997 年击败卡斯帕罗夫的深蓝,使用的核心技术是:

  1. Alpha-Beta 剪枝:减少搜索节点
  2. 硬件加速:每秒评估 2 亿个局面
  3. 人工评估函数:专家设计的棋局评估

但即使用同样的方法:

  • 西洋棋:看 12-14 步需要评估约 10^18 个节点
  • 围棋:看 12 步需要评估约 10^29 个节点

差距是 10 亿亿倍。没有任何硬件能弥补这个差距。

开局的选择更是天文数字

在围棋开局阶段,分支因子更高:

  • 第 1 手:361 种选择
  • 第 2 手:360 种选择
  • 第 3 手:359 种选择
  • ...

即使只看前 10 手:

361×360×359×...×3525.5×1025361 \times 360 \times 359 \times ... \times 352 \approx 5.5 \times 10^{25}

这就是为什么「开局定式」如此重要——人类棋手需要记忆大量开局变化,因为无法即时计算。


评估的困难:没有简单的棋子价值

西洋棋的材料优势

在西洋棋中,评估局面相对直观:

棋子价值(传统)
1
3
3
5
9

虽然实际评估更复杂(位置、结构等),但「数子」是一个很好的起点。吃掉对方一个后,几乎肯定是好事。

围棋:每颗棋子都是平等的

在围棋中,每颗棋子的内在价值完全相同——都只是一颗石头。

一颗棋子的价值完全取决于:

  • 它在棋盘上的位置
  • 它与其他棋子的关系
  • 它对整体局面的影响

这使得评估变得极度困难。

厚势与外势的抽象性

围棋中有许多抽象概念:

厚势(Thickness)

「厚」是指一团棋子坚实、稳固、有影响力。但「厚」很难量化:

  • 一个厚实的形状值多少目?
  • 什么时候该利用厚势进攻?
  • 厚势何时会变成「愚形」(效率低下的形状)?

顶尖棋手可能会说:「这块棋很厚,大概值 15 目左右吧。」但这是基于数十年经验的直觉,而非精确计算。

外势(Influence)

围棋的外势指的是棋子对周围空间的潜在控制力。这种控制力是「虚」的——它可能转化为实地,也可能在攻防中发挥作用,也可能最终什么都不是。

如何评估「潜在」的价值?这对电脑来说极为困难。

味道(Aji)

「味道」是围棋中最抽象的概念之一。它指的是棋盘上某个位置的潜在可能性

一块「死棋」可能有「利用价值」——虽然它本身救不活,但可以在未来的战斗中产生干扰。这种「潜在可能性」几乎无法用数值表示。

为什么手工评估函数失败

在深蓝之前的电脑西洋棋,使用的是人类专家设计的评估函数:

评估值 = 材料分数 + 位置分数 + 王的安全性 + 兵形结构 + ...

这些项目可以被量化、调整权重,效果不错。

但围棋呢?

研究者尝试过各种特征:

  • 控制的交叉点数
  • 棋子的「自由度」(气数)
  • 连接强度
  • 眼形的完整性
  • ...

但这些特征的组合,从未能达到业余高段的水平。

核心问题:围棋的局面评估是一个高度非线性、全局性的问题。

一颗棋子的价值取决于整个棋盘的状态,而非局部特征的简单相加。


长期规划的需求:一盘棋 150 手

围棋的三大阶段

一盘标准的围棋对局通常经历三个阶段:

阶段手数(约)特性
布局1-50占地、构建框架、奠定全局方向
中盘50-200战斗、攻防、局部与全局的平衡
官子200-300收尾、计算、精确度

平均一盘棋约 250-300 手,其中前 150 手决定了胜负的大局。

布局:30 步之后的规划

布局阶段的每一步棋,都在为几十手甚至上百手之后做准备。

比如,一个「三连星」布局:

. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . ● . . . . . ● . . . . . ● . . .
. . . . . . . . . . . . . . . . . . .
...

这三颗黑子构成了一个「外势型」布局,其意图是:

  1. 不急于围地
  2. 等白棋进入后进行攻击
  3. 透过攻击获取实地或外势
  4. 最终在终盘实现优势

这个「计划」需要展望 50-100 手棋之后的局面。没有任何搜索算法能够看这么远。

中盘:局部与全局的平衡

中盘战斗是围棋最复杂的部分。棋手需要在每一步考虑:

  1. 局部计算:这个战斗谁会赢?
  2. 全局判断:值得在这里战斗吗?
  3. 次序选择:先走哪里最有效率?
  4. 放弃决策:什么时候该弃子转向?

一个典型的中盘决策:

「如果我在这里切断,对方会反击,我需要做活一块棋,这会让对方先手去占大场...最终我大概亏 5 目。但如果我先补强再切断,虽然损失先手,但...」

这种多层次、多维度的思考,需要同时处理局部和全局、短期和长期。

官子:精确计算与逆转

官子阶段看似简单——只是收尾。但实际上:

  • 每一手的「目数价值」需要精确计算
  • 先后手的差异可能决定胜负
  • 「劫争」可以完全改变局面

职业棋手在官子阶段的计算精度可以达到 0.5 目,而一盘棋的胜负可能就差 1 目。

为什么看不远是致命的

让我们做一个简化计算:

  • 一盘棋平均 250 手
  • 要完美预测结果,理论上需要看完所有 250 手
  • 即使分支因子降到 100(官子阶段),搜索空间也是 100^250 ≈ 10^500

这远远超出任何电脑的能力。

这就是为什么围棋 AI 必须学会「评估」局面,而不能只靠「计算」。


直觉的重要性:「这步棋感觉对」

人类棋手的思考方式

顶尖围棋棋手描述他们的思考过程时,经常使用这样的词汇:

"这步棋感觉对。"

"这个形状很舒服。"

"他的那块棋味道不好。"

"这里有一种说不出的危险感。"

这不是诗意的描述,而是真实的认知过程。人类棋手使用模式识别直觉判断来处理围棋的复杂性。

模式识别:一秒钟看到重点

实验显示,职业棋手看一眼棋盘(不到 1 秒),就能:

  1. 识别出关键区域
  2. 发现可能的「好棋」
  3. 感知局面的大致形势

这种能力来自数万盘棋的经验积累,形成了「棋感」。

在 AlphaGo 之前的电脑围棋,最大的困难就是无法复制这种直觉

直觉的数学描述

从机器学习的角度,人类的围棋直觉可以被理解为:

P(好棋棋盘局面)P(\text{好棋} | \text{棋盘局面})

一个训练有素的大脑,能够根据棋盘局面,立即输出每个位置是「好棋」的概率分布。

这正是 Policy Network 要学习的东西——而这需要深度神经网络。


为什么被称为「AI 的圣杯」

棋类游戏的里程碑

人工智能的历史中,棋类游戏一直是重要的里程碑:

年份事件意义
1951首个西洋跳棋程序最早的游戏 AI
1997深蓝击败卡斯帕罗夫暴力搜索的胜利
2007Checkers 被完全破解完美信息游戏的极限
2016AlphaGo 击败李世乭深度学习的胜利

为什么围棋特别

围棋被称为「AI 的圣杯」,因为它集合了所有困难的特性:

特性围棋西洋棋
状态空间10^17010^120
分支因子~250~35
平均手数~250~40
评估难度极高中等
直觉依赖非常高

如果 AI 能解决围棋,意味着:

  1. 可以处理极大的搜索空间
  2. 可以学会抽象的评估
  3. 可以进行长期规划
  4. 可以形成「直觉」

这些能力远远超出「下棋」的范畴,是通用智能的核心特征。

学术界的预测

2016 年之前,学术界对「AI 何时能击败人类围棋冠军」的预测普遍是:

"至少还要 10-20 年。"

— 多数 AI 研究者(2015 年)

这个预测基于当时技术进展的速度。围棋程序每年进步约 1-2 段,而人类职业九段有 18 段的实力差距。按这个速度,确实需要 10-20 年。

没人预料到深度学习会带来跳跃式的突破


动画对应

本文涉及的核心概念与动画编号:

编号概念物理/数学对应
🎬 B2状态空间爆炸组合数学、指数增长
🎬 B8组合爆炸阶乘增长、搜索树
🎬 A3分支因子比较图论、树结构
🎬 B5评估函数困境非线性映射

关键要点整理

围棋之所以被称为「AI 的圣杯」,是因为它结合了三大难题:

1. 空间的诅咒

  • 10^170 种可能局面,远超宇宙原子数
  • 分支因子 ~250,搜索树爆炸性增长
  • 暴力搜索在物理上不可能

2. 评估的困难

  • 每颗棋子价值相等,没有材料优势
  • 「厚势」「外势」「味道」等抽象概念难以量化
  • 局面评估是高度非线性、全局性问题

3. 时间的挑战

  • 一盘棋 ~250 手,需要长期规划
  • 布局决策影响 50-100 手之后的局面
  • 局部战斗与全局平衡需要同时考虑

正是这些难题的组合,使得传统 AI 方法(暴力搜索 + 手工评估)在围棋上彻底失败。

而 AlphaGo 的突破,正是因为它用深度神经网络解决了评估问题,用蒙地卡罗树搜索解决了规划问题,用强化学习解决了超越人类的问题。


延伸阅读


参考资料

  1. Tromp, J. (2016). "Number of legal Go positions." — 围棋状态空间的精确计算
  2. Allis, L.V. (1994). "Searching for Solutions in Games and Artificial Intelligence." PhD thesis, University of Limburg. — 游戏复杂度的理论分析
  3. Müller, M. (2002). "Computer Go." Artificial Intelligence, 134(1-2), 145-179. — 电脑围棋的早期研究综述
  4. Silver, D., et al. (2016). "Mastering the game of Go with deep neural networks and tree search." Nature, 529, 484-489. — AlphaGo 原始论文