状态价值函数和状态-动作价值函数 定义及区别
状态价值函数 Vπ(s)V_{\pi}(s)Vπ(s) 用来衡量在状态 sss 下,遵循策略 π\piπ 时,代理(agent)从该状态出发能获得的期望回报。定义:Vπ(s)=E[∑t=0∞γtrt∣s0=s,π]V_{\pi}(s) = \mathbb{E} \left[ \sum_{t=0}^{\infty} \gamma^t r_t \mid s_0 = s, \pi \right]Vπ
1. 状态价值函数 Vπ(s)V_{\pi}(s)Vπ(s)
状态价值函数 Vπ(s)V_{\pi}(s)Vπ(s) 用来衡量在状态 sss 下,遵循策略 π\piπ 时,代理(agent)从该状态出发能获得的期望回报。
定义:
Vπ(s)=E[∑t=0∞γtrt∣s0=s,π] V_{\pi}(s) = \mathbb{E} \left[ \sum_{t=0}^{\infty} \gamma^t r_t \mid s_0 = s, \pi \right] Vπ(s)=E[t=0∑∞γtrt∣s0=s,π]
这里的 γ\gammaγ 是折扣因子,rtr_trt 是时刻 ttt 的奖励,s0=ss_0 = ss0=s 表示从状态 sss 开始,按照策略 π\piπ 进行行动,期望获得的累计回报。
- 也就是说,状态价值函数 Vπ(s)V_{\pi}(s)Vπ(s) 是在给定策略下,从状态 sss 出发,通过执行该策略得到的期望累积回报。
2. 状态-动作价值函数 Qπ(s,a)Q_{\pi}(s, a)Qπ(s,a)
状态-动作价值函数 Qπ(s,a)Q_{\pi}(s, a)Qπ(s,a) 评估的是:在状态 sss 下,执行某个特定的动作 aaa,然后遵循策略 π\piπ,能获得的期望回报。
定义:
Qπ(s,a)=E[∑t=0∞γtrt∣s0=s,a0=a,π] Q_{\pi}(s, a) = \mathbb{E} \left[ \sum_{t=0}^{\infty} \gamma^t r_t \mid s_0 = s, a_0 = a, \pi \right] Qπ(s,a)=E[t=0∑∞γtrt∣s0=s,a0=a,π]
在这里,a0=aa_0 = aa0=a 表示在状态 sss 时,代理选择动作 aaa,然后根据策略 π\piπ 继续行动,得到的期望回报。
- 状态-动作价值函数 Qπ(s,a)Q_{\pi}(s, a)Qπ(s,a) 评估的是从状态 sss 出发并执行某个特定动作 aaa 后,后续的回报。
3. 它们的区别
-
状态价值函数 Vπ(s)V_{\pi}(s)Vπ(s) 是一个 状态 到 期望回报 的映射,它描述的是从状态 sss 开始,按照策略 π\piπ 行动时的回报。它只关注状态本身,不考虑具体的动作。
-
状态-动作价值函数 Qπ(s,a)Q_{\pi}(s, a)Qπ(s,a) 是一个 状态-动作对 到 期望回报 的映射,它描述的是在状态 sss 下,选择特定的动作 aaa 后,按照策略 π\piπ 行动时的期望回报。它考虑了在某个状态下选择具体动作的影响。
4. 它们的关系
-
Vπ(s)V_{\pi}(s)Vπ(s) 与 Qπ(s,a)Q_{\pi}(s, a)Qπ(s,a) 之间的关系:
对于任意状态 sss,状态价值函数 Vπ(s)V_{\pi}(s)Vπ(s) 可以通过状态-动作价值函数 Qπ(s,a)Q_{\pi}(s, a)Qπ(s,a) 来计算。实际上,状态价值函数是状态-动作价值函数的加权平均:
Vπ(s)=∑a∈Aπ(a∣s)Qπ(s,a) V_{\pi}(s) = \sum_{a \in A} \pi(a | s) Q_{\pi}(s, a) Vπ(s)=a∈A∑π(a∣s)Qπ(s,a)
这里,π(a∣s)\pi(a | s)π(a∣s) 是在状态 sss 下采取动作 aaa 的概率(即策略 π\piπ 的定义),Qπ(s,a)Q_{\pi}(s, a)Qπ(s,a) 是状态 sss 下执行动作 aaa 的价值。
换句话说,状态价值函数是通过对每个动作的状态-动作价值函数加权平均得到的。
-
同样地,从 Vπ(s)V_{\pi}(s)Vπ(s) 出发,可以通过选取最大值来得到 Qπ(s,a)Q_{\pi}(s, a)Qπ(s,a):
Qπ(s,a)=r(s,a)+γ∑s′P(s′∣s,a)Vπ(s′) Q_{\pi}(s, a) = r(s, a) + \gamma \sum_{s'} P(s'|s, a) V_{\pi}(s') Qπ(s,a)=r(s,a)+γs′∑P(s′∣s,a)Vπ(s′)
这表示,状态-动作价值函数不仅考虑当前的即时奖励 r(s,a)r(s, a)r(s,a),还要加上在下一状态 s′s's′ 上的期望价值 Vπ(s′)V_{\pi}(s')Vπ(s′)。
5. 为什么它们看起来没有区别?
从定义上看,状态价值函数和状态-动作价值函数看起来是有区别的,但它们其实是紧密相关的。状态价值函数只是状态-动作价值函数在给定策略下的加权平均。在很多情况下,通过 状态-动作价值函数 我们能够得到 状态价值函数,反之亦然。
- 如果你知道了状态-动作价值函数 Qπ(s,a)Q_{\pi}(s, a)Qπ(s,a),可以通过加权求和得到状态价值函数 Vπ(s)V_{\pi}(s)Vπ(s)。
- 反之,如果你知道了状态价值函数 Vπ(s)V_{\pi}(s)Vπ(s),可以通过选择最优动作来得到相应的状态-动作价值函数 Qπ(s,a)Q_{\pi}(s, a)Qπ(s,a)。
总结
- 状态价值函数 Vπ(s)V_{\pi}(s)Vπ(s) 是状态到期望回报的映射,只考虑状态,不考虑动作。
- 状态-动作价值函数 Qπ(s,a)Q_{\pi}(s, a)Qπ(s,a) 是状态-动作对到期望回报的映射,考虑了具体的动作。
- 它们之间的关系是:状态价值函数是状态-动作价值函数的加权平均,而状态-动作价值函数可以通过状态价值函数来进行更新。
通过这些关系,强化学习算法可以通过计算 状态-动作价值函数 来最终确定最优策略。
更多推荐

所有评论(0)