我有一个带有节点和链接的网络,每个节点在初始状态下都有一定数量的资源(可以采用离散值)。在随机的时间步长上,会生成一个服务,并且基于代理的动作,网络状态会发生变化,从而减少其中一些节点和链接资源。
网络可以拥有的所有可能状态的数量太大而无法计算,特别是因为在生成服务时存在随机因素。
假设我将状态空间设置得足够大(例如 5000),并且我使用 Q-Learning 进行 1000 集。之后,当我测试代理时(),如果代理面临在训练阶段没有遇到的状态会发生什么?
我有一个带有节点和链接的网络,每个节点在初始状态下都有一定数量的资源(可以采用离散值)。在随机的时间步长上,会生成一个服务,并且基于代理的动作,网络状态会发生变化,从而减少其中一些节点和链接资源。
网络可以拥有的所有可能状态的数量太大而无法计算,特别是因为在生成服务时存在随机因素。
假设我将状态空间设置得足够大(例如 5000),并且我使用 Q-Learning 进行 1000 集。之后,当我测试代理时(),如果代理面临在训练阶段没有遇到的状态会发生什么?
有太多无法实际访问的状态是 RL 中的一个常见问题。这正是我们经常使用函数逼近的原因。如果你用一个好的函数逼近器(如神经网络)替换你的 q 表,它应该能够很好地泛化到它尚未遇到的状态。
如果你不使用函数逼近器而是坚持使用表格,那么代理在遇到新状态时将不知道该怎么做。有关更多信息,请参阅 Sutton 和 Barto 的强化学习,第 9 章。
我将尝试用国际象棋这个非常具体的例子来解释这个问题。在国际象棋中,可能的状态数是您可以使用棋盘上的棋子进行的任何配置。所以,起始位置是一种状态,在你做了一个动作之后,你就处于不同的状态。棋态总数超过. 因此,国际象棋机器人不太可能在比赛时看到所有训练状态。
那么,算法是如何解决这个问题的呢?对于答案,我们必须看看 RL 算法如何选择最佳移动。这显然取决于算法的实现,但是,一般来说,计算“多好”的移动是通过使用考虑到“潜在的未来奖励”的近似值来完成的。如果你抓住了皇后,那可能会很好(这里不是国际象棋专家),即使你以前没有见过这个确切的状态。如果你走得更远,网络可能能够估计未来许多动作会发生什么。细节归结为实施等,但这是它的要点。