本文最后更新于 2026年7月20日 晚上
赵老师开源的 Github 仓库、赵老师的 B站 课程视频
背景来自 XHS 汉堡夹星Stella
Overview
本章主要内容:
- 一个核心概念:状态价值(state value)
- 一个基础工具:贝尔曼方程(Bellman equation)
Outline:
- 动机与例子:为何要研究 state value 和 Bellman equation?
- 正式定义 state value
- Bellman equation 的推导以及 matrix-vector form,如何利用 Bellman equation 求解 state value
- 从 state value 到 action value
Lecture 3: Motivating Examples
3.1 Why return is important?
- 什么是 return?沿一条 trejectory 获得的(折扣)reward 总和。
- return 为何重要?见以下示例。
Example 1:蓝色为 target,橙色是 forbidden area,白色是 accessible area.
- 问题:从起点 s1 出发,哪种策略是“最优”的?哪种是“最劣”的?
- 直觉:第一种最优;第二种最劣,进入了禁区;第三种一般,因为有一定概率进入橙色区域。
如何用数学描述这种直觉?return 可用于评估策略。
基于策略 1(左图)
从 s1 出发,折扣回报(discounted reward)为
return1=0+γ1+γ21+…,=γ(1+γ+γ2+…),=1−γγ.
基于策略 2(中图)
从 s1 出发,折扣回报为
return2=−1+γ1+γ21+…,=−1+γ(1+γ+γ2+…),=−1+1−γγ.
基于策略 3(右图)
注意,策略 3 是随机的:从 s1 出发,折扣回报是
return3=0.5(−1+1−γγ)+0.5(1−γγ),=−0.5+1−γγ.
综上,从 s1 出发,
return1>return3>return2
上述不等式表明,第一种策略最优,第二种策略最劣,这与我们的直觉完全一致。
3.2 How to calculate return?
Example 2
Method 1
设 vi 表示从 si(i=1,2,3,4)出发获得的回报,则
v1v2v3v4=r1+γr2+γ2r3+…=r2+γr3+γ2r4+…=r3+γr4+γ2r1+…=r4+γr1+γ2r2+…
Method 2
v1v2v3v4=r1+γ(r2+γr3+…)=r1+γv2=r2+γ(r3+γr4+…)=r2+γv3=r3+γ(r4+γr1+…)=r3+γv4=r4+γ(r1+γr2+…)=r4+γv1
可以发现,从不同状态出发得到的 return 实际上依赖于从其他状态出发得到的 return(return 相互依赖)。这个 idea 在强化学习中称为 自举(Bootstrapping)!
如何解方程?
写成如下矩阵-向量形式:
vv1v2v3v4=rr1r2r3r4+γv2γv3γv4γv1=rr1r2r3r4+γP0001100001000010vv1v2v3v4
可改写为
v=r+γPv
这就是针对这个简单的确定性问题的 贝尔曼方程(Bellman equation)!
- 尽管简单,但它展示了核心思想:一个状态的价值依赖于其他状态的价值。
- 矩阵-向量形式更清晰地展示了如何求解状态价值。
Exercise 1
考虑图中所示的策略,请写出回报之间的关系(即写出贝尔曼方程)
沿用 Example 1 中的左图
可以得到,
v1v2v3v4=0+γv3=1+γv4=1+γv4=1+γv4
我们可以先计算 v4,然后计算 v3、v2、v1。
Lecture 4: State Value
4.1 Some Notation
考虑如下单步过程:
St→AtRt+1,St+1
- t,t+1:离散时间点
- St:时间 t 的状态
- At:在状态 St 采取的动作
- Rt+1:采取 At 后获得的奖励
- St+1:采取 At 后转移到的状态
注意 St,At,Rt+1 都是随机变量,既然是随机变量,我就可以进行求期望等操作。
该步骤由以下概率分布决定:
- St→At,由 π(At=a∣St=s) 决定
- St,At→Rt+1,由 p(Rt+1=r∣St=s,At=a) 决定
- St,At→St+1,由 p(St+1=s′∣St=s,At=a) 决定
此时,我们假设已知模型(即概率分布)!
4.2 Multi-Step Trajectory & Discounted Return
考虑如下多步轨迹:
St→AtRt+1,St+1→At+1Rt+2,St+2→At+2Rt+3,…
discounted return 为
Gt=Rt+1+γRt+2+γ2Rt+3+…
- γ∈[0,1) 是折扣率。
- 由于 Rt+1,Rt+2,… 是随机变量,Gt 也是随机变量。
4.3 State Value
Gt 的期望被定义为 (state-value function),或简称为 (state value):
vπ(s)=E[Gt∣St=s]
Remarks:
- state value 是 s 的函数:它是状态从 s 开始的条件期望。
- state value 是策略 π 的函数:对于不同的策略,状态价值可能不同。
- 它表示一个状态的“价值”。如果状态价值更大,那么该策略更好,因为可以获得更大的累积奖励。
Q:return 和 state value 之间的关系是什么?
A:return 是对 单个 trajectory 而言的;而 state value 是对 多个 trajecotry 得到的 returns 求期望。
特别地,如果策略 π(a∣s)、奖励 p(r∣s,a)、状态转移概率 p(s′∣s,a) 都是确定性的,那么只有一条 trajectory,此时状态价值与回报相同。
Eample 1 续
设从左到右的策略分别为 1、2、3
计算策略 π1、π2、π3 在同一状态下的 state value:
vπ1(s1)vπ2(s1)vπ3(s1)=0+γ×1+γ2×1+⋯=γ(1+γ+γ2+…)=1−γγ=−1+γ×1+γ2×1+⋯=−1+γ(1+γ+γ2+…)=−1+1−γγ=0.5(−1+1−γγ)+0.5(1−γγ)=−0.5+1−γγ
Lecture 5: Bellman Equation - Derivation
我们已经定义了 state value,现在需要求解它。计算的工具就是 Bellman Equation。
一句话解释 Bellman Equation:它描述了不同状态的 state value 之间的关系。
5.1 Deriving the Bellman equation
考虑一条随机轨迹:
St→AtRt+1,St+1→At+1Rt+2,St+2→At+2Rt+3,…
折扣回报 Gt 可写为:
Gt=Rt+1+γRt+2+γ2Rt+3+⋯=Rt+1+γ(Rt+2+Rt+3+⋯)=Rt+1+γGt+1
由状态价值的定义,将其拆分为 即时奖励(immediate reward) 和 未来奖励(future reward):
vπ(s)=E[Gt∣St=s]=E[Rt+1+γGt+1∣St=s]=E[Rt+1∣St=s]+γE[Gt+1∣St=s]
第一项 E[Rt+1∣St=s](即时奖励的期望):
E[Rt+1∣St=s]=a∑π(a∣s)E[Rt+1∣St=s,At=a]=a∑π(a∣s)r∑p(r∣s,a)r
第二项 E[Gt+1∣St=s](未来奖励的期望):
E[Gt+1∣St=s]=s′∑E[Gt+1∣St=s,St+1=s′] p(s′∣s)=s′∑E[Gt+1∣St+1=s′] p(s′∣s)=s′∑vπ(s′) p(s′∣s)=s′∑vπ(s′)a∑p(s′∣s,a)π(a∣s)
其中,E[Gt+1∣St=s,St+1=s′]=E[Gt+1∣St+1=s′] 利用了马尔可夫性质(无记忆性)。
贝尔曼方程(元素形式)
vπ(s)=E[Rt+1∣St=s]+γE[Gt+1∣St=s]=a∑π(a∣s)r∑p(r∣s,a)r+γs′∑vπ(s′)a∑p(s′∣s,a)π(a∣s)=a∑π(a∣s)[r∑p(r∣s,a)r+γs′∑p(s′∣s,a)vπ(s′)],∀s∈S
要点:
- 上式称为贝尔曼方程(Bellman equation),它刻画了不同状态的 state value(vπ(s) 与 vπ(s′))之间的关系。
- 由两项组成:即时奖励项和未来奖励项。
- 这不是一个式子,而是一组方程:每个状态都有一个这样的方程!(如果有 n 个状态,我们就能得到 n 个方程)
- vπ(s) 和 vπ(s′) 是待计算的状态价值。计算方法就是 Bootstrapping!
- 上式中的 π(a∣s) 是给定策略,所以 Bellman Equation 是依赖于 policy 的。求解该方程,即求解 policy 的 state value,因此也称为 策略评估(policy evaluation)。
- p(r∣s,a) 和 p(s′∣s,a) 代表动态模型(dynamic model):我们可能知道这个 model,也可能不知道这个 model,会有不同的方法用于计算。
5.2 Example 1
Bellman equation 示例 1
状态价值函数的通用贝尔曼方程为,
vπ(s)=a∑π(a∣s)[r∑p(r∣s,a)r+γs′∑p(s′∣s,a)vπ(s′)]
先推导 s1 的贝尔曼方程,本案例为确定性策略:
- 策略分布:π(a=a3∣s1)=1,π(a=a3∣s1)=0
- 状态转移:p(s′=s3∣s1,a3)=1,p(s′=s3∣s1,a3)=0
- 奖励分布:p(r=0∣s1,a3)=1,p(r=0∣s1,a3)=0
将条件代入通用公式,化简得:
vπ(s1)=0+γvπ(s3)
同理推导剩余状态,完整方程组:
vπ(s1)vπ(s2)vπ(s3)vπ(s4)=0+γvπ(s3)=1+γvπ(s4)=1+γvπ(s4)=1+γvπ(s4)
可以解出,
vπ(s4)vπ(s3)vπ(s2)vπ(s1)=1−γ1=1−γ1=1−γ1=1−γγ
如果取 γ=0.9,则:
vπ(s4)vπ(s3)vπ(s2)vπ(s1)=1−0.91=10=1−0.91=10=1−0.91=10=1−0.90.9=9
说明:因为 s1 距离 target 较远,因此 vπ(s1) 值较小。
5.3 Example 2
Bellman equation 示例 2
列出每个状态的贝尔曼方程,
vπ(s1)vπ(s2)vπ(s3)vπ(s4)=0.5[0+γvπ(s3)]+0.5[−1+γvπ(s2)],=1+γvπ(s4),=1+γvπ(s4),=1+γvπ(s4).
从最后一个方程向前逐个求解,
vπ(s4)=1−γ1,vπ(s3)=1−γ1,vπ(s2)=1−γ1
将 vπ(s2),vπ(s3) 代入 s1 的方程化简:
vπ(s1)=0.5[0+γvπ(s3)]+0.5[−1+γvπ(s2)]=−0.5+1−γγ.
将 γ=0.9 带入,得到各状态价值数值:
vπ(s4)=10,vπ(s3)=10,vπ(s2)=10,vπ(s1)=−0.5+9=8.5
注意到,在上一个策略中我们得到的 vπ(s1)=9>8.5,说明策略评估结果下降。(当前策略不如旧策略好)
对上面得到的元素形式的 Bellman equation,我们无法直接求解。但如果我们列出所有状态的方程,就可以得到一个方程组!
6.1 Bellman 方程的矩阵-向量形式
我们可以重写贝尔曼方程为:
vπ(s)=rπ(s)+γs′∑pπ(s′∣s)vπ(s′)
- rπ(s) 表示当前策略 π 在状态 s 下的即时奖励的期望,
rπ(s)≜a∑π(a∣s)r∑p(r∣s,a)r
- pπ(s′∣s) 表示当前策略 π 在状态 s 下转移到状态 s′ 的概率,
pπ(s′∣s)≜a∑π(a∣s)p(s′∣s,a)
将 n 个状态的方程合并为 矩阵-向量形式(Matrix-Vector Form):
vπ=rπ+γPπvπ
其中:
- vπ=[vπ(s1),…,vπ(sn)]T∈Rn
- rπ=[rπ(s1),…,rπ(sn)]T∈Rn
- Pπ∈Rn×n,[Pπ]ij=pπ(sj∣si),是状态转移矩阵
为什么考虑矩阵-向量形式?
- 一个未知量依赖于另一个未知量。
- 元素形式对每个状态 s∈S 都成立,意味着有 ∣S∣ 个这样的方程!
- 将所有方程放在一起得到一个线性方程组,可以简洁地写成矩阵-向量形式。
- 矩阵-向量形式非常优雅且重要。
例子回顾
当环境存在4个状态时,矩阵形式贝尔曼方程 vπ=rπ+γPπvπ 可展开写作:
vπvπ(s1)vπ(s2)vπ(s3)vπ(s4)=rπrπ(s1)rπ(s2)rπ(s3)rπ(s4)+γPπpπ(s1∣s1)pπ(s1∣s2)pπ(s1∣s3)pπ(s1∣s4)pπ(s2∣s1)pπ(s2∣s2)pπ(s2∣s3)pπ(s2∣s4)pπ(s3∣s1)pπ(s3∣s2)pπ(s3∣s3)pπ(s3∣s4)pπ(s4∣s1)pπ(s4∣s2)pπ(s4∣s3)pπ(s4∣s4)vπvπ(s1)vπ(s2)vπ(s3)vπ(s4)
针对本网格确定性策略案例(中图),代入数值后矩阵方程为:
vπ(s1)vπ(s2)vπ(s3)vπ(s4)=0111+γ0000000010000111vπ(s1)vπ(s2)vπ(s3)vπ(s4)
针对随机策略案例(右图),代入数值后矩阵方程为:
vπ(s1)vπ(s2)vπ(s3)vπ(s4)=0.5(0)+0.5(−1)111+γ00000.50000.50000111vπ(s1)vπ(s2)vπ(s3)vπ(s4)
6.2 求解状态价值
为什么求解状态价值?
- 给定一个策略,找出相应的状态价值称为 (policy evaluation)!这是强化学习中的基本问题,是寻找更好策略的基础。
方法 1:闭式解
vπ=(I−γPπ)−1rπ
在实践中,状态空间往往维数较大,仍需使用数值工具计算矩阵逆。
方法 2:迭代解
vk+1=rπ+γPπvk
该算法生成序列 {v0,v1,v2,…}。可以证明:当 k→∞ 时,
vk→vπ=(I−γPπ)−1rπ
收敛性证明概要:定义误差 δk=vk−vπ,可得
δk+1=γPπδk⟹δk+1=γk+1Pπk+1δ0
由于 γ<1 且 Pπk 的每个元素不超过 1,故 δk→0。
网格世界示例
奖励设置:rboundary=rforbidden=−1,rtarget=+1,γ=0.9。
比较好的两个策略。
可以看到,在左图、右图的两个策略里,我们在 (1,4)(2,4) 采用的 action 是不一样的,但最后可以得到相同的状态价值。这说明:不同策略可以得到相同的状态价值。
比较差的两个策略。
"好"策略的状态价值较大,"差"策略的状态价值较小。策略评估结果展示了不同策略的定量比较。
Lecture 7: Action Value
7.1 动作价值
状态价值与动作价值定义
- 状态价值:智能体从某个状态出发,能获得的平均回报。
- 动作价值:智能体从某个状态出发、执行某一特定动作后,能获得的平均回报。
为什么要引入动作价值?
- 我们需要判断哪个动作的效果更好。这一点在后续课程中会讲解得更清晰,后续内容会频繁使用动作价值。
7.2 动作价值的数学定义
qπ(s,a)=E[Gt∣St=s, At=a]
- qπ(s,a) 是 状态-动作二元组 (s,a) 的函数
- qπ(s,a) 的取值依赖策略 π
由条件期望的性质可得:
vπ(s)E[Gt∣St=s]=a∑qπ(s,a)E[Gt∣St=s,At=a]π(a∣s)
因此得到,
vπ(s)=a∑π(a∣s)qπ(s,a)(2)
回顾 state value 的贝尔曼公式:
vπ(s)=a∑π(a∣s)[r∑p(r∣s,a)r+γs′∑p(s′∣s,a)vπ(s′)](3)
于是上式方括号内整体即为动作价值 qπ(s,a)。我们就此得到 动作价值函数(action-value function) 的贝尔曼方程,
qπ(s,a)=r∑p(r∣s,a)r+γs′∑p(s′∣s,a)vπ(s′)(4)
两个公式的互补关系
式(2) 和 式(4) 是同一枚硬币的两面,二者互为转换关系:
- 式(2):由 action value 加权求和,推导出 state value;
- 式(4):由即时奖励 + 后续 state value,推导出 action value。
7.3 例子
例子
action-value = immediate reward + discounted future state-value
写出 s1 的 action value:
qπ(s1,a2)=−1+γvπ(s2)
注意,虽然图中的 policy 只能往 s2 转移,但实际上 a1,a3,a4,a5 的 action-value 也可以计算!
qπ(s1,a1)qπ(s1,a3)qπ(s1,a4)qπ(s1,a5)=−1+γvπ(s1)=0+γvπ(s3)=−1+γvπ(s1)=0+γvπ(s1)
要点
- 动作价值(Action value)很重要,因为我们关心应该采取哪个动作(选择 action value 最高的那个动作)
- 我们可以先计算所有状态价值,然后再计算动作价值。
- 我们也可以直接计算动作价值,无论是否使用模型。
Summary
核心概念与结果
-
状态价值(State value):
vπ(s)=E[Gt∣St=s]
-
动作价值(Action value):
qπ(s,a)=E[Gt∣St=s,At=a]
-
贝尔曼方程(逐元素形式 / elementwise form):
vπ(s)=a∑π(a∣s)qπ(s,a)[r∑p(r∣s,a)r+γs′∑p(s′∣s,a)vπ(s′)]=a∑π(a∣s)qπ(s,a)
-
贝尔曼方程(矩阵-向量形式 / matrix-vector form):
vπ=rπ+γPπvπ
-
求解贝尔曼方程的方法:
- 闭式解(closed-form solution)
vπ=(I−γPπ)−1rπ
vk+1=rπ+γPπvk,k=0,1,2,...