为啥蒙特卡洛树搜索会重置树
Posted
技术标签:
【中文标题】为啥蒙特卡洛树搜索会重置树【英文标题】:Why does Monte Carlo Tree Search reset Tree为什么蒙特卡洛树搜索会重置树 【发布时间】:2018-05-03 12:51:18 【问题描述】:我有一个关于Monte Carlo Tree Search 的小问题但可能很愚蠢。我了解其中的大部分内容,但一直在研究一些实现,并注意到在针对给定状态运行 MCTS 并返回最佳移动之后,树被丢弃。所以下一步,我们必须在这个新状态上从头开始运行 MCTS 以获得下一个最佳位置。
我只是想知道为什么我们不保留旧树中的一些信息。似乎有关于老树中状态的有价值的信息,特别是考虑到最好的举动是 MCTS 探索最多的地方。我们不能以某种有用的方式使用这些旧信息有什么特别的原因吗?
【问题讨论】:
可能是因为随机依赖。根本问题发生了变化,因此可能会遍历不同的路径。在 minmax 中,我认为,考虑到 50 步的决定,我们可以重用 1/50 我们已经预先计算的数据(简化;损失很大),但在 MCTS 中,就数学证明而言,它可能不是那么微不足道,如果我们是否要重复使用这些。我认为this paper 正在分析这个(第 5 章)。这是一个有趣的问题,但我确信它不太适合 ***,因为该主题远离编码和更多数学 仅供参考(以上评论太长):我链接的论文叫Powley, Edward J., Peter I. Cowling, and Daniel Whitehouse. "Information capture and reuse strategies in Monte Carlo Tree Search, with applications to games of hidden information." Artificial Intelligence 217 (2014): 92-116.
【参考方案1】:
有些实现确实保留了这些信息。
例如,the AlphaGo Zero paper 说:
搜索树被重用 在随后的时间步长:播放动作对应的子节点成为新的根节点 节点;这个孩子下面的子树连同它的所有统计信息一起被保留,而其余的 树被丢弃了
【讨论】:
为什么树的剩余部分被扔掉了?考虑到策略是固定的,在 MCTS 运行期间收集的信息根本不会过时。是否丢弃数据只是为了释放 RAM? 我同意这可能有助于通过换位保持位置可达,尤其是在围棋这样的游戏中。这听起来像是一个潜在的改进。【参考方案2】:嗯,原因可能如下。
Rollouts 是截断的值估计,最大长度后的贡献被丢弃。
假设最大rollout深度为N。
如果您考虑平均奖励为 !=0(假设 >0)的环境。
在采取行动并获得观察后,可以选择树的子节点。
现在参与评估节点值的分支的最大长度和 rollout 的最大长度为 N-1,因为根节点已被丢弃。
但是,新的模拟显然仍具有长度 N,但它们必须与长度为 N-1 的模拟相结合。
更长的模拟会有一个偏差值,因为平均奖励是 !=0
这意味着使用混合长度评估的节点将根据不同长度的模拟比例而产生偏差。..
避免循环使用较短长度的旧模拟的另一个原因是由于采样引起的偏差。试想一个 T 迷宫,在左侧深度 d 处有最大奖励 =R/2,而在深度=d+1 处右侧有最大奖励 = R。在第一步中能够在深度 d 处达到 R/2 奖励的所有左侧路径将在第二步中使用回收的树受到青睐,而右侧的路径将不太常见,并且有更高的机会不到达奖励R。从一棵空树开始,迷宫两边的概率相同。
Alpha Go Zero(参见 Peter de Rivaz 的回答)实际上不使用 rollout,而是使用值近似(由深度网络生成)。值不是截断的估计。因此,Alpha Go Zero 不受此分支长度偏差的影响。
Alpha Go,Alpha Go Zero 的前身,结合了 rollouts 和值近似,还重用了树。但没有新版本不使用 rollouts。也许是这个原因。此外,Alpha Go Zero 和 Alpha Go 都不使用操作的值,而是在搜索期间选择它的次数。这个值可能受长度偏差的影响较小,至少在平均奖励为负的情况下
希望这很清楚..
【讨论】:
以上是关于为啥蒙特卡洛树搜索会重置树的主要内容,如果未能解决你的问题,请参考以下文章
深度解析黑白棋AI代码原理(蒙特卡洛搜索树MCTS+Roxanne策略)
深度解析黑白棋AI代码原理(蒙特卡洛搜索树MCTS+Roxanne策略)