2 回答
TA贡献1836条经验 获得超3个赞
将Q值存储在矩阵(或表)中的强化学习方法称为表格RL方法。这些是最直接/最简单的方法,但是正如您所发现的那样,并不总是那么容易应用。
您可以尝试的一种解决方案是离散化状态空间,创建许多“容器”。例如,hull_angle
观察范围可以从0
到2*pi
。例如,您可以将其中的任何状态映射0 < hull_angle <= 0.1
到第一个容器,将状态与映射0.1 < hull_angle < 0.2
到第二个容器,等等。如果观察值的范围从-inf
到+inf
,您可以简单地决定将阈值放在某个位置,并处理超出该范围的每个值该阈值与同一个垃圾箱相同(例如,从-inf
到的所有内容-10
映射到同一个垃圾箱,从所有内容10
到+inf
另一个垃圾箱,然后在较小的区域中放置更多的垃圾箱)。
但是,您必须将每个观测值离散化到此类bin中(或简单地将一些观测值扔掉),并且所有bin索引的组合将形成矩阵中的单个索引。如果您有23
不同的观察值,并为10
每个观察值创建例如bins,则最终的Q值矩阵将具有10^23
条目,这是一个...相当大的数字,可能不适合您的内存。
一种不同的解决方案是使用函数逼近来研究不同的RL方法。函数近似最简单的方法类别是使用线性函数近似,这些是我建议您首先针对问题解决的方法。线性函数近似方法本质上是尝试学习线性函数(权重向量),以便通过取权重向量与观测值/特征向量之间的点积来估算Q值。
如果您熟悉Sutton和Barto的《强化学习》第二版的草稿,则会在第9-12章中找到许多这样的方法。
另一类函数逼近方法使用(深度)神经网络作为函数逼近器,而不是线性函数。它们可能比线性函数逼近更好,但理解起来也要复杂得多,并且通常需要很长时间才能运行。如果您想获得最佳结果,最好看一下,但是如果您仍在学习并且从未见过任何非表格式RL方法,那么研究诸如线性函数之类的更简单的变体可能是明智的。首先近似。
TA贡献1820条经验 获得超10个赞
在连续的状态空间的情况下,审慎地考虑神经网络近似而不是对数据进行合并,尤其是在您具有多个状态特征的情况下。绑定数据仍然会带来与维数相关的诅咒。如果您想使用Q学习,请查看Deep Q-Networks。它是Deep RL的非常流行的版本,已被Google DeepMind普及。如果您想知道如何解决这个问题,请使用keras来看一个简单的github示例,它是一个非常简单的神经网络库。
添加回答
举报