我已成功使用Q-learning来解决OpenAI Gym(即Taxi,CartPole)的一些经典强化学习环境。这些环境允许在每个时间步骤执行单个操作。但是,我无法找到解决在每个时间步骤同时采取多个操作的问题的方法。例如,在Roboschool Reacher环境中,必须在每个时间步骤指定2个扭矩值 - 每个轴一个。问题是Q矩阵是由(状态,动作)对构建的。但是,如果同时采取多个动作,则构建Q矩阵并不简单。
Maxim Lapan撰写的“Deep Reinforcement Learning Hands-On”一书提到了这一点,但没有给出明确答案,请参阅下面的引文。
当然,我们不仅限于执行单个动作,并且环境可以具有多个动作,例如同时按下多个按钮或者转动车轮并按下两个踏板(制动器和加速器)。为了支持这种情况,Gym定义了一个特殊的容器类,它允许将多个动作空间嵌套到一个统一的动作中。
有人知道如何处理Q学习中的多个动作吗?
PS:我不是在谈论“连续与离散动作空间”这个问题,可以用DDPG解决。
您可以采取以下两种方法之一 - 取决于问题: