国际象棋
简体中文

国际象棋 › 认识国际象棋 ›

电脑国际象棋:从深蓝到 Stockfish 和 AI

电脑怎么下棋、深蓝怎么打败卡斯帕罗夫,以及现在的引擎为什么强到人类赢不了。

也叫:Computer chess、Chess engine、国际象棋引擎、深蓝、Deep Blue、Stockfish、AlphaZero

今天你在手机上就能和比世界冠军还强的电脑下棋,但这件事在几十年前还只是科学家的梦想。这篇从最早的纸上程序讲到深蓝、Stockfish 和 AI,也说说本站的电脑对手是怎么来的。想先和电脑过过招,可以直接免费下国际象棋。

从纸上程序开始

1950 年,美国数学家香农发表了一篇论文,第一次认真讨论“怎么让电脑下国际象棋”。他的思路是:把每一种可能的走法往后推几步,再给每个局面打分,选分数最好的那一步。这个思路直到今天仍是电脑下棋的基础。

差不多同一时期,英国数学家图灵也写好了一个下棋程序,可当时的计算机根本跑不动,他只好自己拿纸笔照着程序一步一步算,算一步常常要花半个小时。

深蓝战胜世界冠军

IBM 的深蓝(Deep Blue)是一台专门为国际象棋打造的计算机。1996 年它第一次挑战世界冠军卡斯帕罗夫,虽然赢了一局,整场比赛还是以 2 比 4 落败。1997 年升级后再战,深蓝以 3.5 比 2.5 获胜,这是电脑第一次在正式的对抗赛中打败现任世界冠军。

决胜的第六局,卡斯帕罗夫执黑下卡罗-卡恩防御,在第七步走错了次序:

黑方走 h6 想赶走马,深蓝却直接把马送到 e6。黑王被困在中心,再也没有机会易位。

这个弃马在开局理论里早就有人研究过,黑方次序一错,白方就能用一个马换来持久的攻势。黑方虽然多了一个马,但王一直挨打,只走到第 19 步就认输了:

卡斯帕罗夫在这里认输。白方的后、车、象全都瞄准黑王,黑方的马随时会被吃掉。

电脑怎么下棋

往后算:搜索

电脑会把“我走这步、对方应那步、我再走……”全部列出来,像一棵越长越大的树。好的引擎会先剪掉明显不好的分支,把时间花在有希望的走法上,所以一秒钟就能看完几千万个局面。

打分:评估

算到一定深度就得停下来,给那个局面打分:谁的子多、王安不安全、兵形好不好、棋子活不活跃。分数通常以“兵”为单位,+1 表示白方大约有多一个兵的优势。

直接查答案:残局库

棋盘上只剩七个子以内时,电脑不用算:所有局面的结果早就算好、存成了数据库,叫做残局库。本站残局文章里的胜负,就是用残局库确认的。

AlphaZero 和神经网络

2017 年,DeepMind 的 AlphaZero 只知道规则,靠自己和自己下了几百万盘棋,几个小时就学到超越当时最强的引擎。在一场 100 盘的对战里,它赢了 28 盘、和了 72 盘,一盘都没输。

AlphaZero 的棋风很像人:愿意为长远利益弃子,喜欢把棋子放到活跃的位置。后来开源的 Leela Chess Zero 用同样的方法重做了一遍,让所有人都能用上。

Stockfish:目前最强的引擎

Stockfish 是一款免费、开源的引擎,由全世界的志愿者一起改进。从 2020 年起,它在传统搜索之外加入了小型神经网络来评估局面,变得更强。现在它是电脑对电脑比赛的常胜将军,棋力远远超过任何人类棋手。

下得像人的 AI:Maia

最强的引擎对新手来说没什么用:它太强了,而故意放水时又会走出人类不会走的怪棋。多伦多大学的研究团队做了 Maia,用大量真人对局来训练,目标不是赢棋,而是猜“这个等级分的人在这里会怎么走”。所以它会犯和真人一样的错误,下起来更自然。

本站的电脑对手

本站的四个难度正好用上了这两种 AI:入门、中级、高级由 Maia 担任,大师级是 Stockfish。它们都在你的浏览器里运行,不需要连接服务器。各难度大约相当于多少等级分,可以看等级分与称号;怎么选难度,可以看电脑对手与难度。

常见问题

现在还有人能打败最强的电脑吗?

在正常对局里几乎不可能。顶尖引擎的棋力远远超过世界冠军,就算是特级大师,能和它下成和棋就很了不起了。

职业棋手怎么用电脑?

主要用来准备开局、复盘自己下过的棋。正式比赛中,对局时使用电脑属于严重作弊,会被取消资格。

深蓝后来怎么样了?

1997 年的比赛之后,IBM 就让深蓝退役,再也没有参赛。它的其中一个机柜后来被博物馆收藏。

动手试试

想体验被引擎压着打的感觉,就去国际象棋人机对战选大师级;想下得轻松一点,选入门或中级,看看模仿真人的 AI 会犯哪些错。

开一盘棋练习