在 Q-learning 中,如何告诉代理该动作 在州内不可用?
提供一个非常大的负奖励是好的,还是可能让它偏离轨道?根据我阅读的内容(链接),最好使用小奖励(-1.0 和 1.0 之间)
在 Q-learning 中,如何告诉代理该动作 在州内不可用?
提供一个非常大的负奖励是好的,还是可能让它偏离轨道?根据我阅读的内容(链接),最好使用小奖励(-1.0 和 1.0 之间)
在 Q-learning 中,如何告诉代理该动作 在州内不可用?
部分取决于您所说的“不可用”是什么意思。如果环境是这样的,可以采取行动,但后果很糟糕,那么由于后果而产生的负回报可能是最好的选择。您可以为实时系统执行此操作,在该系统中可以实际执行操作,不能以任何方式自动阻止,并且会产生不良后果。
可能某个操作不可用,因为甚至无法在提供的环境中尝试它。这可能发生在棋盘游戏中,其中某些动作是游戏规则不允许的。您有几个选项,具体取决于您构建代理的方式。
一个简单的方法是只向代理呈现它最初被允许采取的行动。环境的代码应该已经知道这个列表,所以如果你正在考虑惩罚选择,那么你也可以选择不呈现它。这适用于基于价值的方法,例如 Q-learning,当您实现. 如果允许的操作集是,然后是状态的贪心动作选择是. 您需要做的就是实施在代码中并循环对 Q(s,a) 的不同调用以找到最佳值。
如果你已经在整个动作空间上并行实现了 Q 函数(神经网络效率的好选择),那么网络只需要状态作为输入,并输出一个向量,例如. 在这种情况下,您将使用您的实现在选择最佳操作之前屏蔽不需要的操作。计算非必需动作有点浪费,但如果它是一个足够罕见的异常,那么总体上可能仍然更有效。
除了 Q-learning,当你有一个输出 softmax 动作概率的策略网络时,你也可以使用类似的动作掩码。在这种情况下,您还需要在生成所选操作之前重新规范化概率。
除非您有一个特定的目标或好处让代理了解被环境阻止的操作,否则查询环境以支持阻止是最简单的,如上所述。对于根据游戏规则进行非法动作的游戏机器人来说,这绝对是这种情况。理由是智能体正在学习玩游戏,而它学习游戏规则的目标是不那么有趣的干扰。
或者,它应该允许错误的动作选择,然后给出负奖励(可以是一个小的奖励,与系统中的其他奖励具有相同的规模)。请注意,这还应该增加时间步并返回未更改的状态。代理人最终将学会不采取这种毫无意义的、被禁止的行动。也许有时您对代理是否可以学习规则感兴趣。