首发于远东轶事

第四局AlphaGo败招的分析

第四局李世石的78手L11挖被大家誉为“神之一手”,在DarkForest的策略网络输出里排第31位,而J11靠排第10位。因此我觉得可能是AlphaGo没有算到这一步。如果对方下了一手机器没算到的棋,则蒙特卡罗(MCTS)搜索树会清空,然后重新开始搜索,不应该会太快做出结论。李喆六段告诉我K10这一手是秒下,那有可能是时间管理子系统在搜索树清空时有程序上的漏洞,因此过早地将搜索结果返回了。MCTS在一开始搜索的时候,因为模拟次数不够多,每步的胜率方差非常大,所以返回一个不够好的着法如K10是很正常的(在DarkForest里面这着排在前四)。这个比较容易修正。

另一种可能是,AlphaGo的估值网络出了问题。因为估值网络的权重是0.5,而不管快速走子从一个局面开始重复了多少次,它的权值也是0.5。对于一个局面,估值网络只得到一个数,而从这个局面往下走子,走多后会得到很多个数,统计上应该更为重要,但是AlphaGo不是这样想的,两边各自算得胜率后直接对半平均了。所以如果估值网络对某个局面得到的结果不对,则会极大地影响对该局面的胜率估计。注意这里得到很多个数的原因是按照文章,叶结点在积累了一定盘数后(40)才展开,而不是第一次访问就展开,以提高DCNN的效率。DarkForest没有用到估值网络,在L11的挖之后正确地返回了L12和L10这两个应手,据李喆六段说,都是正确的应手,这间接支持了这个推断。AlphaGo在87手之后才意识到自己已经大大落后,可能也是由于同样的问题,比如说把右边的黑大龙看成活的。

那为什么估值网络会出问题呢?可能是用于训练估值网络的自学习(Self-Play)的样本分布有盲点。为了提高样本生成速度,AlphaGo的自学习样本是通过用两个纯粹的DCNN互搏来生成的(完全没有搜索),而DCNN下出来的棋因为是纯模式识别,一个大问题是死活不正确,经常是在死棋里面下子。如果黑白两方都犯了死活不分的毛病,然后一方比如说白侥幸胜了,那估值网络就会认为方才白的死棋局面是好的。这样估值网络就会染上同样毛病,在中盘复杂的对杀局面中判断失误。若是这种情况就不好处理,AlphaGo下一局可能还会有同样的问题。这里可以看到,电脑本身也不是靠穷举来下棋的,围棋毕竟太复杂,每一步都要剪枝,离当前局面近的仔细剪(用DCNN),离当前局面远的快速剪(快速走子),直到终局得到胜负为止。剪枝的好坏直接关系到棋力的高低,DCNN只是一个有大局观的非常好的剪枝手段,它的盲点也会通过败着反映出来。

关于DCNN+MCTS打劫。首先因为MCTS是全局估计分数的,劫争本身和其它局面在程序看来没有本质区别,都只是一步棋而已。劫的特殊性在DarkForest上表现为碰到有劫可提的情况时,DCNN经常会以非常高的概率(0.8以上)返回提劫这一手。可能的原因是,劫点是作为单独的特征输入的,所以DCNN学习到了它和输出(提劫)的强关联性。这样在MCTS搜索时会强烈偏向这一手。这在很多情况下是正确的,但有时劫很小可以不予理会,或者碰到两个或者多个劫需要放弃一个,那“遇劫必提”的偏向性就会给搜索带来麻烦。有时连环劫电脑反复提就是这个原因。AlphaGo可能会有这个问题,或者是反向的问题(比如说提劫概率很小),这样在下棋时大家就会感觉到它在避免开劫,或者在含劫的变化中计算失误。

关于地平线效应(Horizon Effect)。国象的AI里面会有这个效应,比如说只搜索10步,计算到别人的后被自己的后吃了结束,然后用简单的加和法估计下盘面发现自己多个后特别爽,觉得这个分支特别好。其实再往下走一步自己的后也被别人吃了,或者掉入陷阱,这样就误算盘面价值。但是围棋因为每次模拟都是走到底的,可能前30步是用DCNN,之后就是用快速走子,虽然走子质量上有差距,但是大方向上不会错,所以地平线效应在某种程度上是减弱了。而且这次AlphaGo的失误在20步以内,应该还在DCNN的范围里面,所以地平线效应的可能性比较低。

=====================

应大家要求,这里放Game3的胜率,李世石毫无机会。

Game4的还没空全跑,以下是关键的一段。注意DarkForest只是5d,所以没有及早看出来黑挂了也是正常的。

[84] Suggest: W O9, Winrate: 0.405329 Actual move: W O9

[85] Suggest: B O8, Winrate: 0.599069 Actual move: B P8

[86] Suggest: W O8, Winrate: 0.400797 Actual move: W P9

[87] Suggest: B L10, Winrate: 0.600354 Actual move: B Q9

[88] Suggest: W Q8, Winrate: 0.430756 Actual move: W Q8

[89] Suggest: B R9, Winrate: 0.567363 Actual move: B R9

[90] Suggest: W O8, Winrate: 0.446702 Actual move: W O8

[91] Suggest: B P7, Winrate: 0.556039 Actual move: B L10

[92] Suggest: W N7, Winrate: 0.421326 Actual move: W J11

[93] Suggest: B P7, Winrate: 0.588889 Actual move: B S9

[94] Suggest: W P7, Winrate: 0.465145 Actual move: W P7

[95] Suggest: B R7, Winrate: 0.570279 Actual move: B Q13

[96] Suggest: W P12, Winrate: 0.453528 Actual move: W R8

[97] Suggest: B S8, Winrate: 0.474463 Actual move: B C4

[98] Suggest: W C5, Winrate: 0.492770 Actual move: W C5

[99] Suggest: B C3, Winrate: 0.507522 Actual move: B P15

[100] Suggest: W P12, Winrate: 0.528700 Actual move: W S8

[101] Suggest: B J10, Winrate: 0.402717 Actual move: B T9

[102] Suggest: W P12, Winrate: 0.604598 Actual move: W S10

[103] Suggest: B P14, Winrate: 0.462454 Actual move: B H13

[104] Suggest: W J14, Winrate: 0.566891 Actual move: W J10

[105] Suggest: B J12, Winrate: 0.476526 Actual move: B L7

[106] Suggest: W J7, Winrate: 0.597039 Actual move: W G11

[107] Suggest: B F10, Winrate: 0.408352 Actual move: B F10

[108] Suggest: W J7, Winrate: 0.600918 Actual move: W K8

[109] Suggest: B J12, Winrate: 0.419091 Actual move: B L8

[110] Suggest: W G8, Winrate: 0.633512 Actual move: W G8

[111] Suggest: B F8, Winrate: 0.370351 Actual move: B F8

[112] Suggest: W G7, Winrate: 0.630929 Actual move: W G7

[113] Suggest: B E6, Winrate: 0.373719 Actual move: B C12

[114] Suggest: W D12, Winrate: 0.602646 Actual move: W E15

[115] Suggest: B D16, Winrate: 0.397657 Actual move: B E18

[116] Suggest: W B12, Winrate: 0.612667 Actual move: W B13

[117] Suggest: B F7, Winrate: 0.450077 Actual move: B D13

[118] Suggest: W E13, Winrate: 0.587001 Actual move: W E13

[119] Suggest: B J12, Winrate: 0.440845 Actual move: B E6

[120] Suggest: W D6, Winrate: 0.546337 Actual move: W F5

[121] Suggest: B H9, Winrate: 0.454207 Actual move: B D14

编辑于 2016-03-15 06:50