深度强化学习——如何在行动中处理边界space

Deep reinforcement learning - how to deal with boundaries in action space

我构建了一个自定义强化学习 environmentagent,这类似于迷宫游戏。

在迷宫中有 5 种可能的动作:上、下、左、右和停留。而如果被阻止,例如agent上不去,那人家怎么设计envagent来模拟呢?

具体来说,智能体处于当前状态 s0,根据定义,采取向下、向左和向右的动作会将状态更改为其他一些值,并立即获得奖励(>0,如果处于出口)。一种可能的方法是当采取行动 up 时,状态将保持在 s0 并且奖励将是一个很大的负数。理想情况下,智能体将了解这一点,并且永远不会在这种状态下再次进入 up

但是,我的代理似乎没有学习这个。相反,它仍然 up。另一种方法是对代理和环境进行硬编码,代理在 s0 时将无法执行操作 up,我能想到的是:

  1. 在某些状态下up是不允许的,我们看一下不同动作的Q值
  2. 选择除up
  3. 之外Q值最大的动作
  4. 因此,代理永远不会执行无效操作

请问上述方法可行吗?会不会有什么相关的问题?或者有没有更好的设计来处理边界和无效动作?

I would say this should work (but even better than guessing is trying it). Other questions would be: What is the state your agent is able to observe? Are you doing reward clipping?

另一方面,如果您的智能体没有学会避免 运行 撞墙,则您的学习例程可能存在另一个问题(奖励函数可能存在错误?)

硬编码剪辑操作可能会导致您希望看到的行为,但它肯定会降低代理的整体性能。

你还实现了什么?如果还没有完成,考虑到经验回放可能会很好。

我已经多次看到代理会坚持执行单个操作的问题。我在以下情况下看到过:

  1. 输入图像未归一化,因此梯度变得很大,整个网络对单个动作饱和。
  2. 我没有使用熵加成来增加初始搜索的随机性。请查找有关此作品的更多详细信息 here

希望对您有所帮助。