【问题标题】:Want to implement a reinforcement learning connect four agent想实现一个强化学习连接四个代理
【发布时间】:2012-01-19 09:57:16
【问题描述】:

我想实现一个强化学习连接四个代理。 我不确定如何这样做以及它应该看起来如何。我熟悉强化学习的理论方面,但不知道应该如何实施。

应该怎么做? 我应该使用 TD(lambda) 还是 Q-learning,MinMax 树是如何参与其中的? 我的 Q 和 V 函数如何工作(行动质量和状态价值)。我如何给这些东西打分?我改进的基本政策是什么,我的模式是什么? 另一件事是我应该如何保存状态或 statesXactions(取决于学习算法)。我应该使用神经网络吗?如果是,如何?

我正在使用 JAVA。

谢谢。

【问题讨论】:

  • 我不确定是否有人能回答这个问题而不只是告诉你按照他们会做的方式去做。我会从我想要实现什么以及我想要学习什么开始,希望这些决定会变得更加清晰。
  • 听听别人会怎么做会有很大帮助
  • 既然您这样做是出于兴趣,我将首先使用最简单且有趣的方法。我喜欢神经网络,所以我会尝试一下,但要真正学习,你应该研究每个主题(它们本身就是博士学位),看看每种方法有多简单或有效。

标签: java reinforcement-learning


【解决方案1】:

这可能是一个比你想象的更难的问题,原因如下:

游戏的动作空间是放置一块的列的选择。游戏的状态空间是一个 MxN 网格。每列最多包含分布在 2 个玩家之间的 M 个棋子。这意味着有 (2M+1-1)N 个状态。对于标准的 6x7 板,这大约为 1015。因此,您不能直接将强化学习应用于问题。状态值函数不是平滑的,所以朴素的函数逼近是行不通的。

但并非全部丢失。一方面,您可以通过分离动作空间来简化问题。如果你单独考虑每一列的值,基于它旁边的两列,你将 N 减少到 3 并将状态空间大小减少到 106。现在,这是非常易于管理的。您可以创建一个数组来表示此值函数,并使用简单的 RL 算法(例如 SARSA)对其进行更新。

请注意,游戏的回报非常延迟,因此您可能希望使用资格跟踪来加速学习。

【讨论】:

    猜你喜欢
    • 2010-10-18
    • 2014-12-23
    • 1970-01-01
    • 2021-02-12
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    相关资源
    最近更新 更多