DDPG 算法如何知道我的动作映射函数?

人工智能 强化学习 深度学习 ddpg 映射空间
2021-10-20 10:05:58

我正在使用 DDPG 来解决 RL 问题。动作空间由笛卡尔积给出[0,20]4×[0,6]4. actor实现为一个输出维度等于的深度神经网络8tanh激活。

因此,给定一个状态s,一个动作由a = actor(s)wherea包含实数给出[-1,1]接下来,我将此动作映射为属于动作空间a的有效动作valid_a[0,20]4×[0,6]4. 比,我valid_a用来计算奖励。

我的问题是:DDPG 算法如何知道我正在做的这个映射?我应该在 DDPG 算法的哪个部分指定这个映射?我是否应该提供一个双射映射来保证 DDPG 算法从好的操作中学习坏的?

1个回答

我建议做的是让您的网络输出任何实数,然后剪裁输出。例如,我正在与一个必须学习两者之间的角度的代理一起工作[0,2π][0,1]. 如果网络在第一维输出例如 10,那么这将被剪裁到2π.

这样,代理只了解动作空间内的动作,并且网络的权重最终将被调整为仅输出该动作空间内的动作,前提是边界不是最佳动作。