使用PyTorch实现简单的AlphaZero的算法(2):理解和实现蒙特卡洛树搜索

本篇文章将实现AlphaZero的核心搜索算法:蒙特卡洛树搜索

蒙特卡洛树搜索(MCTS)

你可能熟悉术语蒙特卡洛[1],这是一类算法,反复进行随机抽样以获得某个结果。

例如上图,在单位正方形中选择随机点,计算圆内有多少个点,可以用来估计pi/4的值

本文中我们将详细介绍MCTS的所有步骤。但首先我们从更广泛的理解层面来说,在游戏的MCTS中,我们从给定的棋盘状态开始重复模拟玩法,一般情况下的MCTS我们会一直执行这些模拟直到游戏结束。但AlphaZero的[2]MCTS实现与传统的MCTS不同,因为在AlphaZero中我们也有一个神经网络,它正在接受训练,为给定的板子状态提供策略和值。

AlphaZero中搜索算法的输入是一个棋盘的状态(比如σ)和我们想要运行MCTS的迭代次数(也称为播放次数)。在这个游戏的例子中,搜索算法的输出是从σ中抽样一个执行动作的策略。

该树将迭代构建。树的每个节点都包含一个棋盘状态和关于在该状态下可能采取的有效操作的信息。

节点由一个状态板和键-值对组成,其中键是一个动作元组,对应的值是在父节点的状态上应用该动作元组后获得的节点。子节点是惰性初始化的(即仅在需要时初始化)

一开始,树只有根节点。它将包含输入状态σ和在σ下可以采取的有效动作。

完整文章

https://avoid.overfit.cn/post/eac92335f439429d99b4abd58517b899

posted @ 2022-11-09 11:10  deephub  阅读(107)  评论(0编辑  收藏  举报