【问题标题】:Deep reinforcement learning with multiple "continuous actions"具有多个“连续动作”的深度强化学习
【发布时间】:2021-03-02 15:15:17
【问题描述】:

下面是我的代理应该是什么样子的高级图表,以便能够与我制作的自定义健身房环境进行交互。

状态和动作

环境有三个状态[s1,s2,s3]和六个动作[a1,a2,a3,a4,a5,a6] 状态和动作可以是 0 到 1 之间的任何值

问题:

哪些算法适合我的问题?我知道有些算法擅长处理连续动作空间,例如(DDPG、PPO 等),但是当它们在每个时间步输出多个动作时,我看不出它们会如何操作。 最后,是否有任何健身房环境具有所描述的属性(多个动作),是否有任何 python 实现来解决这些特定环境?

【问题讨论】:

    标签: python-3.x reinforcement-learning openai-gym


    【解决方案1】:

    正如您在问题中提到的,PPO、DDPG、TRPO、SAC 等确实适合处理强化学习问题的连续动作空间。 这些算法将给出一个大小等于您的动作维度的向量,并且该向量中的每个元素都是实数而不是离散值。请注意,像 PPO 这样的随机算法会给出一个多元概率分布,您可以从中对动作进行采样。

    Mujoco-pyPyBulletRobosuite 等中的大多数机器人环境都是具有多个连续动作空间的环境。这里的动作空间可以是[torque_for_joint_1, torque_for_join_2, ..., torque_for_joint_n] 的形式,其中torque_for_joint_i 可以是一个实数值,决定了该关节会移动多少。

    关于解决这些环境的实现,robosuite 确实提供了示例解决方案,用于使用不同算法对环境进行基准测试。您还可以查找 stable-baselines 或标准 RL 库之一。

    【讨论】:

    • 感谢您的澄清!我还有另一个问题,动作输出向量中的每个动作都应该在 [0 和 1] 之间,这意味着六个动作的最大总和将等于 6(即,如果所有动作都等于 1)。如何确保每个动作确实介于 0 和 1 之间。我知道使用 softmax 激活函数可以进行多类分类,但这不是我想要的,因为这会将所有动作的总和限制在 0 和 1 之间而不是单独的每个动作。谢谢
    • 这是否意味着所有的动作都是相互依赖的?
    • 不,它们不相互依赖。事实上,它们的工作方式就好像每个动作都来自一个单独的回归器(但值介于 0 和 1 之间)
    • 您可以在最后一层使用 sigmoid 或移位的 tanh 非线性来获得 [0,1] 范围内的输出。
    • 非常感谢您的帮助!
    猜你喜欢
    • 2018-11-05
    • 2020-06-30
    • 2016-10-24
    • 2022-01-17
    • 1970-01-01
    • 2019-10-20
    • 2019-05-31
    • 2021-08-13
    • 1970-01-01
    相关资源
    最近更新 更多