圍棋為什麼難?
在 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 原始論文
本文重點:
- 圍棋的狀態空間達 10^170,是宇宙原子數(10^80)的 10^90 倍,暴力搜索在物理上不可能
- 圍棋每步平均有 250 種選擇(分支因子),遠高於西洋棋的 35,導致搜索樹爆炸性增長
- 圍棋沒有簡單的棋子價值,「厚勢」「外勢」等抽象概念難以量化,傳統評估函數無法處理
常見問題
為什麼圍棋的狀態空間比西洋棋大這麼多?
圍棋棋盤有 361 個點(19x19),每個點可以是空、黑或白三種狀態。而且圍棋棋子落下後不會移動(除非被提),導致可能的局面組合遠超西洋棋(64 格,棋子會移動)。
為什麼深藍的暴力搜索方法在圍棋上失敗?
深藍靠每秒評估 2 億個局面來下西洋棋。但圍棋的分支因子(250)遠高於西洋棋(35),同樣深度的搜索需要評估的節點數相差數億倍,沒有任何硬體能彌補這個差距。
為什麼圍棋被稱為「AI 的聖杯」?
圍棋結合了所有困難特性:極大的狀態空間、高分支因子、難以量化的評估、需要長期規劃。能解決圍棋意味著 AI 具備處理極複雜問題、學會抽象評估、形成「直覺」的能力,這些是通用智能的核心特徵。