围棋为什么难?
在 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 步棋。需要考虑的局面数约为:
其中 b 是分支因子。
让我们比较西洋棋和围棋:
| 看 N 步 | 西洋棋 (b=35) | 围棋 (b=250) | 差距 |
|---|---|---|---|
| 1 步 | 35 | 250 | 7× |
| 2 步 | 1,225 | 62,500 | 51× |
| 4 步 | 150 万 | 39 亿 | 2,600× |
| 6 步 | 18 亿 | 2.4×10^14 | 1.3 亿× |
| 10 步 | 2.8×10^15 | 9.5×10^23 | 3.4 亿× |
看 10 步棋,围棋需要考虑的局面是西洋棋的 3 亿倍。
为什么深蓝的方法在围棋上失败
1997 年击败卡斯帕罗夫的深蓝,使用的核心技术是:
- Alpha-Beta 剪枝:减少搜索节点
- 硬件加速:每秒评估 2 亿个局面
- 人工评估函数:专家设计的棋局评估
但即使用同样的方法:
- 西洋棋:看 12-14 步需要评估约 10^18 个节点
- 围棋:看 12 步需要评估约 10^29 个节点
差距是 10 亿亿倍。没有任何硬件能弥补这个差距。
开局的选择更是天文数字
在围棋开局阶段,分支因子更高:
- 第 1 手:361 种选择
- 第 2 手:360 种选择
- 第 3 手:359 种选择
- ...
即使只看前 10 手:
这就是为什么「开局定式」如此重要——人类棋手需要记忆大量开局变化,因为无法即时计算。
评估的困难:没有简单的棋子价值
西洋棋的材料优势
在西洋棋中,评估局面相对直观:
| 棋子 | 价值(传统) |
|---|---|
| 兵 | 1 |
| 马 | 3 |
| 象 | 3 |
| 车 | 5 |
| 后 | 9 |
虽然实际评估更复杂(位置、结构等),但「数子」是一个很好的起点。吃掉对方一个后,几乎肯定是好事。
围棋:每颗棋子都是平等的
在围棋中,每颗棋子的内在价值完全相同——都只是一颗石头。
一颗棋子的价值完全取决于:
- 它在棋盘上的位置
- 它与其他棋子的关系
- 它对整体局面的影响
这使得评估变得极度困难。
厚势与外势的抽象性
围棋中有许多抽象概念:
厚势(Thickness)
「厚」是指一团棋子坚实、稳固、有影响力。但「厚」很难量化:
- 一个厚实的形状值多少目?
- 什么时候该利用厚势进攻?
- 厚势何时会变成「愚形」(效率低下的形状)?
顶尖棋手可能会说:「这块棋很厚,大概值 15 目左右吧。」但这是基于数十年经验的直觉,而非精确计算。
外势(Influence)
围棋的外势指的是棋子对周围空间的潜在控制力。这种控制力是「虚」的——它可能转化为实地,也可能在攻防中发挥作用,也可能最终什么都不是。
如何评估「潜在」的价值?这对电脑来说极为困难。
味道(Aji)
「味道」是围棋中最抽象的概念之一。它指的是棋盘上某个位置的潜在可能性。
一块「死棋」可能有「利用价值」——虽然它本身救不活,但可以在未来的战斗中产生干扰。这种「潜在可能性」几乎无法用数值表示。
为什么手工评估函数失败
在深蓝之前的电脑西洋棋,使用的是人类专家设计的评估函数:
评估值 = 材料分数 + 位置分数 + 王的安全性 + 兵形结构 + ...
这些项目可以被量化、调整权重,效果不错。
但围棋呢?
研究者尝试过各种特征:
- 控制的交叉点数
- 棋子的「自由度」(气数)
- 连接强度
- 眼形的完整性
- ...
但这些特征的组合,从未能达到业余高段的水平。
核心问题:围棋的局面评估是一个高度非线性、全局性的问题。
一颗棋子的价值取决于整个棋盘的状态,而非局部特征的简单相加。
长期规划的需求:一盘棋 150 手
围棋的三大阶段
一盘标准的围棋对局通常经历三个阶段:
| 阶段 | 手数(约) | 特性 |
|---|---|---|
| 布局 | 1-50 | 占地、构建框架、奠定全局方向 |
| 中盘 | 50-200 | 战斗、攻防、局部与全局的平衡 |
| 官子 | 200-300 | 收尾、计算、精确度 |
平均一盘棋约 250-300 手,其中前 150 手决定了胜负的大局。
布局:30 步之后的规划
布局阶段的每一步棋,都在为几十手甚至上百手之后做准备。
比如,一个「三连星」布局:
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . ● . . . . . ● . . . . . ● . . .
. . . . . . . . . . . . . . . . . . .
...
这三颗黑子构成了一个「外势型」布局,其意图是:
- 不急于围地
- 等白棋进入后进行攻击
- 透过攻击获取实地或外势
- 最终在终盘实现优势
这个「计划」需要展望 50-100 手棋之后的局面。没有任何搜索算法能够看这么远。
中盘:局部与全局的平衡
中盘战斗是围棋最复杂的部分。棋手需要在每一步考虑:
- 局部计算:这个战斗谁会赢?
- 全局判断:值得在这里战斗吗?
- 次序选择:先走哪里最有效率?
- 放弃决策:什么时候该弃子转向?
一个典型的中盘决策:
「如果我在这里切断,对方会反击,我需要做活一块棋,这会让对方先手去占大场...最终我大概亏 5 目。但如果我先补强再切断,虽然损失先手,但...」
这种多层次、多维度的思考,需要同时处理局部和全局、短期和长期。
官子:精确计算与逆转
官子阶段看似简单——只是收尾。但实际上:
- 每一手的「目数价值」需要精确计算
- 先后手的差异可能决定胜负
- 「劫争」可以完全改变局面
职业棋手在官子阶段的计算精度可以达到 0.5 目,而一盘棋的胜负可能就差 1 目。
为什么看不远是致命的
让我们做一个简化计算:
- 一盘棋平均 250 手
- 要完美预测结果,理论上需要看完所有 250 手
- 即使分支因子降到 100(官子阶段),搜索空间也是 100^250 ≈ 10^500
这远远超出任何电脑的能力。
这就是为什么围棋 AI 必须学会「评估」局面,而不能只靠「计算」。
直觉的重要性:「这步棋感觉对」
人类棋手的思考方式
顶尖围棋棋手描述他们的思考过程时,经常使用这样的词汇:
"这步棋感觉对。"
"这个形状很舒服。"
"他的那块棋味道不好。"
"这里有一种说不出的危险感。"
这不是诗意的描述,而是真实的认知过程。人类棋手使用模式识别和直觉判断来处理围棋的复杂性。
模式识别:一秒钟看到重点
实验显示,职业棋手看一眼棋盘(不到 1 秒),就能:
- 识别出关键区域
- 发现可能的「好棋」
- 感知局面的大致形势
这种能力来自数万盘棋的经验积累,形成了「棋感」。
在 AlphaGo 之前的电脑围棋,最大的困难就是无法复制这种直觉。
直觉的数学描述
从机器学习的角度,人类的围棋直觉可以被理解为:
一个训练有素的大脑,能够根据棋盘局面,立即输出每个位置是「好棋」的概率分布。
这正是 Policy Network 要学习的东西——而这需要深度神经网络。
为什么被称为「AI 的圣杯」
棋类游戏的里程碑
人工智能的历史中,棋类游戏一直是重要的里程碑:
| 年份 | 事件 | 意义 |
|---|---|---|
| 1951 | 首个西洋跳棋程序 | 最早的游戏 AI |
| 1997 | 深蓝击败卡斯帕罗夫 | 暴力搜索的胜利 |
| 2007 | Checkers 被完全破解 | 完美信息游戏的极限 |
| 2016 | AlphaGo 击败李世乭 | 深度学习的胜利 |
为什么围棋特别
围棋被称为「AI 的圣杯」,因为它集合了所有困难的特性:
| 特性 | 围棋 | 西洋棋 |
|---|---|---|
| 状态空间 | 10^170 | 10^120 |
| 分支因子 | ~250 | ~35 |
| 平均手数 | ~250 | ~40 |
| 评估难度 | 极高 | 中等 |
| 直觉依赖 | 非常高 | 高 |
如果 AI 能解决围棋,意味着:
- 可以处理极大的搜索空间
- 可以学会抽象的评估
- 可以进行长期规划
- 可以形成「直觉」
这些能力远远超出「下棋」的范畴,是通用智能的核心特征。
学术界的预测
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 的突破,正是因为它用深度神经网络解决了评估问题,用蒙地卡罗树搜索解决了规划问题,用强化学习解决了超越人类的问题。
延伸阅读
- 下一篇:传统方法的极限 — 从 Minimax 到 MCTS,为什么都不够
- 技术细节:Policy Network 详解 — AlphaGo 如何学会「直觉」
- 回到总览:AlphaGo 完整解析 — 系列文章导览
参考资料
- Tromp, J. (2016). "Number of legal Go positions." — 围棋状态空间的精确计算
- Allis, L.V. (1994). "Searching for Solutions in Games and Artificial Intelligence." PhD thesis, University of Limburg. — 游戏复杂度的理论分析
- Müller, M. (2002). "Computer Go." Artificial Intelligence, 134(1-2), 145-179. — 电脑围棋的早期研究综述
- Silver, D., et al. (2016). "Mastering the game of Go with deep neural networks and tree search." Nature, 529, 484-489. — AlphaGo 原始论文