我写了一个健身房环境,我正在使用DQN代理从稳定基线训练这个健身房环境。
我的环境对的影响
"item_list").
,那么问题是什么?
在item_list中允许最多的项目数。这意味着,如果item_list几乎满了,并且代理选择了动作>= 1->超过了"item_list“的容量,那么这是一个不可逾越的动作。
,在这种情况下会发生什么?
在这种情况下,命令将不会添加到"item_list“中,并且代理将获得一个负面的奖励。问题是我的经纪人的观察一点也不连贯。这会导致我的探员一次又一次地选择同样的行动。
什么时候成为问题?
在训练过程中,这并不重要。Agent将学会避免选择这样的操作,并且探索会在一段时间后使代理退出这个循环。不过,当我想使用经过训练的特工时,就不会有任何探索了。一个“坏”操作就足以将该代理发送到一个无限循环中,即选择不适合item_list的顺序。
我在找什么样的答案?
有没有一种方法来处理那些无限循环--除了硬编码之外--还有很多异常?如果item_list ist的容量超过了它的能力,那么就很容易硬编码这个列表应该按照它原来的方式关闭。虽然如果item_list是空的,并且代理选择操作== 0(关闭空列表),那么也会出现相同的无限循环。在其他许多情况下,这个问题可能会发生。有没有一个我不知道的聪明的解决方案?
发布于 2022-06-29 15:38:33
考虑以下两种一般办法:
第一,不允许非法行为。当代理对操作输出分布时,将其乘以指示向量,该指示向量将非法操作归零。然后试一试一个动作。
第二,在非法行为结束后,以负面奖励结束这一插曲。您已经为非法行为分配了一个负面奖励,另外还终止了插曲,这样就没有无限循环了。
我会选第一个。
编辑:参见这个问题:https://ai.stackexchange.com/questions/2980/how-should-i-handle-invalid-actions-when-using-reinforce
https://stackoverflow.com/questions/72804054
复制相似问题