Skip to content
和电脑下象棋:AI 对手、难度选择与如何借此提高

和电脑下象棋:AI 对手、难度选择与如何借此提高

怎样挑一个真能教会你东西的机器对手,以及 AI 对手的短板在哪

Matthew Leroy1 min

可以和电脑下象棋吗?

可以,而且现在这已经是最常见的下棋方式。机器对手随叫随到,任何时间都在,强弱由你选,不会下腻了就跑,也不会中途掉线。对新手来说,它消除了开始下棋最大的障碍:怕浪费高手的时间。对有一定水平的人来说,它提供了人给不了的东西——一个愿意把同一路开局陪你重下四十遍还不抱怨的陪练。电脑给不了的是真实对局的心理质感:时间压力、同样紧张的对手、因为被人盯着而走错的那一手。大多数人最后两样都做:用电脑练,用人来比。想立刻和一个与你水平相当的对手下一盘,请打开 Xiangqi One。

AI 对手和引擎有什么区别?

这个区别比听上去重要得多。引擎是为了尽可能快地找出客观最强着法而写的程序;开源象棋引擎的领头羊皮卡鱼就是一个,我们的皮卡鱼完全指南讲了它具体做什么。AI 对手则是为了在某个指定水平上下棋而做的,这是完全不同的目标。你没法靠让引擎少想一点就做出好的对手——被削弱的引擎会精彩地走六步,然后突然白送一个车,那种感觉是随机,而不是「可以战胜」。好的机器对手是设计出来的:以引擎的评估为底,再叠加一套有意为之的策略,规定它该犯哪些错、犯多频繁。我们在我们如何平衡机器对手难度一文中写清了自己的做法。人机对弈时,你想要的几乎永远是一个调校过的对手,而不是降了力的引擎。

难度应该怎么选?

好用的准则是:选那个让你大约输掉三分之一对局的难度。在这个区间里,错误出现得足够频繁能教会你东西,又不至于频繁到每盘棋在变得有价值之前就崩掉。如果你几乎全胜,你只是在复习已经会的东西;如果你几乎全负,你根本分不清哪一个决定才是输棋的那一个。两个习惯能让选择更容易。第一,胜率一旦超过大约三分之二就往上调,别赖在舒适区。第二,把状态差的一晚当成噪声——一个晚上连输不是降难度的信号。另外要注意,机器对手显示的等级并不是竞技意义上的等级分,两者的关系相当松散,我们的象棋等级分详解解释了在线分与官方分为什么会差那么多。

和 AI 下棋真的能提高吗?

能,但只对某些方面有效。机器对手非常适合练开局,因为你可以把同一个局面重下到计划变成本能;也非常适合练战术,因为一枚没保护的子它每次都会吃,而人可能看漏。它同样适合练残局技术,因为你可以摆好一个局面反复磨,不需要人陪。机器对手帮不上忙的是针对真人思路的战略谋划,因为它没有可供你读取的计划,也没有可供你利用的习惯。只和机器下的人,往往算得清楚而对全局节奏感觉迟钝。解决办法不是不下机器,而是交替着来,并且输了之后先复盘再开下一盘——我们的象棋提高指南给了一套实用的流程。

机器对手有哪些短板?

三点,知道了就不会总结出错误的经验。第一,被削弱的对手失误分布不均:很多时候它下得近乎完美,然后突然来一手灾难性的着法,于是你赢了却以为是自己的计划奏效,实际上是它把棋送给了你。第二,机器不会虚张声势,也不会搏实战机会——人在劣势时会把局面搅浑然后指望对方出错;机器只会走客观最优的一手,然后认命。你永远学不会如何应对困兽之斗。第三,机器没有人类意义上的开局体系偏好:它不会反复用同一路,所以你没法像对付棋友那样提前准备。这些都不意味着人机训练没有价值,但它意味着赢机器这件事,作为「你进步了」的证据,比赢同水平的人要弱。我们的新手常见错误讲了那些机器会毫不留情地惩罚的错误。

最强的象棋 AI 有多强?

远远超过任何人类,而且差距并不接近。现代象棋引擎在普通硬件上就已经超过了世界顶尖棋手的水平,在强硬件上更是压倒性的——这一幕和国际象棋当年发生的事情相似,只是来得更晚、推进得更快。领头的开源引擎是皮卡鱼(Pikafish),它把 Stockfish 的架构移植到象棋上,把深度搜索和训练好的神经网络评估结合起来。实际含义是:任何开到满力的引擎,你都赢不了,而任何让你觉得「有机会赢」的产品,都是在刻意留手。这不是批评:一个你永远赢不了的对手,什么也教不了你。我们的象棋 AI 引擎概览把皮卡鱼放在其它选择旁边做了对比。

离线下还是联网下?

离线和电脑下,意味着对手直接跑在你自己的设备上。飞机上能下,隧道里能下,不用注册账号,你下的任何内容都不会传到别处。限制来自设备本身:手机搜索不了台式机那么深,所以最高的几个难度在不同硬件上表现并不一致。联网下则是把计算放在服务器上,无论你手里拿的是什么设备,强度都一致,而且通常能让你的对局、等级和分析跟着你在设备之间流转。代价是需要网络,而且每一步都有延迟。日常训练两种都可以;如果要针对同一批局面反复认真地练,离线通常更舒服,因为落子是即时的。我们的在线下象棋指南比较的是各个平台本身。

下完之后要复盘吗?

要,而且绝大部分价值其实就在这里。下完一盘立刻再开一盘,学到的东西很少;下完花五分钟找出评估值发生转折的那一手,学到的东西就很多。你不需要深入读懂引擎输出——你需要找到那一步让你从「还行」变成「变差」的着法,然后问自己漏看了什么。仅这一个习惯,就区分开了会进步的人和只是在攒对局数的人。大多数工具都会给你一张评估曲线,那个陡降处就是你的功课。但别矫枉过正:引擎会把一些任何人都找不到的着法标成不精确,按机器的标准去追求完美既让人泄气也没有产出。我们的象棋 AI 引擎概览讲了怎么读评估值而不被它牵着走。

从哪里开始

起点要比你的自尊心建议的更低。先在一个你觉得能轻松取胜的难度上下五盘,只有在赢得干脆利落之后才往上调——目的是养成把棋下完的习惯,而不是证明自己的水平。然后停在那个让你大约输三分之一的难度上,一直待到胜率上升为止。如果你完全是新手,先把走法学会:我们的象棋入门完全指南一步步讲规则,而中国象棋规则大全在你需要查具体某一条时随时可用。准备好了就打开 Xiangqi One挑一个对手。其余的实用指南都在教程分类里。

继续阅读