为了账号安全,请及时绑定邮箱和手机立即绑定

在开放式环境中进行Q学习时Q矩阵的维数应该是多少

在开放式环境中进行Q学习时Q矩阵的维数应该是多少

汪汪一只猫 2021-03-31 13:10:54
我想在OpenAI的Bipedal Walker v2中实现Q学习,但是在寻找了教程之后,它们似乎总是有限的环境,这使得Q矩阵和奖励矩阵易于初始化。例如:http : //mnemstudio.org/path-finding-q-learning-tutorial.htm我唯一的问题是,在更开放的环境(例如我要使用的环境)中,这些矩阵的尺寸应该是多少?有问题的环境:https://gym.openai.com/envs/BipedalWalker-v2/您得到的观察(请注意,有些值可能是无限的):https : //github.com/openai/gym/wiki/BipedalWalker-v2
查看完整描述

2 回答

?
米脂

TA贡献1836条经验 获得超3个赞

将Q值存储在矩阵(或表)中的强化学习方法称为表格RL方法。这些是最直接/最简单的方法,但是正如您所发现的那样,并不总是那么容易应用。

您可以尝试的一种解决方案是离散化状态空间,创建许多“容器”。例如,hull_angle观察范围可以从02*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方法,那么研究诸如线性函数之类的更简单的变体可能是明智的。首先近似。


查看完整回答
反对 回复 2021-04-13
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

在连续的状态空间的情况下,审慎地考虑神经网络近似而不是对数据进行合并,尤其是在您具有多个状态特征的情况下。绑定数据仍然会带来与维数相关的诅咒。如果您想使用Q学习,请查看Deep Q-Networks。它是Deep RL的非常流行的版本,已被Google DeepMind普及。如果您想知道如何解决这个问题,请使用keras来看一个简单的github示例,它是一个非常简单的神经网络库。


查看完整回答
反对 回复 2021-04-13
  • 2 回答
  • 0 关注
  • 222 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信