如果你只能看一条讲“人工智能如何思考”的视频,这条可能比绝大多数 AI 科普更值得:它没有聊天机器人,没有神经网络黑话,而是从零开始、在屏幕上把一台“会下国际象棋的程序”一行行造出来。整个过程像一场直播解剖——先让程序懂规则,再教它向前看,然后一层层给它装上剪枝、排序、评估、防诈这些真实引擎赖以生存的器官。看懂这条视频,你不仅明白了 1997 年“深蓝”为什么能赢卡斯帕罗夫,还会带走一套可以迁移到日常决策与性能优化上的通用思维模型。本文按视频的叙事顺序逐层拆解,补上它背后的真实学术脉络,并指出哪些说法被简化、哪些地方值得你亲自上手验证。
| 项目 | 内容 |
|---|---|
| 视频标题 | Coding Adventure: Chess(编程冒险:国际象棋) |
| 频道 | Sebastian Lague(独立游戏开发者、编程可视化频道) |
| 发布时间 | 2022年5月(据频道页面) |
| 播放量 | 数百万级,为该频道最受欢迎的节目之一(据频道页面) |
| 技术栈 | C# / Unity,配套代码在 GitHub 开源 |
| 时长形态 | 约25分钟的可视化长文式讲解,全程手写代码+实时演示 |
注:本视频发布时间与播放量为据频道页面及公开报道整理的历史数据,发稿时未能实时联网二次核验,精确数字请以频道页面为准。
这条视频的魅力在于它不告诉你“AI 很厉害”,而是把“为什么程序下棋必须这么设计”按因果链一步步逼出来。整条视频的叙事可以还原为六步,每一步都是为了解决上一步暴露出的致命缺陷。
视频开篇没有谈任何“智能”,而是处理最枯燥的问题:程序怎么知道马怎么走、王车易位什么时候合法、吃过路兵和兵升变怎么处理。这是整个工程的地基。这里藏着一个常被忽略的洞见:在机器眼里,“会下棋”和“懂规则”是两件事。走法生成器必须对棋规做到百分之百正确——一个漏掉的将军判断会让后面所有搜索全盘皆错。视频作者在这里花的时间比观众预想的多得多,而这恰恰是所有棋类引擎开发者的真实体感:国际象棋编程社区(ChessProgramming Wiki)把“走法生成”列为引擎工程的第一大坑,因为易位、牵制、双将这些边界情况极多。这一段对普通程序员的启示很直接:任何“智能”系统,底下都垫着一层必须死磕正确性的平凡代码。
规则就位后,视频引入第一个“智能”组件:与其让程序背棋谱,不如让它向前看几步。这就是极小极大(Minimax)搜索——源自冯·诺伊曼 1928 年的博弈论定理:轮到我时,选对我最好的走法;同时假设轮到对手时,他会选对我最坏的回应。视频用可视化把“两层、三层、四层……”的搜索树长出来,观众能直观看到分支的指数爆炸:国际象棋平均每个局面约有 35 种合法走法,向前看 6 层就是 35 的 6 次方,约 18 亿个局面;向前看 10 层则彻底不可计算。香农在 1950 年的经典论文里估计国际象棋博弈树复杂度约 10 的 120 次方——这就是著名的“香农数”,比可观测宇宙的原子数还多。视频在这里完成了第一个关键转折:暴力搜索在数学上注定失败,聪明必须花在“少搜一点但结论不变”上。
视频的重头戏是 α-β 剪枝。它的直觉可以一句话说清:如果你已经确认 A 走法能让你稳赢,那么当分析 B 走法时发现对手有一手让 B 比 A 更糟的回应,你根本不需要继续分析 B 的后续变化——这个分支无论再怎么发展都不可能改变最终决策,可以直接扔掉。关键在于这是严格数学意义上的“不看”:剪掉的部分永远不会影响最终结论,搜索结果与不剪完全一致。理论分析表明,若走法排序完美,α-β 能把搜索量从分支因子的 d 次方降到约 d/2 次方——同样的时间,向前看的深度翻倍。而“排序完美”不可能达到,所以视频顺势引出下一个工程细节:先搜索看起来最强的走法,剪枝才最容易触发。这就是“走法排序”(如优先尝试吃子、先尝试上一层搜出的最佳走法),也是为什么现代引擎要维护置换表:上一层搜索的记忆能帮下一层把好走法排在前面。视频把“剪枝”和“排序”讲成一对共生体,这是整条视频信息密度最高的部分。
搜索树展开到深度限制后,叶子节点的局面必须变成一个数字,程序才能比较优劣。视频展示的评估函数朴素得惊人:子力价值(兵1、马3、象3、车5、后9这套经典赋值来自几个世纪的欧洲棋理传统)加上“走子方格表”(Piece-Square Tables)——给每个棋子按所在格子的不同打分,比如中心兵比边线兵值钱、王在残局该走出来。作者参考了国际象棋编程社区公开的走子方格表方案(其开源代码标注参考了 PeSTO 这类现代评估表),几十行代码就让程序呈现出“棋感”:主动抢中心、开局王不乱动。这里有一个深刻的认知点:引擎的“性格”与“棋风”几乎完全住在评估函数里,搜索只是忠实的执行者。人类大师所谓“局面嗅觉”,在机器里被显式建模成一张张打分表。
视频没有停在“能下”的层面,而是继续修两个真实引擎都会遇到的经典缺陷。第一个是“水平线效应”:如果搜索刚好在第 6 层停下来,而第 7 层你的后被吃,程序看到的评估完全是错的——它以为自己赚了,其实灾难在视野边缘。解决方案是静态搜索(Quiescence Search):到达深度限制后,继续把尚未结束的吃子、将军序列搜完,直到局面“安静”下来才评估。第二个是时间管理:竞赛对局里引擎每步只有固定秒数,搜到第几层事先不知道。迭代加深(Iterative Deepening)的方案是先搜 1 层,再搜 2 层、3 层……时间一到就用最后完成的完整结果,同时上一层的结果还能反哺下一层的走法排序。视频在这一段完成了一次漂亮的元演示:好的工程不是一步设计对的,而是在对抗性环境里被失败逼着长出来的。
视频结尾,作者没有宣布“我的 AI 很强”,而是把引擎接入 Stockfish(当今最强开源引擎)做限制强度对弈,用胜负记录粗略反推自己程序的 Elo 等级分。这是整条视频最值得工程师学习的习惯:给智能定一个单一、可测、有公认刻度的指标。Elo 制度由物理学家阿帕德·埃洛设计、1970 年被国际棋联采用,它让“强多少”变成可量化的数字,也让作者能冷静地说出“我的引擎大约在这个水平”,而不是表演性的惊叹。
这条视频表面上是一堂编程课,实际上浓缩了人机博弈七十年的整条主线,每一段都能对应到真实的研究与工程史。
博弈论地基(1928):冯·诺伊曼发表极小极大定理,从数学上证明有限两人零和博弈存在最优策略。极小极大搜索不是启发式技巧,而是有定理背书的“正确答案的形状”。
香农纲领(1950):克劳德·香农发表论文《Programming a Computer for Playing Chess》,首次系统提出机器下棋的完整框架,并区分了两条路线——Type A 依赖深度搜索加简单评估,Type B 做选择性搜索只算“像人一样重要的分支”。视频里造的引擎是教科书式的 Type A。香农同时给出了 10^120 的博弈树复杂度估计,为“为什么需要剪枝”提前七十年做了数学铺垫。
图灵的纸上机器(1948–1952):图灵设计了著名的 Turochamp 程序,但当时没有机器能运行它,图灵只能自己当 CPU 手工执行每一步。这段历史说明:下棋程序的算法设计甚至早于硬件可用。
α-β 的集体诞生(1958–1963):剪枝思想由纽厄尔、西蒙等人在 1950 年代末提出,麦卡锡给它起了名字,爱德华兹与哈特在 1963 年给出严格分析并证明其最优情形复杂度。这是“多个团队独立发现同一算法”的经典案例。
从 Chess 4.x 到深蓝(1970–1997):1970 年代西北大学的 Chess 4.x 系列统治早期计算机象棋锦标赛;肯·汤普森(Unix 之父之一)的专用硬件引擎 Belle 在 1983 年率先达到大师级。1997 年 5 月,IBM 的深蓝在纽约复赛中以 3.5:2.5 击败世界冠军卡斯帕罗夫——此前 1996 年它曾 2:4 落败。深蓝是一台配备 480 片定制象棋芯片的超级计算机,每秒评估约 2 亿个局面。深蓝本质上正是视频里这条“搜索+评估”技术树推到工业极限的产物,这就是为什么看懂这条视频,你基本看懂了深蓝。
置换表与 Zobrist 哈希(1970):阿尔伯特·佐布里斯特提出的随机数异或哈希方案,让引擎能用 O(1) 时间识别重复局面,是现代引擎置换表的基础。视频演示迭代加深时吃到的红利,正是这类结构带来的。
AlphaZero 与 NNUE(2017–2020):DeepMind 的 AlphaZero 用蒙特卡洛树搜索加自我对弈强化学习,在 2017 年的百局对抗中击败 Stockfish 8(28 胜 72 和 0 负),证明“几乎不喂人类棋理”也能登顶。随后 Stockfish 社区吸收了源自将棋的 NNUE 技术(用极小神经网络增量更新评估),传统 α-β 框架与神经网络评估合流至今。视频未覆盖这部分,但它回答了一个自然疑问:α-β 骨架至今没死,只是评估函数换了大脑。
证据充分的部分。视频讲解的算法序列——走法生成、极小极大、α-β、走法排序、迭代加深、静态搜索——与国际象棋编程社区公认的引擎架构及大学算法课程内容完全一致,不存在为了节目效果编造的“私货”。配套代码开源,读者可以逐行验证。α-β 剪枝“剪掉不影响结论”的数学性质、香农数、深蓝 1997 年的赛果,均为学界与档案记录明确的事实。
被简化或需要折扣的部分,主要有五处。
其一,等级分估计的统计效力有限。几十局的限制强度对弈所得 Elo 置信区间相当宽,视频里报出的数字只能当量级参考,不能当精确标定。正式引擎测试(如 CCRL 榜单)需要数千局才能区分小差距。
其二,“向前看 N 步”的直觉容易误导。实际搜索深度受时间预算、剪枝效率、置换表命中率的强烈影响,“20 步以外”这类说法在不同引擎、不同局面下差异巨大,普通观众容易把它理解成确定能力。
其三,评估函数被大幅简化。走子方格表只编码了最静态的位置知识,人类大师赖以生存的兵型动力学、王安全、子力协同等概念在这套评估里几乎不存在。视频引擎的“棋感”是真实效果,但其天花板远低于它给人的印象。
其四,视频没有覆盖现代引擎近半的技术版图:置换表细节、空着裁剪、null-move 剪枝、开局库与残局表、以及最重要的 NNUE 神经网络评估。把它当入门地图极好,当引擎设计手册则不够。
其五,AlphaZero 路线的暗示需要限定条件。“更少人类知识也能碾压”在 2017 年为真,但代价是海量 TPU 自对弈;这与视频“一台笔记本就能从零学会”的朴素叙事属于两个世界,混为一谈会得出错误结论。
启示一:把“搜索×评估”当成通用决策框架。这条视频给出的不只是棋类算法,而是一切对抗性决策的骨架:枚举选项(走法生成)、推演双方最好与最坏的应对(极小极大)、果断放弃不会改变结论的支线(α-β)、给每个结局打分(评估函数)。你可以把它直接迁移到谈判准备、架构选型甚至求职决策上——先列出对方的“合法走法”,假设对手不犯傻,问自己“如果对方出最强的那一手,我的这个方案还成立吗”。这正是极小极大在日常生活中的用法。
启示二:先定刻度,再做优化。视频结尾用 Elo 验收棋力的做法,是所有性能与效果优化的元方法:在动手加速或调参之前,先给自己定一个单一、可测、有公认刻度的指标,否则一切“优化”都只是感觉。工程史反复证明,可测量性比聪明更稀缺。
启示三:一个周末就能复刻的动手路径。如果你想把这 25 分钟变成真本事,最短路径是:装 python-chess 库接上 Stockfish 跑通一盘人机对弈(一小时),然后照视频思路自己写一个四子棋的 negamax,再加 α-β 和简单评估(一个下午),最后与不加剪枝的版本对比搜索节点数(半小时)。亲手看到节点数从千万级掉到万级的那个瞬间,你对“算法复杂度”的理解会永久升级。视频配套的 C# 代码仓库也是极好的进阶读物。
flowchart TD
A[问题:机器如何下棋] --> B[第一步:规则工程<br>合法走法生成]
B --> C[第二步:向前看<br>极小极大搜索]
C --> D{致命缺陷:指数爆炸<br>分支因子≈35,香农数10^120}
D --> E[第三步:α-β剪枝<br>不看无关分支]
E --> F{新依赖:剪枝需要好顺序<br>→ 走法排序+置换表}
F --> G[第四步:评估函数<br>子力价值+走子方格表]
G --> H{缺陷1:水平线效应<br>→ 静态搜索补完吃子链}
F --> H
H --> I{缺陷2:时间预算<br>→ 迭代加深+结果复用}
I --> J[第六步:验收<br>与Stockfish对弈反推Elo]
J --> K[结论:棋力=搜索效率×评估质量<br>深蓝与Stockfish是同一棵树]
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
