这个算法是什么?它是蒙特卡洛树搜索的变体吗?

人工智能 神经网络 蒙特卡罗树搜索 树搜索
2021-10-22 06:19:53

我在一个简单的赛车游戏中使用神经网络作为代理。我的目标是训练网络模仿蛮力树搜索到任意深度。

我的算法如下所示:

  • 代理从深度 0 开始
  • 生成一堆测试状态
  • 对于每个测试状态s
    • 对于每个动作a
      • s' = env.step(s, a)
      • for x in range(agent.depth): s' = env.step(s', agent.predict(s'))
      • 计算状态奖励s'
    • 将测试状态的标签设置为产生最高奖励的s任何操作a
  • 使用测试状态和标签训练代理,并递增agent.depth
  • 循环直到所需深度

这个想法是,以这种方式训练到深度 N 的代理应该产生接近深度 N 的蛮力树搜索的输出......所以通过使用它来播放 N 个动作,它应该能够找到我最好的最终结果在那个深度状态。在实践中,我发现它的性能介于 N 和 N-1 之间(当然它永远不会达到 100% 的准确度)。

我的问题是:这个算法的名称是什么?当我搜索带有播放的树搜索时,一切都在谈论 MCTS。但是由于这里没有随机性(第一步是尝试所有操作),所以这会被称为什么?

1个回答

简而言之,您似乎已经构建了一个有效的强化学习方法,但它与蒙特卡洛树搜索没有太多共同之处。与更成熟的方法相比,它可能有一些弱点,这意味着它在某些环境而不是其他环境中会更好地工作。

您的方法可能是新颖的,因为您将想法组合成一种以前从未以这种确切形式使用过的方法。但是,它遵循一般政策改进 (GPI) 的原则:

  • 估计当前政策的行动价值。

  • 通过根据最新估计最大化行动选择来创建新策略。

  • 将当前策略设置为新策略并重复。

您的方法通过扫描状态和动作对列表涵盖了使用确定性策略进行的探索。这类似于策略迭代,或者可能是在蒙特卡洛控制中探索开始。它通过遵循当前策略直到一个时间步长来评估每个状态/动作对。这有一些弱点,但在某些情况下它可能工作得很好。

深度迭代分析起来更复杂。它没有按照您的建议进行 - 即它不会使整个算法在某种程度上等同于树搜索。从技术上讲,在一般情况下,短期的价值估计将是对真实价值的差的、有偏差的估计,但从好的方面来说,它们可能仍然有助于在某些情况下区分好与坏的行动选择。它甚至可以作为课程学习的一种形式,首先收集和训练关于立即显而易见的决定的数据(我再次希望这将是情境,而不是你可以依赖的东西)。

总的来说,尽管您似乎已经为您的赛车游戏找到了一个不错的解决方案,但我认为您的方法在一般情况下会不可靠。具有随机状态转换和奖励的环境将是一个主要问题,如果不对算法进行重大更改,这是无法解决的。

我可以建议您尝试一种或多种标准发布的方法,例如 DQN、A3C 等,并以不同方式将它们与您在相同环境中的方法进行比较。例如,训练到可接受的水平需要多少时间和计算量,或者每种方法可以达到多近的最优值。

与蒙特卡洛树搜索的主要比较是,您评估每个状态、动作对与一种推出。MCTS 中还有很多你没有做的事情,而且每次推出时间更长的迭代与 MCTS 中的任何事情都不一样,并且不会补偿算法中缺失的 MCTS 部分。