首页 > 解决方案 > Q 矩阵维度在 Q 学习的开放式环境中应该是什么?

问题描述

我想在 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

标签: pythondeep-learningreinforcement-learningq-learningopenai-gym

解决方案


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

您可以尝试的一种解决方案是离散化您的状态空间,创建大量“垃圾箱”。例如,hull_angle观察范围可以从02*pi。例如,您可以将任何状态映射0 < hull_angle <= 0.1到第一个 bin,将状态映射0.1 < hull_angle < 0.2到第二个 bin,等等。如果观察范围可以从-inf+inf,您可以简单地决定在某处放置一个阈值并处理超出的每个值该阈值与相同的 bin 相同(例如,从映射-inf-10同一 bin 的所有内容,从10另一个+infbin 的所有内容,然后在较小的区域之间放置更多 bin)。

不过,您必须将每一个观察结果离散化到这样的 bin 中(或者干脆丢弃一些观察结果),并且所有 bin 索引的组合将在矩阵中形成一个索引。如果您有23不同的观察结果,并为每个观察结果创建例如10bin,您的最终 Q 值矩阵将包含10^23条目,这是一个......相当大的数字,可能不适合您的记忆。


另一种解决方案是使用Function Approximation研究不同的 RL 方法。具有函数逼近的最简单的方法类使用Linear Function Approximation,这些是我建议首先针对您的问题研究的方法。线性函数逼近方法本质上是尝试学习一个线性函数(权重向量),以便通过获取权重向量和观察/特征向量之间的点积来估计您的 Q 值。

如果你熟悉 Sutton 和 Barto 的强化学习书第二版的草稿,你会在第 9-12 章中找到许多这样的方法。


另一类函数逼近方法使用(深度)神经网络作为函数逼近器,而不是线性函数。这些可能比线性函数逼近更有效,但也更难理解,并且通常需要很长时间才能运行。如果您想获得最佳结果,不妨看看它们,但如果您仍在学习并且从未见过任何非表格 RL 方法,那么研究更简单的变体(例如线性函数)可能是明智的先近似。


推荐阅读