给大学生们的一堂课:国际象棋与AI(2)
原本我把稿件都交给了塔尔老师,他说太长,分两讲登出来。他又找了特别几张珍贵的图片(比如那张1950年的图片)加上去。
结果第一讲一登,很多人都问我关于那盘电脑之间的残局是怎么回事?我在文章中叙述的过于简单了,没有满足大家的好奇心。
我晚上正好有课,我就讲给了大学生听,讲完问他们听懂没(我讲课最怕的是我讲的眉飞色舞,但学生没听懂),他们都表示听懂了,还给了我掌声,谢谢可爱的同学们(
其实我想说句老实话,我现在知道电脑的走法了,知道答案了,我跟你们讲的头头是道。如果我不知道答案,我仅仅知道电脑选择少一个兵的走法来取胜,你让我按电脑的思路走下去,我能赢吗?我真的能赢吗?不好意思,老师的水平一般般,理论和实战有一定的差距。但有一点,经过学习之后,理解并明白了电脑的思路,原来如此!
2020年4月3日,电脑国际象棋锦标赛上,在Stockfish和Komodo之间上演了一场精彩的残局。时限是每方10分钟,每步加5秒。
左上图是昨天跟大家分享的图,电脑走到第96回合的局面。然后双方又走了:97.Bc4 Bc8 98.Bd3 Bb7
注意,此时又回到这个局面。有时我觉得电脑也挺可爱,它也在试探看看对手会不会犯错?或者一时还看不清楚应该怎么下?我用我电脑上的Stockfish分析软件,它给出的走法是:Be2,白稍优,但如何赢棋也搞不清楚。我的电脑不灵,硬件不够强大,软件带不动。
接下来,右上图:99.Bf5!! 电脑开始出着!就是我昨天写的,在计算了三个兵不好赢棋之后,它果断地送了一个兵,形成两只兵对抗三只兵的情况。
现在是个Zugzwang的局面(指对方没有有效着法),黑方除了99...Bxd5之外已无其他走法,退王的话被白王入侵,退象则被白象攻击a6兵。大家再往下看:100.Bd3 Bb7,你们会不会觉得很有意思,看图说话:
左上图,这是在100步之后的局面,是不是和上面的区别就是d5兵的存在与否。好像又回到原点,白方放弃了d5兵。为什么呢?
看看右上图,这就是答案:白方认为,在d5白兵的妨碍之下,白王没办法入侵(b5和c5两个点都进不去)。但如果放弃d5兵,白方就有了进攻a6兵的机会。a兵是远方通路兵,是赢棋的机会。
我把后面的走法贴出来,你们慢慢体会:101.Bc4 Kg6 102.Be2 Bc8 103.Bf3! Bf5 104.Ke3 Bc8 105.Kd4 Bg4 106.Be4+ Kf7 107.Bd3! Ke8 108.Bxa6 Kd8 109.Ke4 Kc7 110.Bb5 Kb8 111.Kf4 Kc7 112.Be8 d5 113.Ke5 Bf3 114.Bb5 Kb7 115.Kd6 Kb8 116.Kc6 Ka7 117.Bd3 Kb8 118.Kb6 Be4 119.Bb5 d4 120.a6 d3 121.a7+ Ka8 122.Ba6 d2 123.Be2 d1N 124.Bxd1 Bb7 125.Bxh5 Bc6 126.Bd1 Bh1 127.h5 Bg2 128.h6 Bh1 129.h7 Bd5 130.h8Q+ Bg8 131.Qxg8#
云里雾里看完之后,是不是跟我的感觉一样,好像知道答案,但实战中真不一定能走成赢棋。中间的变化太多,N多的等着以及为什么,烧脑的思考会把你搞昏。电脑不依不饶地走了131步!
所以我们看现在电脑的比赛,大家都感慨:神仙打架!我好歹有几十年的功力,看得懂。如果屏幕前的你看懂了,恭喜你,你和我一样,算是资深棋迷了!
我回想起1996年,电脑也有失误的时候。
人机大赛深蓝与卡斯帕罗夫第5局的较量,看看这盘残局。
目前局面黑方稍好一点,卡斯帕罗夫提出和棋。深蓝也意识到了这一点,并显示了-0.10至-0.15(电脑显示负数的时候指黑方略优),但比赛顾问本杰明拒绝这一提议。他说我们是科学家,想继续这项实验。其实他们在等待看看人类的世界冠军会不会犯错。
我们不知道卡斯帕罗夫是不是被激怒了,他开始在王翼发起进攻。他说:"我很累,我想为最后一场比赛节省体力。所以我提出了和棋。当然,我看到了一个充满希望的、积极的延续着法。现在对手逼我进攻。感谢对手。"
Deep Blue - Garry Kasparov
Philadelphia (5), 16.02.1996
25.Rd1?
这步棋带来d线马被牵制的麻烦。较合理的着法是25.g3,在黑方Rc8 26.Qe3之后,仍是均势。
25...Be6 26.Qe3
深蓝始终没有意识到d线上哪怕很小的危险。
26...Bf7 27.Qc3
后只是漫无目的地走动。
27...f4
深蓝现在知道有大麻烦了。
28.Rd2 Qf6
一个新的牵制。
29.g3 Rd5
赛后卡斯帕罗夫说必须马上走28...Rd5,以免在29.Ne2 Rxd2 30.Qxd2 Qa1+ 31.Nc1白方寻求和棋的机会。
30.a3
以下变化黑方可以获得简单赢棋:30.gxf4 Qxf4 31.Qe3 Rg5+ 32.Kh1 Qg4 33.Qg3 e3 34.Qxg4 Rxg4 35.Re2 exf2 36.Rxf2 Rxd4
30...Kh7 31.Kg2 Qe5
32.f3
深蓝向它的运营商展示了各种变化,皆为黑方胜势。它尽量给黑方制造阻力。在评论大厅里,我们看到各种分析,但是,没有机会了
△32.gxf4 Qxf4 33.Qe3 Rg5 34.Kf1 (34.Kh1 Qg4 35.f3 (35.Qg3 e3 36.fxe3 Qe4+ 37.Qf3 Bd5 38.Qxe4+ Bxe4+ 黑胜) Qxh2 35.Qxe4+ Bg6 36.Qe3 Rg4 37.Rd1 Qg2+ 38.Ke1 Re4黑胜;
△32.b4 e3 33.fxe3 fxe3 34.Rd3 Qe4+ 35.Kg1 e2 黑胜。
32...e3 33.Rd3 e2 34.gxf4 e1Q 35.fxe5 Qxc3 36.Rxc3 Rxd4
多子足以取胜。
37.b4 Bc4 38.Kf2 g5 39.Re3 Rd2+ 40.Ke1 Rd3 41.Kf2 Kg6 42.Rxd3 Bxd3 43.Ke3 Bc2 44.Kd4 Kf5 45.Kd5 h5
黑方获胜。
进入2000年,电脑以一日千里的速度在进步。以下我们来欣赏来自2020年2月18日万亿节点(Trillion-Node)比赛的加赛,由电脑软件Lc0执白对电脑软件Stockfish。这是两款当今世界最高水平的软件,之前它们12盘对局全部以和棋告终,这盘棋成为本次比赛唯一一盘分胜负的对局(参考“Leela和它的朋友们“公众号)
1. Ne6!!
电脑的想法不可思议!Lc0这步棋有双重威胁:一方面威胁2. Bxc4 bxc4 3. Bxe5得子;或 2. Bxc4 Nxc4? 3. Qh5!
3…gxh5 4. Rg7+ Kh8 5. Ng5 hxg5 6. Rxg5+ Kh7 7. Rxh5+ Kg8 8. Rh8 将杀。另一方面威胁2. Ng5+ hxg5 3. Rxg5以及4. Qh5+构杀。
如果黑棋用兵吃马,走1. ...fxe6。那么接下来将是2. fxg6+ Nxg6 (2...Kg8 3.Bxc4 Nxc4 4.Qh5 Rf8 5.Rf1白胜) 3. Rxg6!
3...Kg6(3...Rg8 4.Rxg8 Rxg8 5.Qd3+ Rg6 6.h4 h5 7.c3! 白胜)4.Qg4 Kh7 (4...Kf6 5.Rf1+) 5.Qe4 Kg8 6.Qg6 Kf8 7.Qh6 Kg8 8.Qh8 Kf7 9.Qg7 白方将杀。
因此Stockfish明知是陷阱,却不得不接受威胁巨大的e6弃马。实战中黑棋只能用车吃马1….Rxe6。在2. fxe6后,Lc0得到了子力优势,然而电脑的顽强超乎人的想像,直到第100回合,Lc0获胜。
神仙打架的例子还有很多,如果你有兴趣,请关注电脑国际象棋锦标赛。
我们原本第二讲的内容,现在推到第三讲了,敬请期待!
点按“阅读原文”,可参与留言互动。
相关阅读