我想为棋盘游戏 Connect Four 实施强化学习算法 SARSA 和 Q-Learning。
由于将所有这些信息存储在 Q-Table 中,我熟悉这些算法并且知道它们对大型状态空间的限制。连接四有一个估计约为 7.1*10 13的大状态空间,例如 MIT Slide 7,这就是为什么简单地应用这些算法是行不通的(尽管这篇论文声称它确实如此)
但是,我找到了一个类似帖子的答案,该帖子提出了一种可能的解决方案来简化状态空间。
一方面,您可以通过分离动作空间来简化问题。如果您分别考虑每列的值,则基于它旁边的两列,您将 N 减少到 3 并将状态空间大小减少到 10 6。现在,这是非常易于管理的。您可以创建一个数组来表示此值函数并使用简单的 RL 算法(例如 SARSA)对其进行更新
不幸的是,我不理解提议的简化,并想问以下问题:
- 通过分别考虑每一列,将动作空间与状态空间分开。但是,如果我对 SARSA 和 QL 的理解是正确的,它们会使用它们
Q(S,A)
来估计价值函数,因此状态动作对被分配了一个值。 - 如何根据旁边的两列计算一列的值?
- 在这种情况下,它旁边的含义是什么?如果使用每列的两个相邻列,那么我们创建五对(N=5)还是从内向外创建对(例如中间三列、中间五列、全部七列)?
- 一个状态(整个板的?)然后映射到包含每个动作/列的值函数的数组?
任何对其他文献或简化的参考将不胜感激!