我有一个用例,其中不同状态的操作集不同。代理是否知道哪些动作对每个状态有效,或者代理是否只知道整个动作空间(在这种情况下,我猜环境需要丢弃无效动作)?
我想答案是肯定的,但我想确认一下。
我有一个用例,其中不同状态的操作集不同。代理是否知道哪些动作对每个状态有效,或者代理是否只知道整个动作空间(在这种情况下,我猜环境需要丢弃无效动作)?
我想答案是肯定的,但我想确认一下。
这实际上是一种实现选择,将取决于您选择如何表示代理从状态映射到动作的函数模型。
如果您明确表示整个状态空间,就像您可能选择通过使用值迭代之类直接解决 MDP 来解决的简单基准问题一样,那么您还可以轻松地明确表示代理可以执行的操作集在每种状态下,代理都可以学习仅采取这些行动的期望值。
如果您的状态空间非常大,您可能无法明确表示它,并且您的代理更有可能使用价值函数或其策略的一些近似值,就像Q-Learning中通常所做的那样。在这里,通常最好定义您的环境模型,以便在状态下采取无效动作会导致一些明确定义的结果,或导致代理随机重新选择其动作,直到最终选择有效动作。代理最终将了解到选择无效动作会导致不良结果,而不会“意识到”该动作是无效的。