这是迄今为止,AlphaGo算法最清晰的解读!( 四 )


V*是这个评估的真值 。
p*是正解(产生正解的policy)
p是AlphaGo前面所说学到的最强的policy net 。
如果模拟以后每步都是正解p*,其结果就是V*,这解释了等号 。
如果你知道V*这个函数,在当前局面,你要对走下一步(围棋平均有250种可能性)后的状态s进行评估,选最大的V*走就行 。围棋就完美解决了 。但是,前面说了 , V*不存在 。同样p*也不存在(理论上存在,实际因为搜索空间太大,计算量太大找不到 。在5*5的棋盘中下棋可以做到) 。
AlphaGo天才般的用最强poilicy,p来近似正解p*,从而可以用p的模拟Vp来近似V* 。即使Vp只是一个近似,但已经比现在的职业9段好了 。想想她的p是从职业选手的着法学来的,就是你能想到的棋她都想到了 。而且她还在不断使的p更准 。顶尖职业棋手就想以后的20-40步,还会出错(错觉) 。AlphaGo是模拟到终局,还极少出错 。天哪 , 这人还怎么下 。
围棋问题实际是一个树搜索的问题,当前局面是树根,树根长出分支来(下步有多少可能性,棋盘上的空处都是可能的),这是树的广度,树不断生长(推演,模拟),直到叶子节点(终局 , 或者后面的局面) 。树根到叶子,分了多少次枝(推演的步数)是树的深度 。树的平均广度,深度越大,搜索越难,要的计算越多 。围棋平均广度是250,深度150,象棋平均广度是35 , 深度80 。如果要遍历围棋树,要搜索250的150次方,是不实际的 。这也是围棋比象棋复杂的多的原因之一 。但更重要的原因前面讲了:是象棋有比较简单的手工可以做出的value函数 。比如,吃王(将)得正无穷分,吃车得100分 , 等等 。1997年打败当时国际象棋世界冠军的DeepBlue就是人手工设计的value 。而围棋的value比象棋难太多了 。手工根本没法搞 。又只能靠深度学习了 。
在讲value的原理前,先看看定性看看value的结果 。如图 , 这是AlphaGo用value net预测的走下一步,她赢的概率 。空的地方都被蓝色标示了,越深说明AlphaGo赢的概率越高 。这和我们学的棋理是相符的 , 在没有战斗时,1,2线(靠边的地方)和中间的概率都低 , 因为它们效率不高 。而且大多数地方的概率都接近50% 。所以说赢棋难,输棋也很难 。这当然排除双方激烈战斗的情况 。
这里讲讲怎么通过policy net 得到value net 。有了policy,value就不是那么难以捉摸了 , 死结打开了 。AlphaGo可以模拟(自己和自己下,黑白都用最强的policy),直到终局 。注意 , 这里的模拟和最初说的模拟有点不同 。最初的模拟是AlphaGo在下棋(线上)中用的,用来预测 。这里的模拟是她还在学习(线下)呢 。终局时V*(谁赢)就比较容易判断了 。当然 , 对机器来说也不是那么容易的,但相对于中局来说是天渊之别 。
value net也是一个监督的深度学习的模型 。多次的模拟的结果(谁赢)为它提供监督信息 。它的模型结构和policy net相似,但是学的目标不同 。policy是下步走哪里 , value是走这后赢的概率 。
总结一下,value net预测下一走这后,赢的概率 。本身无法得到 。但是通过用最强policy来近似正解 , 该policy的模拟来近似主变化(就围棋书上那个,假设书上是对的) , 模拟的结果来近似准确的形势判断V* 。value net用监督的深度学习去学模拟的得到的结果 。value net主要用于模拟(在线,下棋的时候)时,计算Q值 , 就是平均的形势判断 。
再回顾一下模拟,模拟的每一步是兼顾:模拟到现在平均的形势判断value net , 快速rollout模拟到终局的形势判断,根据当前形势的选点policy,和惩罚过多的模拟同一个下法(鼓励探索)等方面 。经过多次模拟,树会搜索的越来越广 , 越来越深 。由于其回溯的机制,Q值越来越准,下面的搜索会越来越强 。因为每次的Q值 , 都是当前模拟认为的最优(排除鼓励探索,多次后会抵消),模拟最多的下法(树分支)就是整个模拟中累积认为最优的下法 。

推荐阅读