深度学习22- 讨论AlphaGo Zero方法的结构
### AlphaGo Zero
▪ 讨论AlphaGo Zero方法的结构。
▪ 在四子连横棋游戏上实现该方法。
**AlphaGo Zero方法**
▪ 我们不断使用蒙特卡洛树搜索(MCTS)算法遍历游戏状态树,其核心思想是半随机地浏览游戏状态,扩展它们并收集动作频率和潜在游戏结果的统计信息。因为不管是从深度还是宽度而言,游戏状态树都很大,所以我们不尝试构建完整的状态树,只是随机采样最有希望的路径。
▪ 每时每刻,我们都有一个最好的玩家,它是一个模型,通过自我对抗来产生数据。最初,此模型具有随机权重,因此它会执行随机动作,就像一个四岁的孩子只是学会了棋子的移动方式一样。但是,随着时间的流逝,我们会用更好的版本取代这个最好的玩家,它会产生越来越多有意义和复杂的游戏场景。自我对抗意味着在棋盘两边都使用相同的当前最佳模型。这看起来可能不是很有用,因为使用相同的模型自我对战的获胜概率约为50%,但这实际上正是我们需要的:最佳模型展示了其最佳技能的游戏样本。这个比喻很简单:观看无取胜希望者和大师之间的比赛通常不是很有趣,大师将轻松获胜。技术水平大致相同的玩家竞争时,比赛会更加有趣和吸引人。这就是任何锦标赛的决赛比之前的比赛都吸引更多关注的原因:决赛中两边的球队或球员通常都在比赛中表现得很出色,因此他们需要发挥出最好水平来取得比赛的胜利。
▪ 该方法的第三个组成部分是一个叫作学徒模型的训练程序,该训练程序根据最佳模型在自我对抗中收集的数据进行训练。可以将这种模型与一个孩子坐在一旁并不断分析两个成年人下棋的情况进行比较。我们会定期在该训练模型与当前的最佳模型之间进行几次比赛。当训练模型能够在大多数游戏中击败最佳模型时,我们宣布训练模型为新的最佳模型,并且流程继续进行。
函数接受很多参数:
▪ MCTS类实例,可以是单个实例,也可以是两个实例的列表或None。我们需要让该函数能灵活地支持不同用法。
▪ 可选的回放缓冲区。
▪ 游戏中要使用的NN。
▪ 在τ参数(用于动作概率计算,并会从1减至0)使用前需要执行的游戏步数。
▪ 要执行的MCTS数量。
▪ MCTS批大小。
▪ 哪个玩家先行动。