5

尝试使用 YouTube 视频和类似这样的论文来学习 MCST。

http://www0.cs.ucl.ac.uk/staff/D.Silver/web/Applications_files/grand-challenge.pdf

但是,除了高级理论解释之外,我对理解细节的运气并不好。以下是上述论文的一些引述和我的问题。

在此处输入图像描述

  1. 选择阶段:MCTS 迭代选择当前状态得分最高的子节点。如果当前状态是根节点,那么这些孩子最初是从哪里来的?你不会有一棵只有一个根节点的树吗?只有一个根节点,您是否会立即进入扩展和模拟阶段?

  2. 如果 MCTS 在选择阶段选择了得分最高的子节点,那么您在沿着树的各个层级走下去时永远不会探索其他子节点甚至可能是全新的子节点?

  3. 节点的扩展阶段如何发生?在上图中,为什么它没有选择叶子节点,而是决定给叶子节点添加兄弟节点?

  4. 在模拟阶段,随机策略用于为两个玩家选择合法的移动,直到游戏终止。这种随机策略是否是一种硬编码行为,并且您基本上是在模拟中掷骰子以选择每个玩家之间轮流直到结束的可能动作之一?

  5. 我理解这一点的方式是您从单个根节点开始,并通过重复上述阶段将树构造到一定深度。然后你选择第二级得分最高的孩子作为你的下一步行动。您愿意构建的树的大小基本上是您对 AI 响应能力的硬性要求,对吧?由于在构建树时,游戏将停止并计算这棵树。

4

2 回答 2

6
  1. 选择阶段:MCTS 迭代选择当前状态得分最高的子节点。如果当前状态是根节点,那么这些孩子最初是从哪里来的?你不会有一棵只有一个根节点的树吗?只有一个根节点,您是否会立即进入扩展和模拟阶段?

选择步骤通常不会在树中确实存在的节点中进行实际选择(通过扩展步骤创建)。通常可以在与当前节点匹配的游戏状态的所有可能后继状态中进行选择。

因此,一开始,当您只有一个根节点时,您会希望您的选择步骤仍然能够从所有可能的后续游戏状态中选择一个(即使它们在树中没有匹配的节点然而)。通常,对于尚未访问过的游戏状态(树中还没有节点),您需要非常高的分数(无限或一些非常大的常数)。这样,您的选择步骤将始终在尚无匹配节点的任何状态中随机选择,并且仅在所有可能的游戏状态在树中都已具有匹配节点的情况下才真正使用探索与利用的权衡.

  1. 如果 MCTS 在选择阶段选择了得分最高的子节点,那么您在沿着树的各个层级走下去时永远不会探索其他子节点甚至可能是全新的子节点?

选择步骤使用的“分数”通常不应只是通过该节点的所有模拟结果的平均值。它通常应该是一个由两部分组成的分数;一个“探索”部分,对于相对不经常访问的节点来说很高,以及一个“利用”部分,对于到目前为止看起来不错的节点(其中许多模拟通过该节点以胜利结束)对于允许选择移动的玩家)。这在您链接的论文的第 3.4 节中进行了描述。是W(s, a) / N(s, a)开发部分(只是平均分数),B(s, a)是探索部分。

  1. 节点的扩展阶段如何发生?在上图中,为什么它没有选择叶子节点,而是决定给叶子节点添加兄弟节点?

扩展步骤通常被实现为简单地添加一个与选择步骤选择的最终游戏状态相对应的节点(在我回答您的第一个问题之后,选择步骤将始终以选择一个以前从未选择过的游戏状态结束) .

  1. 在模拟阶段,随机策略用于为两个玩家选择合法的移动,直到游戏终止。这种随机策略是否是一种硬编码行为,并且您基本上是在模拟中掷骰子以选择每个玩家之间轮流直到结束的可能动作之一?

最直接(也可能是最常见)的实现确实是完全随机播放。不过,也可以以不同的方式执行此操作。例如,您可以使用启发式方法对某些操作产生偏见。通常,完全随机播放速度更快,允许您在相同的处理时间内运行更多模拟。但是,这通常也意味着每个单独的模拟信息量都较少,这意味着您实际上需要运行更多模拟才能使 MCTS 发挥出色。

  1. 我理解这一点的方式是您从单个根节点开始,并通过重复上述阶段将树构造到一定深度。然后你选择第二级得分最高的孩子作为你的下一步行动。您愿意构建的树的大小基本上是您对 AI 响应能力的硬性要求,对吧?由于在构建树时,游戏将停止并计算这棵树。

MCTS 不会统一探索树的所有部分到相同的深度。它倾向于探索看起来有趣的部分(强移动),而不是看起来无趣的部分(弱移动)。因此,通常您不会真正使用深度限制。相反,您将使用时间限制(例如,继续运行迭代,直到您花费 1 秒、5 秒或 1 分钟,或者您允许的任何处理时间),或迭代计数限制(例如,允许它运行 10K 或 50K 或您喜欢的任意数量的模拟)。

于 2017-05-30T13:32:38.663 回答
0

基本上,蒙特卡洛是:随机尝试多次(*),然后在大多数情况下保持导致最佳结果的移动。

(*) :次数和深度取决于你想要达到的决定的速度。

因此,根节点始终是当前游戏状态,直接子节点是可能的移动。如果您可以进行 2 次移动(是/否,左/右,...),那么您有 2 个子节点。

如果你不能做任何动作(这可能取决于游戏),那么你没有任何决定要做出,那么蒙特卡洛对这个动作毫无用处。

如果您有 X 个可能的移动(国际象棋游戏),那么每个可能的移动都是一个直接子节点。

然后,(在 2 人游戏中),每一层都是交替的“你的动作”,“对手的动作”等等。

如何遍历树应该是随机的(统一的)。

你的移动 1(子级别 1 的随机移动)

他的移动4(子级别2的随机移动)

你的移动 3(子级别 3 的随机移动)-> 赢了

选择一个参考最大深度并评估您赢或输的次数(或者如果游戏在 X 深度后没有完成,则有一些评估功能)。

您重复操作 Y 次(非常大),然后选择直接子节点(又名:您的移动),这会导致您在大多数情况下获胜。

这是为了评估你现在应该做哪一步。在此之后,对手移动,又轮到你了。所以你必须重新创建一棵树,根节点是新的当前情况,并重做蒙特卡洛技术来猜测你最好的移动方式是什么。等等。

于 2017-05-28T19:15:03.510 回答