Q学习计算中的大量状态

The huge amount of states in q-learning calculation

本文关键字:状态 学习 计算      更新时间:2023-10-16

我通过Q学习实现了3x3 ox游戏(它在AI V.S AI和AI V.S Human中都可以很好地工作(,但是我不能再进一步迈向4x4 ox游戏,因为它会吃掉我所有的PC内存和崩溃。

这是我目前的问题:巨大数组中的访问违规?

在我的理解中,一个3x3 ox游戏总共有3个(空间,白色,黑色( ^ 9 = 19683可能的状态。(相同的模式不同的角度仍然计数(

对于4x4 ox游戏,总状态将为3 ^ 16 = 43,046,721

对于常规GO游戏,15x15板,总州为3 ^ 225〜2.5 x 10 ^ 107

Q1。我想知道我的计算是否正确。(对于4x4 ox游戏,我需要一个3^16数组?(

Q2。由于我需要计算每个Q值(对于每个状态,每个操作(,所以我需要这么大的数组吗?有什么方法可以避免它?

考虑对称。在3x3板上,可能的配置的实际数量远小于9^3。例如,基本上只有3种不同的配置,板上有一个x

旋转

有许多董事会配置都应该导致您的AI做出相同的决定,因为它们是对称性的相同模型。例如:

x - -    - - x    - - -    - - -  
- - -    - - -    - - -    - - - 
- - -    - - -    - - x    x - - 

这些都是相同的配置。如果您单独对待他们,则浪费训练时间。

镜像

不仅有旋转对称性,而且您还可以在不改变实际情况的情况下镜像板。以下基本相同:

0 - x    x - 0    - - -    - - -  
- - -    - - -    - - -    - - - 
- - -    - - -    0 - x    x - 0

排除"无法发生"配置

接下来,请考虑当一个玩家获胜时游戏结束。例如,您有3^3个配置,看起来都像

x 0 ?
x 0 ?    // cannot happen
x 0 ?

他们永远不会出现在正常比赛中。您不必为他们保留空间,因为它们根本无法发生。

排除更多"无法发生"

此外,您用9^3大量高估了配置空间的大小,因为玩家会转弯交替。例如,您无法达到这样的配置:

x x -
x - -    // cannot happen
- - - 

如何获得所有需要的配置?

简而言之,这就是我要解决问题的方式:

  • 为您的董事会定义operator<
  • 使用<关系,您可以为每组"类似"配置选择一个代表(例如,与集合中的所有其他配置相比,<的配置(
  • 写一个给定配置的函数,返回您的代表配置
  • Brute Force迭代所有可能的动作(只有可能的动作!,即仅在赢得比赛之前进行交替转弯(。在这样做的同时
    • 计算您遇到的每种配置的代表
    • 记住所有代表性配置(请注意,由于对称性而出现几次(

您现在有所有配置模型对称性的列表。在实际游戏中,您只需要将董事会转换为代表,然后采取行动。之后您可以转换回实际配置,如果您记得如何旋转/镜像。

这是相当蛮力的。我的数学有点生锈,否则我会尝试直接获取代表列表。但是,这是板的每个大小都只需要一次。

如果跳过了轮子,这是解决方案的方法这个问题:

该模型是一个卷积神经网络,经过训练 q学习,其输入是原始像素,其输出为值 估计未来奖励的功能。我们将方法应用于七个atari 街机学习环境中的2600场游戏,没有调整 架构或学习算法。

https://arxiv.org/pdf/1312.5602v1.pdf

我们可以用神经网络代表我们的Q功能 状态(四个游戏屏幕(和动作作为输入,并输出 相应的Q值。或者,我们只能拿游戏屏幕 作为输入和输出每个可能动作的Q值。这 方法有一个优势,如果我们想执行Q值 更新或以最高的Q值选择操作,我们只需要做一个 向前通过网络,并为所有操作提供所有Q值 立即可用。

https://neuro.cs.ut.ee/demystifying-deep-reinforcection-learning/

我有一个枚举方案,但是它需要一个整数。如果您可以将整数数组压缩为单个Q值(和后方(,则可能会起作用。

首先是n,板上的零件数。

然后是x片(n/2(项目的阵列,x件。每个数字都是从上一个X件(或板启动(中空的有效空间的计数。重要:如果空间导致游戏结束,则无效。这是第5条规则有助于我们减少域的地方。

然后是地板(n/2(物品的阵列,o块。与x数组相同的逻辑也适用。

因此,对于此板和3件规则:

XX.
X.O
..O

我们有以下数组:

n:5
x:0(从董事会开始(,0(从上一个x(,0(右上角是x的无效,因为它将结束游戏(
o:2(从董事会开始,减去所有之前的x(,2(来自以前的o(

那就是数组[5,0,0,0,2,2]。鉴于此数组,我们可以重新创建上面的董事会。少数的发生比大数字更有可能。在与19x19董事会的常规游戏中,这些作品大部分时间都会在大部分时间组合在一起,因此将有很多零,两者,两个,偶尔被划界下一行的"大"数字。

现在,您必须使用小数字比大型数字更多的事实来压缩此数组。通用压缩算法可能会有所帮助,但是一些专业的可能会有所帮助。

我对Q学习一无所知,但是这里所有这些都要求Q值可以具有可变的大小。如果您必须具有Q值的恒定尺寸,那么该尺寸必须考虑到最糟糕的板,而且大小可能是如此之大,以至于它首先会击败其枚举/压缩的目的。

我们使用从左到右和自上而下的方法来枚举碎片,但我们也可以使用一些螺旋方法,这些方法可能会产生更好的小数与数字比率。我们只需要为螺旋中心选择最佳起点即可。但这可能会使算法变得复杂,最后浪费了更多的CPU时间。

另外,我们真的不需要数组中的第一个数字。

相关文章: