何时使用状态值函数五(秒)V(s)以及何时使用状态-动作价值函数Q ( s , a )Q(s,a)?

人工智能 强化学习 比较 价值函数
2021-11-03 09:27:05

我看到了价值函数之间的区别V(s)Q(s,a). 但是我什么时候使用每一个?当我在 Matlab 中编码时,我只使用了Q(s,a)直接(因为我正在考虑表格方法)。那么,什么时候比另一个更有利呢?我有一个很大的状态空间。

1个回答

使用之间的核心区别V(s)或者Q(s,a)是:

V(s)不能单独使用来决定策略。

您要么需要单独的策略功能π(a|s)它是价值函数,或者如果您可以访问环境的分布模型,则可以从中派生策略p(r,s|s,a)- 获得奖励的概率r并到达下一个状态s给定开始s,a. 派生策略将是确定性的π(s)=argmaxar,sp(r,s|s,a)(r+γV(s))

相比下,Q(s,a)可用于派生策略而不参考任何模型:π(s)=argmaxaQ(s,a). 这使得动作值函数 Q 对于无模型的基于值的控制方法是必要的。因此,蒙特卡洛控制、SARSA、Q-Learning 都将使用动作值。

V(s)通常比Q(s,a).

状态值表使用的空间是O(|S|)

动作值表使用的空间是O(|S×A|)

当您使用近似时,这些空间问题也适用 - 您需要学习近似的输入域Q(s,a)比你需要学习的要大V(s). 尽管对于具有大量维度的大型状态空间,近似后的相对差异可能足够小,以至于您并不真正关心。

较小的空间使V(s)如果你可以使用它是一个不错的选择。好处是内存占用更小,并且通常学习速度更快,因为要学习的单独值更少(并不总是更快,因为您仍然需要探索所有状态下的所有操作才能学习准确的值)。

可以使用的典型场景V(s)代替Q(s,a)

  • 您可以访问完整的环境模型,如上文第一部分所述。

或者

  • 您正在使用单独的策略功能。在最优控制中,这通常发生在 actor-critic 方法中,这是相对先进的 RL 方法,但却是一种流行的方法,尤其是当动作空间很大时。这种情况也出现在预测问题中,任务不是优化任何东西,而是评估固定策略。

或者

  • 你的行为是直接选择下一个状态。这称为状态后表示,与状态值略有不同V(s),但具有使用较小空间的类似好处。它可用于确定棋盘游戏和类似环境中的值。

如果这些情况都不适用,那么您将不得不使用动作价值函数Q(s,a). 您也可以选择使用Q(s,a)因为在您工作的任何框架中都更容易坚持使用它。有时使用它的好处V(s)相反,它们不够大,不值得付出努力。