我在python中学习强化学习并接受了一些训练,其中大部分都处理简单的动作(如向上,向下,向右或向左),所以基本上只有一个动作。 在我的项目中,我有不同的动作:它有一对动作,意味着除了在这个动作中采取的偏移之外的动作......就像(动作类型,偏移已被采取)。 例如,动作类型有:u1_set,u1_clear,u2_set,u2_clear,u3_set,u3_clear。 并且在每个动作上,都存在与此实现的动作相关联的衰减偏移(偏移量,如-1,-0.5,0,+ 0.5,+ 1),因此某些动作对的示例将类似于(u2_set,+ 1),( u2_clear,-0.5),......等。
想知道在这种情况下实施强化学习的最佳方式(行动和抵消)以及在线分享的好例子。
提前致谢。
答案 0 :(得分:1)
到目前为止,最简单的方法是简单地处理每一对可能的"子动作"作为一个完整的行动。因此,在您的示例中,每个操作都是一对(U, Offset)
,其中U
是{u1_set, u1_clear, u2_set, u2_clear, u3_est, u3_clear}
之一,Offset
是{-1, -0.5, 0, +0.5, +1}
之一。在此示例中,总共会有6 x 5 = 30
个可能的对,因此30
个不同的操作。对于大多数RL方法来说,这应该是完全正常的。
如果您继续处理更复杂的情况(太多可能的对),您也可以开始考虑更复杂的解决方案。例如,您可以将选择操作类型的问题视为第一个RL问题,然后选择偏移作为附加的单独RL问题(可能还包含已包含已选择的操作的增强状态表示)的问题类型)。
或者,如果您继续使用神经网络进行强化学习,您可以简单地使用两个单独的" head"作为输出层,两者都连接到相同的架构。
我怀疑最后两段可能不必要地复杂,特别是如果你刚刚开始学习RL,第一段可能就好了。