深度强化学习——如何在行动中处理边界space
Deep reinforcement learning - how to deal with boundaries in action space
我构建了一个自定义强化学习 environment
和 agent
,这类似于迷宫游戏。
在迷宫中有 5 种可能的动作:上、下、左、右和停留。而如果被阻止,例如agent上不去,那人家怎么设计env
和agent
来模拟呢?
具体来说,智能体处于当前状态 s0
,根据定义,采取向下、向左和向右的动作会将状态更改为其他一些值,并立即获得奖励(>0,如果处于出口)。一种可能的方法是当采取行动 up
时,状态将保持在 s0
并且奖励将是一个很大的负数。理想情况下,智能体将了解这一点,并且永远不会在这种状态下再次进入 up
。
但是,我的代理似乎没有学习这个。相反,它仍然 up
。另一种方法是对代理和环境进行硬编码,代理在 s0
时将无法执行操作 up
,我能想到的是:
- 在某些状态下
up
是不允许的,我们看一下不同动作的Q值
- 选择除
up
之外Q值最大的动作
- 因此,代理永远不会执行无效操作
请问上述方法可行吗?会不会有什么相关的问题?或者有没有更好的设计来处理边界和无效动作?
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?
另一方面,如果您的智能体没有学会避免 运行 撞墙,则您的学习例程可能存在另一个问题(奖励函数可能存在错误?)
硬编码剪辑操作可能会导致您希望看到的行为,但它肯定会降低代理的整体性能。
你还实现了什么?如果还没有完成,考虑到经验回放可能会很好。
我已经多次看到代理会坚持执行单个操作的问题。我在以下情况下看到过:
- 输入图像未归一化,因此梯度变得很大,整个网络对单个动作饱和。
- 我没有使用熵加成来增加初始搜索的随机性。请查找有关此作品的更多详细信息 here。
希望对您有所帮助。
我构建了一个自定义强化学习 environment
和 agent
,这类似于迷宫游戏。
在迷宫中有 5 种可能的动作:上、下、左、右和停留。而如果被阻止,例如agent上不去,那人家怎么设计env
和agent
来模拟呢?
具体来说,智能体处于当前状态 s0
,根据定义,采取向下、向左和向右的动作会将状态更改为其他一些值,并立即获得奖励(>0,如果处于出口)。一种可能的方法是当采取行动 up
时,状态将保持在 s0
并且奖励将是一个很大的负数。理想情况下,智能体将了解这一点,并且永远不会在这种状态下再次进入 up
。
但是,我的代理似乎没有学习这个。相反,它仍然 up
。另一种方法是对代理和环境进行硬编码,代理在 s0
时将无法执行操作 up
,我能想到的是:
- 在某些状态下
up
是不允许的,我们看一下不同动作的Q值 - 选择除
up
之外Q值最大的动作
- 因此,代理永远不会执行无效操作
请问上述方法可行吗?会不会有什么相关的问题?或者有没有更好的设计来处理边界和无效动作?
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?
另一方面,如果您的智能体没有学会避免 运行 撞墙,则您的学习例程可能存在另一个问题(奖励函数可能存在错误?)
硬编码剪辑操作可能会导致您希望看到的行为,但它肯定会降低代理的整体性能。
你还实现了什么?如果还没有完成,考虑到经验回放可能会很好。
我已经多次看到代理会坚持执行单个操作的问题。我在以下情况下看到过:
- 输入图像未归一化,因此梯度变得很大,整个网络对单个动作饱和。
- 我没有使用熵加成来增加初始搜索的随机性。请查找有关此作品的更多详细信息 here。
希望对您有所帮助。