我建立了一个自定义强化学习environment
和agent
,类似于迷宫游戏。
在迷宫中,有5种可能的动作:向上,向下,向左,向右和停留。如果被阻止,例如代理不能上来,那么人们如何设计env
和agent
来模拟呢?
具体来说,代理处于当前状态s0
,并且根据定义,执行向下,向左和向右的操作会将状态更改为其他一些值,并立即获得奖励(如果在退出状态,则为> 0 )。一种可能的方法是,当采取行动up
时,状态将停留在s0
上,而奖励将是一个很大的负数。理想情况下,代理将了解到这一点,并且永远不会在此状态下再次up
。
但是,我的经纪人似乎没有学到这个。相反,它仍然会up
。另一种方法是对代理和代理进行硬编码,以使代理在up
时无法执行操作s0
,我想到的是:
up
的状态下,我们查看不同动作的Q值up
以外的Q值最大的动作我在问上述方法可行吗?会不会有与此相关的问题?还是有更好的设计来处理边界和无效动作?
答案 0 :(得分:1)
我会说这应该可行(但比猜测的尝试还要好 它)。其他问题是:您的代理能够观察到什么状态?你在做奖励削减吗?
另一方面,如果您的探员没有学会避免撞墙,则您的学习程序中可能还会出现另一个问题(奖励功能中可能有错误吗?)
硬编码的剪切操作可能会导致您希望看到的行为,但是肯定会降低代理的整体性能。
您实施了什么?如果尚未完成,最好考虑一下经验重播。
答案 1 :(得分:1)
我已经多次看到这个问题,一个代理会坚持一个动作。在以下情况下,我已经看到了这一点:
我希望它会有所帮助。