RL 代理,如何禁止操作?

数据挖掘 强化学习
2022-02-24 11:50:34

在 Q-learning 中,如何告诉代理该动作a7 在州内不可用st?

提供一个非常大的负奖励是好的,还是可能让它偏离轨道?根据我阅读的内容(链接),最好使用小奖励(-1.0 和 1.0 之间)

1个回答

在 Q-learning 中,如何告诉代理该动作a7 在州内不可用st?

部分取决于您所说的“不可用”是什么意思。如果环境是这样的,可以采取行动,但后果很糟糕,那么由于后果而产生的负回报可能是最好的选择。您可以为实时系统执行此操作,在该系统中可以实际执行操作,不能以任何方式自动阻止,并且会产生不良后果。

可能某个操作不可用,因为甚至无法在提供的环境中尝试它。这可能发生在棋盘游戏中,其中某些动作是游戏规则不允许的。您有几个选项,具体取决于您构建代理的方式。

一个简单的方法是只向代理呈现它最初被允许采取的行动。环境的代码应该已经知道这个列表,所以如果你正在考虑惩罚选择,那么你也可以选择不呈现它。这适用于基于价值的方法,例如 Q-learning,当您实现Q(s,a). 如果允许的操作集是A(s),然后是状态的贪心动作选择stat=argmaxaA(st)Q(st,a). 您需要做的就是实施A(s)在代码中并循环对 Q(s,a) 的不同调用以找到最佳值。

如果你已经在整个动作空间上并行实现了 Q 函数(神经网络效率的好选择),那么网络只需要状态s作为输入,并输出一个向量,例如[Q(s,a0),Q(s,a1),Q(s,a2),Q(s,a4),Q(s,a5)...Q(s,aN)]. 在这种情况下,您将使用您的实现A(s)在选择最佳操作之前屏蔽不需要的操作。计算非必需动作有点浪费,但如果它是一个足够罕见的异常,那么总体上可能仍然更有效。

除了 Q-learning,当你有一个输出 softmax 动作概率的策略网络时,你也可以使用类似的动作掩码。在这种情况下,您还需要在生成所选操作之前重新规范化概率。

除非您有一个特定的目标或好处让代理了解被环境阻止的操作,否则查询环境以支持阻止是最简单的,如上所述。对于根据游戏规则进行非法动作的游戏机器人来说,这绝对是这种情况。理由是智能体正在学习游戏,而它学习游戏规则的目标是不那么有趣的干扰。

或者,它应该允许错误的动作选择,然后给出负奖励(可以是一个小的奖励,与系统中的其他奖励具有相同的规模)。请注意,这还应该增加时间步并返回未更改的状态。代理人最终将学会不采取这种毫无意义的、被禁止的行动。也许有时您对代理是否可以学习规则感兴趣。