本页面已浏览279次
本章的第一部分中,Natasha将在DeepMind团队的帮助下,基于AlphaZero的思考过程,预测我们认为AlphaZero会怎么下,或者为什么那么下。在第二部分,Matthew会从另一个角度出发,也就是它和Stockfish对弈的棋局中得出观察。我们的目标是从两头出发,在中间会合:将我们的推断和预测与AlphaZero的实际下法结合起来。
其中提到了所谓“莫拉维克悖论”(Moravec' Paradox)。它说的是,在进行智力测试或者下跳棋时,计算机表现出成人水平不难;但是谈到认知和机动性时,很难或者几乎不可能让计算机和一个一岁的孩子相比。
哈撒比斯认为,表面上看确实如此。但是换个角度解释的话,这个悖论就不存在。那些“困难”的事情(比如下棋、数学和逻辑)需要人类“自觉”地花费很多时间和精力去学习;相反,那些我们认为“简单”的事情(比如图像识别)也需要我们通过多年的训练,只不过这样的知识是“隐形”的。
所以,这里的问题在于,编程本身就是一个困难的、有意识的行为。用编程解决AI问题,需要直接表述出某个AI问题的解(有时称为Good-Old-Fashioned AI,或者GOFAI
)。因此,GOFAI的做法能相对“容易”地实际解决那些我们能描述出解决方案的问题,也就是那么些“困难”的、我们明确知道怎么做的问题。但那些我们只是直觉上知道如何做的问题却很难写出一个精准的逻辑描述。
AlphaZero的表现让我们知道,即使是那些我们认为已经彻底了解其处理过程的任务——比如如何评估棋局优劣——我们也不过只是得到了我们大脑实际处理这样的局面并作出决定时的部分近似。
没有相关领域的知识是双刃剑。一方面,AlphaZero可能没有碰到一些特定局面也就得不到对应的结论;另一方面,却有可能发现全新的战略或者推翻一些成见。
在本章的后续,我们要在AlphaZero的对局中试图找到如下要点的证据:
因此,AlphaZero有可能错失一些必赢的残局。但这个问题不大,因为它应该已经将所有可能的残局都下了一遍了。
不过我们认为这对AlphaZero的下棋风格应该有影响。我们认为这也解释了为什么AlphaZero那么喜欢对王发起直接的进攻。由于缺少终局数据库,AlphaZero会认为,如果赢棋路线太深,那么就不是那么肯定的,于是就会选择更早的将死对手。
因此就有了如下的可能:
在此我们寻找如下理论的证据:
和一位严格的人类棋手一样,AlphaZero会选择最稳妥的赢棋路线而不是最精确的赢棋路线。
这就有点像人类棋手:“看上去我的机会不错——一定有什么好的下法”,而不用算到将死那一步。
换句话说,我们可以期待的是,AlphaZero会找出“容易下”的局面、或者那种给自己很多好的下法而让对方有充足的机会出错的下法。
有一个问题提到:如果手动加入一些特性(比如对局面、位置的判断)是不是会让引擎更加强大?回答是:这只会让训练速度加快,但长远来看不会有什么区别。
本节分两小节,分别是B1: AlphaZero的中局;B2:Alphaz的开局。
对局:就是要这么进攻,AlphaZero - Stockfish 8,伦敦,2018
1. Nf3 Nf6
2. c4 e6
3. Nc3 Bb4
4. Qc2 O-O
5. a3 Bxc3
6. Qxc3 a5
7. b4 d6
8. e3 Ne4
9. Qc2 Ng5
10. b5 Nxf3+
11. gxf3 Qf6
12. d4 Qxf3
13. Rg1
AlphaZero早早就弃了一个兵,保留了双象。
13. ... Nd7
14. Be2 Qf6
15. Bb2 Qh4
16. Rg4 Qxh2
17. Rg3 f5
18. O-O-O Rf7
19. Bf3 Qh4
20. Rh1 Qf6
21. Kb1 g6
22. Rgg1 a4
23. Ka1 Rg7
24. e4
AlphaZero又弃了一个兵,但是它的两个车控制了关键的g/h
两条半开放线,b2
象控制了大斜线,而且这条线上还有黑方两个大子。(这里白棋为什么不直接24. d4
?)
24. ... f4
25. c5 Qe7
26. Rc1 Nf6
27. e5 dxe5
28. Rhe1 e4
29. Bxe4 Qf8
30. d5
黑方终于摆脱了a1-h8
大斜线上的双重攻击。现在AlphaZero又似乎对g/h
线不感兴趣了,而是转而开始打开中心。
30. ... exd5
31. Bd3 Bg4
32. f3 Bd7
33. Qc3 Nh5
34. Re5 c6
35. Rce1 Nf6
36. Qd4 cxb5
37. Bb1 Bc6
38. Re6 Rf7
39. Rg1 Qg7
40. Qxf4 Re8
41. Rd6 Nd7
42. Qc1 Rf6
43. f4
白棋已经落后了三个兵!但是AlphaZero还不“满足”,它挺起了自己王翼最后的一个兵,一门心思地进攻黑方的王翼!
43. ... Qe7
44. Rxf6 Nxf6
45. f5 Qe3
46. fxg6 Qxc1
47. gxh7+ Kf7
48. Rxc1 Nxh7
49. Bxh7
黑棋已经不行了。AlphaZero在第67步赢下对局。
对局:AlphaZero在卡尔斯巴德兵型中的新做法,AlphaZero - Stockfish 8,伦敦,2018
1. d4 Nf6
2. c4 e6
3. Nc3 d5
4. cxd5 exd5
5. Bg5 c6
6. e3 Bd6
7. Bd3 O-O
8. Nf3 Re8
9. O-O Bg4
10. Qb3
白方在引诱黑方吃掉f3
马而造成白方叠兵,Stockfish在几步后决定这么做了。
10. ... Na6
11. Rfe1 Bxf3
12. gxf3 Rb8
13. Qd1 Nc7
14. f4 Be7
15. Qf3 Nd7
16. Bxe7 Rxe7
17. Qh3 Nf6
18. Kh1 Qd7
19. Bf5 Qd6
20. Rg1 Kh8
21. Bd3 Rg8
22. Qh4 Nce8
23. Rg5 h6
24. Rag1
AlphaZero达到了目的,g
线打开的直接后果就是黑方面临白方来自g
线的强烈攻势。AlphaZero很快在89步赢下了对局。可以看到,虽然AlphaZero愿意打开王翼的线路而进攻对面,但同时它很小心。gxf3
这一步虽然削弱了王翼兵型,但是也同时控制住了中心(比如e4
格),这样黑方没法调动子力到这一格从而对白王造成威胁。
AlphaZero进行过很多侧翼进攻,但在中心获得优势前从来不这么做。
我们可以在AlphaZero的下法中找到如下特征:牺牲子力以打开线路或斜线,而且都是非常长远的牺牲,没有什么立刻将死对手或者马上夺回子力这样的下法。
AlphaZero的公式是:
瞄着对方王的开放线+瞄着对方王的开放斜线+对方王空间受限=优势
对局:矩阵,AlphaZero - Stockfish 8,伦敦,2018
这一漂亮的对局中,AlphaZero一门心思地要打开线路和斜线。首先是王翼的突破。
38. f5 Bxd4
39. Bxd4 exf5
40. Qg1 b5
g1-a7
斜线出现了弱点。白方调动自己的白象和后以便充分利用这个弱点。
41. Bc5 Rg8
42. Qd4 Qe6
43. Bb4 Bd7
44. Bd2 Qc6
45. e6
只是控制g1-a7
斜线并不能让AlphaZero获胜,它还想要一条开放线,于是它决定弃掉e6
兵,让自己能在e
线叠车。
45. ... Bxe6
46. Be3 Ra8
47. Bf2 a5
48. Re2 Ra6
49. Rfe1 Re8
50. h6 Qd7
51. Qg7 Re7
52. Qf6 b4
53. Qd4 Qd6
Stockfish成功地阻断了e
线,并且防住了白后在g1-a7
大斜线上的几个入侵位置(a7
和b6
),但它的子力实在是太被动了。
54. Kb1 Qc7
55. Be3 bxa3
Stockfish决定打开b
线是很冒险的,但它有自己的战术,比如在56. bxa3
后,56. ... f4
,然后在白方的黑格象吃掉f4
兵后,黑后可以在b6
将军,并强行兑换掉白后。但是AlphaZero会不惜一切代价来保住白后。
56. Ka2 Ka8
20. Rb1 Qc8
21. c3
如果黑棋敢吃掉b2
兵,那么白方的e2
车就可以吃掉黑兵。白方居然立刻拿下了刚刚开放出来的b
线!简直就像变魔术一样!而黑方也不能通过...c3...Qb4
的下法来对白王进行攻击。
58. ... Rb7
59. bxa3 Rb3
60. a4
a4
这一步防止黑方对b3
车进行任何的加强。
60. ... Bd7
61. Rd2 Rxb1
62. Kxb1 Bxa4
63. Ra2 Qe8
64. Qxd5+ Bc6
65. Qc5 Qe4+
66. Ka1 Qh1+
67. Bg1 Qxh6
68. Rh2 Qe6
69. Be3 Qd7
70. Rd2 Qe8
黑棋又吃了一个白兵,但是它的a6
车被钉死了。接下来是一连串行云流水般的操作,白方利用b/d/e
三条开放线,不断调动子力,最终取胜。同时,请注意白方是多么注意自己王的安全!
71. Rd6 Kb7
72. Kb2 Qb8
73. Ka2 Qc8
74. Rd2 Qe8
75. Ka3 Ka8
76. Bg5 Qe1
77. Ka2 Qe4
78. Be3 Qe8
79. Rd6 Kb7
80. Ka3 Qh8
81. Bd4 Qe8
82. Rf6 f4
83. gxf4 Qd7
84. Rd6 Qc7
85. f5 Bd7
86. Qxc7+ Kxc7
87. Rxa6 Bxf5
88. Rf6 Bc2
89. Kb2 *