如何将Q-learning应用于OpenAI-gym环境,在每个时间段采取多项措施?

问题描述 投票:1回答:1

我已成功使用Q-learning来解决OpenAI Gym(即Taxi,CartPole)的一些经典强化学习环境。这些环境允许在每个时间步骤执行单个操作。但是,我无法找到解决在每个时间步骤同时采取多个操作的问题的方法。例如,在Roboschool Reacher环境中,必须在每个时间步骤指定2个扭矩值 - 每个轴一个。问题是Q矩阵是由(状态,动作)对构建的。但是,如果同时采取多个动作,则构建Q矩阵并不简单。

Maxim Lapan撰写的“Deep Reinforcement Learning Hands-On”一书提到了这一点,但没有给出明确答案,请参阅下面的引文。

当然,我们不仅限于执行单个动作,并且环境可以具有多个动作,例如同时按下多个按钮或者转动车轮并按下两个踏板(制动器和加速器)。为了支持这种情况,Gym定义了一个特殊的容器类,它允许将多个动作空间嵌套到一个统一的动作中。

有人知道如何处理Q学习中的多个动作吗?

PS:我不是在谈论“连续与离散动作空间”这个问题,可以用DDPG解决。

python reinforcement-learning openai-gym q-learning
1个回答
0
投票

您可以采取以下两种方法之一 - 取决于问题:

  1. 想一想你需要独立传递给环境的一组动作,并为每个动作制作网络输出动作值(分别制作softmax) - 所以如果你需要传递两个动作,网络将有两个头,每个一个轴。
  2. 将它们视为依赖并查看动作集的笛卡尔积,然后使网络为每个产品输出值 - 因此,如果您需要传递两个动作,并且每个动作有5个选项,则输出的大小图层将是2 * 5 = 10,您只需使用softmax即可。
© www.soinside.com 2019 - 2024. All rights reserved.