今天你在手机上就能和比世界冠军还强的电脑下棋,但这件事在几十年前还只是科学家的梦想。这篇从最早的纸上程序讲到深蓝、Stockfish 和 AI,也说说本站的电脑对手是怎么来的。想先和电脑过过招,可以直接免费下国际象棋。
从纸上程序开始
1950 年,美国数学家香农发表了一篇论文,第一次认真讨论“怎么让电脑下国际象棋”。他的思路是:把每一种可能的走法往后推几步,再给每个局面打分,选分数最好的那一步。这个思路直到今天仍是电脑下棋的基础。
差不多同一时期,英国数学家图灵也写好了一个下棋程序,可当时的计算机根本跑不动,他只好自己拿纸笔照着程序一步一步算,算一步常常要花半个小时。
深蓝战胜世界冠军
IBM 的深蓝(Deep Blue)是一台专门为国际象棋打造的计算机。1996 年它第一次挑战世界冠军卡斯帕罗夫,虽然赢了一局,整场比赛还是以 2 比 4 落败。1997 年升级后再战,深蓝以 3.5 比 2.5 获胜,这是电脑第一次在正式的对抗赛中打败现任世界冠军。
决胜的第六局,卡斯帕罗夫执黑下卡罗-卡恩防御,在第七步走错了次序:
这个弃马在开局理论里早就有人研究过,黑方次序一错,白方就能用一个马换来持久的攻势。黑方虽然多了一个马,但王一直挨打,只走到第 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 会犯哪些错。