深入浅出解读并思考AlphaGo

2020-12-26  本文已影响0人  CristianoC

目录

引言

监督学习策略网络(Supervised Learning of Policy Networks)与快速走子网络(Rollout Policy Networks)

监督学习策略网络(Supervised Learning of Policy Networks)

数据

模型输入输出

SL网络

快速走子网络(Rollout Policy Networks)

思考

强化学习策略网络( Reinforcement Learning of Policy Networks)

网络结构

训练过程

  1. 随机选择前面某个迭代周期得到的SL网络,然后使用当前的RL策略网络和其对弈,目标是战胜选择的SL网络。随机的从一系列不同迭代周期的监督学习策略网络Pσ中选择对手是为了防止过拟合。
  2. 在前面的思考中提过,我们之前完全没考虑到棋局的胜负。所以这里将棋局和棋局的胜负都考虑进来,用强化学习算法Poliicy Gradient以最大化赢的期望的目标更新参数。Policy Gradient算法简单来说就是如果在当前棋局下某步棋导致最后奖励变多(赢了),那就加大在这个棋局下下这步的概率,反之亦然,如果有读者感兴趣阅读我之前有关Policy Gradient的讲解文章。
  3. 每隔500步就复制现在的参数进入我们的对手阵营中供第二步使用。

实验结果

强化学习价值网络(Reinforcement Learning of Value Networks)

网络结构

训练过程

实验结果

蒙特卡洛搜索树(MCTS)

核心要素

MCTS搜索模拟过程

  1. Selection选择:从根节点也就是初始棋面出发,选择在这个棋面s下最好的下法a。那什么叫好呢?这里有一个公式:我们提倡选择动作效益值Q(s,a)加奖励\mu最大的动作
  1. Expansion扩展:当L时刻我们遍历到了一个叶子节点S_L而这个叶子节点的访问次数又超过一定阈值后,我们进行扩展。(如果一遇到叶子节点就扩展,计算量太大,而且等于你什么情况都要考虑,没必要)我们把要扩展的这个棋面输入到我们的SL网络中,会返回各个棋子位置的概率,我们把下一步各个棋子的位置变成当前棋面的子棋面,而各个棋子的概率存进我们新扩展边里面(即先验概率P(s,a))。
  2. Evaluation评估:对上述叶子节点进行胜率的评估,判断当前棋面的局势。这里我们使用两种方法进行评估,一种则是我们前面介绍的价值网络预测胜率,得到V_{\theta}(S_L);第二种则是通过快速走子策略,从叶子节点出发,快速行棋至最后,每一次行棋结束后都会有个输赢结果,因为速度很快所以可以进行多轮行棋,然后综合统计得出该策略网络预测的胜率z_L。通过综合这两个指标,得到这个叶子节点的胜率评估值V(s_L)
  3. Backup反馈更新:上述对叶子节点评估完,代表着1次模拟结束。此时反向更新在此次模拟过程中到达上述叶子节点所经过的边的动作效益值Q(s,a)以及访问次数N(s,a)n次模拟后,每条边累积的Q(s,a)值更新量和访问次数更新量如下:
  1. 经过n次模拟搜索后,算法从根节点(当前棋面)选择访问次数最多的边对应的动作作为最终决策

细节

总结

参考

  1. 论文https://www.semanticscholar.org/paper/Mastering-the-game-of-Go-with-deep-neural-networks-Silver-Huang/846aedd869a00c09b40f1f1f35673cb22bc87490?p2df
  2. https://zhuanlan.zhihu.com/p/20607684
  3. https://zhuanlan.zhihu.com/p/20893777
上一篇下一篇

猜你喜欢

热点阅读