这个问题是关于强化学习和每个/某些状态的可变动作空间。
可变动作空间
假设您有一个 MDP,其中动作的数量因状态而异(例如,如图 1 或图 2 所示)。我们可以将可变动作空间正式表示为
也就是说,对于每个状态,都存在一些其他状态不具有相同的动作集。
在图 1 和图 2 中,每个状态的动作相对较少。而是想象状态和动作的数量,其中和是一个非常大的整数。
环境
为了更好地理解这个问题,这里有一个环境示例。以图 1 为例,让它爆炸成一个非常大的有向无环图,其中包含一个源节点、巨大的动作空间和一个目标节点。目标是遍历一条路径,从任何起始节点开始,这样我们就可以最大化我们只会在目标节点处获得的奖励。在每个状态下,我们都可以调用一个函数它将状态作为输入并返回有效数量的操作。
方法
解决这个问题的一种简单方法(在此处和此处讨论)是为每个状态平等地定义动作集,每当执行的动作时返回负奖励并将代理移动到相同的状态,从而让代理“学习”在每个状态下哪些动作是有效的。这种方法有两个明显的缺点:
学习需要时间,特别是当 Q 值在终止或某些语句完成之前没有更新时(例如在体验回放中)
我们知道,为什么要学呢?
另一种方法(这里的第一个答案,也非常相似的论文,如大型离散动作空间中的深度强化学习和Deep RL 的连续动作的离散序列预测)是在连续空间中预测一些标量,并且通过某种方法,将其映射为有效的操作。这些论文正在讨论如何处理大的离散动作空间,并且所提出的模型似乎也可以解决这个问题。
遇到的另一种方法是,假设不同动作集的数量很小,有功能,, ...,返回有关该特定状态的操作有效的行动。换句话说,一个状态的执行动作有 3 个动作将被预测.
在论文中找不到任何方法(1、2或3),只是纯粹的猜测。我搜索了很多,但我找不到直接关于这个问题的论文。
有人知道关于这个主题的任何论文吗?还有其他方法来处理可变动作空间吗?