本文最后更新于 2026年7月20日 晚上
赵老师开源的 Github 仓库、赵老师的 B站 课程视频
背景来自 XHS 特提恩聪明头
Overview
本章主要内容:
- 核心概念:最优状态价值(optimal state value)和最优策略(optimal policy)
- 一个基础工具:贝尔曼最优方程(Bellman Optimal Equation,BOE)
Outline:
- 动机示例——如何改进 policy?
- optimal policy 与 BOE
- BOE 进一步的拓展
- optimal policy 的性质
Lecture 8 动机示例——如何改进策略?
例子
列出贝尔曼方程
vπ(s1)vπ(s2)vπ(s3)vπ(s4)=−1+γvπ(s2)=1+γvπ(s4)=1+γvπ(s4)=1+γvπ(s4)
令 γ=0.9,可以计算出 state value,
vπ(s4)=vπ(s3)=vπ(s2)=10,vπ(s1)=8
然后可以得到 action value(以 s1 为例)
qπ(s1,a1)qπ(s1,a2)qπ(s1,a3)qπ(s1,a4)qπ(s1,a5)=−1+γvπ(s1)=6.2=−1+γvπ(s2)=8=0+γvπ(s3)=9=−1+γvπ(s1)=6.2=0+γvπ(s1)=7.2
可以注意到,上面的策略会进入 forbidden area s2,这不是一个好的策略。
问题:当策略不够好时,如何改进?
刚刚我们的策略如下,
π(a∣s1)={10a=a2a=a2
如果选择最大的动作值,则得到新策略:
πnew(a∣s1)={10a=a⋆a=a⋆
其中,a⋆=argmaxaqπ(s1,a)=a3(在此情况下)。
为什么这样做可以改进策略?
- 直观上:action value 可用于评估动作。
- 数学上:将在本讲中介绍。
Lecture 9 最优策略与贝尔曼最优方程
9.1 最优策略的定义
状态值可用于评估策略的好坏:如果
vπ1(s)≥vπ2(s),∀s∈S
则称 π1 比 π2 “更好”。
定义:如果对策略 π⋆,有
vπ⋆(s)≥vπ(s),∀s∈S
则称策略 π⋆ 是最优的!
该定义引出许多问题:
- 最优策略是否存在?
- 最优策略是否唯一?
- 最优策略是随机的还是确定性的?
- 如何获得最优策略?
为了回答这些问题,我们需要研究贝尔曼最优方程。
9.2 贝尔曼最优方程(BOE)
Bellman optimality equation(元素形式)
v(s)=πmaxa∑π(a∣s)[r∑p(r∣s,a)r+γs′∑p(s′∣s,a)v(s′)],∀s∈S=πmaxa∑π(a∣s)q(s,a),∀s∈S
说明:
- 此处 p(r∣s,a)、p(s′∣s,a) 已知。
- v(s)、v(s′) 未知,待计算。
- π(s) 是已知还是未知?对 Bellman 方程,π 是已知的;对于 BOE,π 是未知的,是需要我们求解的。
Bellman optimality equation(矩阵-向量形式)
v=πmax(rπ+γPπv)
其中,元素对应于 s 或 s′:
[rπ]s≜a∑π(a∣s)r∑p(r∣s,a)r
[Pπ]s,s′=pπ(s′∣s)≜a∑π(a∣s)p(s′∣s,a)
此处的 maxπ 是逐元素进行的。
BOE 巧妙但棘手!
- 为何巧妙?它以优雅的方式描述了最优策略和最优 state value。
- 为何棘手?右侧是一个最优化问题,其计算方式并不简单直观。
- 需回答的问题:
- 算法:如何求解上述方程?
- 存在性:方程的解是否存在?
- 唯一性:方程的解是否存在?
- 最优性:方程的解和最优 policy、最优 state value 有什么关系?
BOE 右侧的最大化
BOE 的元素形式如下,
v(s)=πmaxa∑π(a∣s)[r∑p(r∣s,a)r+γs′∑p(s′∣s,a)v(s′)],∀s∈S=πmaxa∑π(a∣s)q(s,a),∀s∈S
对于右侧的最大化问题,考虑先固定初始值 v(s′),由于模型 p 已知,此时上式右侧:
v(s′) 已知⟹q(s,a)=γs′∑p(s′∣s,a)v(s′) 已知
由于 ∑aπ(a∣s)=1,我们有:
πmaxa∑π(a∣s)q(s,a)⩽1×a∈A(s)maxq(s,a)
当 π(a∣s)={10a=a⋆a=a⋆ 时可以取到等号,达到最优,其中 a⋆=argmaxaq(s,a)。
Lecture 10 贝尔曼最优方程拓展
10.1 求解贝尔曼最优方程
BOE 为 v=maxπ(rπ+γPπv)。令
f(v):=πmax(rπ+γPπv)
则贝尔曼最优方程可以重写为 v=f(v),其中
[f(v)]s=πmaxa∑π(a∣s)q(s,a),∀s∈S
接下来,如何求解该方程?
10.2 压缩映射定理
基本概念
压缩映射定理
对于形如 x=f(x) 的方程,若 f 是压缩映射,则:
- 存在性:存在不动点 x⋆ 满足 f(x⋆)=x⋆。
- 唯一性:不动点 x⋆ 唯一。
- 算法:考虑序列 {xk} 其中 xk+1=f(xk),则 xk→x⋆ 当 k→∞,且收敛速度是指数级的。
10.3 求解贝尔曼最优方程
回到贝尔曼最优方程:v=f(v)=maxπ(rπ+γPπv)
定理(映射 f(v) 的压缩性质):贝尔曼最优方程右侧的函数 f(v) 是一个压缩映射。即对于任意的 v1,v2∈R∣S∣,满足
∥f(v1)−f(v2)∥∞⩽γ∥v1−v2∥∞,
其中 γ∈(0,1) 为折扣因子,∥⋅∥∞ 代表无穷范数(最大值范数),定义为向量全部元素中的最大绝对值。
证明: 任取两个向量 v1,v2∈R∣S∣,设二者的最优策略分别为 π1⋆ 和 π2⋆,
π1⋆≜argπmax(rπ+γPπv1),π2⋆≜argπmax(rπ+γPπv2).
于是有
f(v1)f(v2)=πmax(rπ+γPπv1)=rπ1⋆+γPπ1⋆v1⩾rπ2⋆+γPπ2⋆v1,=πmax(rπ+γPπv2)=rπ2⋆+γPπ2⋆v2⩾rπ1⋆+γPπ1⋆v2,
其中符号 “⩾” 为逐元素比较。因此
f(v1)−f(v2)=rπ1⋆+γPπ1⋆v1−(rπ2⋆+γPπ2⋆v2)⩽rπ1⋆+γPπ1⋆v1−(rπ1⋆+γPπ1⋆v2)=γPπ1⋆(v1−v2).
同理可证 f(v2)−f(v1)⩽γPπ2⋆(v2−v1)。联立两式得到
γPπ2⋆(v1−v2)⩽f(v1)−f(v2)⩽γPπ1⋆(v1−v2).
定义
z≜max{γPπ2⋆(v1−v2),γPπ1⋆(v1−v2)}∈R∣S∣,
式中 max(⋅) 与绝对值 ∣⋅∣ 均为逐元素运算。由定义可知 z⩾0。结合上面两个不等式可得
−z⩽γPπ2⋆(v1−v2)⩽f(v1)−f(v2)⩽γPπ1⋆(v1−v2)⩽z,
该式等价于
∣f(v1)−f(v2)∣⩽z.
进一步可推出
∥f(v1)−f(v2)∥∞⩽∥z∥∞,(3.5)
另一方面,设 zi 为向量 z 的第 i 个分量,piT、qiT 分别为矩阵 Pπ1⋆、Pπ2⋆ 的第 i 行,则
zi=max{γpiT(v1−v2),γqiT(v1−v2)}.
由于行向量 pi 的所有元素非负且元素之和为1,因此有
piT(v1−v2)⩽piT∣v1−v2∣⩽∥v1−v2∥∞.
同理可得 qiT(v1−v2)⩽∥v1−v2∥∞。于是 zi⩽γ∥v1−v2∥∞,进而
∥z∥∞=imax∣zi∣⩽γ∥v1−v2∥∞.
将上式代入式(3.5),得到
∥f(v1)−f(v2)∥∞⩽γ∥v1−v2∥∞.
至此完成对映射 f(v) 压缩性质的证明。
定理(存在性、唯一性与求解算法):对于 BOE v=f(v)=maxπ(rπ+γPπv),总是 存在 解 v⋆ 且该解 唯一。该解可通过迭代求解:
vk+1=f(vk)=πmax(rπ+γPπvk)
给定任意初值 v0,序列 {vk} 以指数速度收敛到 v⋆,收敛速度由 γ 决定。
迭代算法
矩阵-向量形式:
vk+1=f(vk)=πmax(rπ+γPπvk)
元素形式:
vk+1(s)=πmaxa∑π(a∣s)[r∑p(r∣s,a)r+γs′∑p(s′∣s,a)vk(s′)]=amaxqk(s,a)
过程总结
- 对于任意 s,当前估计值 vk(s)
- 对于任意 a∈A(s),计算 qk(s,a)=∑rp(r∣s,a)r+γ∑s′p(s′∣s,a)vk(s′)
- 计算 s 的贪心策略 πk+1:
πk+1(a∣s)={10a=ak⋆(s)a=ak⋆(s)
其中 ak⋆(s)=argmaxaqk(s,a)
- 计算 vk+1(s)=maxaqk(s,a)
该算法实际上就是下一讲要介绍的值迭代算法。
手动求解 BOE
使用迭代算法计算最优策略
- 动作定义:aℓ,a0,ar 分别代表:向左移动、原地停留、向右移动。
- 奖励规则
- 进入目标区域:奖励 +1
- 试图走出边界:奖励 −1
- 折扣因子 γ=0.9
首先我们可以列出动作价值 q(s,a) 表
| Q值表 |
左移 aℓ |
停留 a0 |
右移 ar |
| s1 |
−1+γv(s1) |
0+γv(s1) |
1+γv(s2) |
| s2 |
0+γv(s1) |
1+γv(s2) |
0+γv(s3) |
| s3 |
1+γv(s2) |
0+γv(s3) |
−1+γv(s3) |
目标: 求解最优状态值 v⋆(si) 与最优策略 π⋆
迭代第0步:k=0
状态值初始化:v0(s1)=v0(s2)=v0(s3)=0
代入上表得到第0轮Q值:
|
aℓ |
a0 |
ar |
| s1 |
−1 |
0 |
1 |
| s2 |
0 |
1 |
0 |
| s3 |
1 |
0 |
−1 |
采用贪婪策略(选取当前最大Q值对应的动作)
π(ar∣s1)=1,π(a0∣s2)=1,π(aℓ∣s3)=1
更新状态值,最优状态值取当前状态下最大Q值:v1(s)=maxaq0(s,a)
v1(s1)=v1(s2)=v1(s3)=1
该策略是否有效?有效!
迭代第1步:k=1
在此情境下,根据贝尔曼最优方程,
q1(s,a)=R(s,a)+γv1(s′)
以状态为s1为例,
q1(aℓ,s1)=−1+γv1(s2)=1+0.9∗1=−0.1q1(a0,s1)=0+γv1(s2)=1+0.9∗1=0.9q1(ar,s1)=1+γv1(s2)=1+0.9∗1=1.9
本轮Q值计算结果:
|
aℓ |
a0 |
ar |
| s1 |
−0.1 |
0.9 |
1.9 |
| s2 |
0.9 |
1.9 |
0.9 |
| s3 |
1.9 |
0.9 |
−0.1 |
然后继续使用贪婪策略(选取当前最大Q值对应的动作)
π(ar∣s1)=1,π(a0∣s2)=1,π(aℓ∣s3)=1
当前策略与上一轮完全一致,说明该策略已经是最优策略。更新状态值,
v2(s1)v2(s2)v2(s3)=max{−0.1,0.9,1.9}=1.9=max{0.9,1.9,0.9}=1.9=max{1.9,0.9,−0.1}=1.9
计算 v⋆
由上面过程可知,最优策略为:
- s1 执行 ar
- s2 执行 a0
- s3 执行 aℓ
于是可以列出 Bellman 最优方程,
v⋆(s1)=1+γv⋆(s2)v⋆(s2)=1+γv⋆(s2)v⋆(s3)=1+γv⋆(s2)
解出,
v⋆(s1)=v⋆(s2)=v⋆(s3)=10
10.4 BOE 解的最优性证明
设 v⋆ 是贝尔曼最优方程的解,满足,
v⋆=πmax(rπ+γPπv⋆)
设
π⋆=argπmax(rπ+γPπv⋆)
则
v⋆=rπ⋆+γPπ⋆v⋆
因此 π⋆ 是一个策略,v⋆=vπ⋆ 是对应的状态值。
定理(策略最优性): 设 v⋆ 是方程 v=maxπ(rπ+γPπv) 的唯一解,vπ 是任意给定策略 π 的状态价值函数,满足 vπ=rπ+γPπvπ,则
v⋆≥vπ,∀π.
证明: 设 π 为任意可行策略,该策略对应的贝尔曼方程为:
vπ=rπ+γPπvπ.
由 v⋆ 的定义,
v⋆=πmax(rπ+γPπv⋆)=rπ⋆+γPπ⋆v⋆⩾rπ+γPπv⋆,
移项整理可得,
v⋆−vπ⩾(rπ+γPπv⋆)−(rπ+γPπvπ)=γPπ(v⋆−vπ).
反复使用上述不等式,
v⋆−vπ⩾γPπ(v⋆−vπ)⩾γ2Pπ2(v⋆−vπ)⩾⋯⩾γnPπn(v⋆−vπ).
因此有,
v⋆−vπ⩾n→∞limγnPπn(v⋆−vπ)=0.
上式极限为零向量的原因:折扣因子满足 γ∈(0,1),且转移矩阵幂 Pπn 的所有元素取值在 [0,1] 中。
贪心最优策略
定理(贪心最优策略):对任意 s∈S,确定性贪心策略
π⋆(a∣s)={10a=a⋆(s)a=a⋆(s)
是求解 BOE 的最优策略。其中:
a⋆(s)=argamaxq⋆(a,s)
q⋆(s,a):=r∑p(r∣s,a)r+γs′∑p(s′∣s,a)v⋆(s′)
Lecture 11 最优策略的性质
11.1 最优策略的决定因素
贝尔曼最优方程,
v(s)=πmaxa∑π(a∣s)(r∑p(r∣s,a)r+γs′∑p(s′∣s,a)v(s′))
从 BOE 可以清晰看出,决定最优策略的三个因素:
- 奖励设计:r
- 系统模型:p(s′∣s,a)、p(r∣s,a)
- 折扣因子:γ
- v(s)、v(s′)、π(a∣s) 是待计算的未知量。
设置如 图(a) 的 reward。图(a)(b) 的左边是在此 reward+折扣因子 下计算出的最优 policy,右边是对应的 state value。
图(c) 与 图(a)(b) 类似,但折扣因子设置为 0.
图(d) 其他参数与 图(a) 一致,但将 forbidden area 的 reward 调低
之前提到:γ 较大则会远视,较小则短视。
Gt=Rt+1+γRt+2+γ2Rt+3+…
- γ=0.9:最优策略敢于冒险(进入禁区),因为长远奖励更重要。
- γ=0.5:最优策略变得短视,避开所有禁区。
- γ=0:最优策略极度短视,选择即时奖励最大的动作,无法到达目标区域。
- 增加惩罚(rforbidden=−1→−10):最优策略也会避开禁区。
如果我们对 reward 进行仿射变换:r→ar+b,最优策略会有变化吗?
定理(最优策略不变性): 考虑一个 MDP,其最优状态值 v⋆ 满足 v⋆=maxπ(rπ+γPπv⋆)。若每个奖励 r 经历仿射变换 ar+b(a,b∈R,a=0),则对应的最优状态值 v′ 也是 v⋆ 的仿射变换:
v′=av⋆+1−γb1
其中,γ∈(0,1) 为折扣率,1=[1,…,1]T。因此,最优策略对奖励信号的仿射变换保持不变。
证明: 对于任意策略 π,定义 return 向量 rπ=[…,rπ(s),…]T,其中,
rπ(s)=a∈A∑π(a∣s)r∈R∑p(r∣s,a) r,s∈S
若对 immediate reward 做线性变换 r→αr+β,则单状态 return 满足 rπ(s)→αrπ(s)+β,向量形式写作 rπ→αrπ+β1,其中 1=[1,…,1]T 为全1列向量。
此时对应的贝尔曼最优方程变为:
v′=π∈Πmax(αrπ+β1+γPπv′).(3.9)
下面证明:式(3.9) 的解具有形式 v′=αv⋆+c1,其中常数 c=1−γβ。
将 v′=αv⋆+c1 代入 式(3.9),
αv⋆+c1=v′=π∈Πmax(αrπ+β1+γPπv′)=π∈Πmax(αrπ+β1+γPπ(αv⋆+c1))=π∈Πmax(αrπ+β1+αγPπv⋆+cγ1).
最后一个等号成立是因为转移矩阵满足 Pπ1=1。
将方程重新整理,
αv⋆=π∈Πmax(αrπ+αγPπv⋆)+β1+cγ1−c1.
由最优值函数定义 v⋆=maxπ∈Π(rπ+γPπv⋆),代入后等式成立的充要条件为:
β1+cγ1−c1=0.
代入 c=1−γβ 可验证上式恒成立,因此 v′=αv⋆+c1 确实是式(3.9)的解。
又由于贝尔曼最优方程存在唯一解,故 v′ 是式(3.9)的唯一解。
最后,v′ 是 v⋆ 的仿射变换,变换前后各动作价值的相对大小关系保持不变。因此由 v′ 导出的贪婪最优策略与由 v⋆ 导出的策略完全一致,即:
argπ∈Πmax(rπ+γPπv′)=argπmax(rπ+γPπv⋆).
11.2 无意义绕路问题
依旧设置 rwhite=0,rboundary=−1,rtarget=1
问题:最优策略是否会无意义绕路?
如下图(b),从右上角出发,从一个白色区域到另一个白色区域,反正这样又不会受到负 reward 惩罚。我们需不需要对步数进行惩罚?比如每走一步,给一个 reward =−1,进而保证不绕路。
- 不需要,最优策略不会进行无意义绕路!——这是因为折扣率的存在。绕路会延迟获得正奖励,从而降低折扣回报。
图(a) :最优策略及其对应的 state value。
图(b) :修改右上角的策略,不是最优。
计算一下右上角的 return:
- Policy(a) 之 return =1+γ1+γ21+⋯=1−γ1=10
- Policy(b) 之 return =0+γ0+γ21+⋯=1−γγ2=8.1
总结
贝尔曼最优方程:
- 元素形式:v(s)=maxπ∑aπ(a∣s)[∑rp(r∣s,a)r+γ∑s′p(s′∣s,a)v(s′)]
- 矩阵-向量形式:v=maxπ(rπ+γPπv)
关于 BOE 的问题:
- 解的存在性:是(由压缩映射定理保证)
- 解的唯一性:是(由压缩映射定理保证)
- 求解方程的算法:压缩映射定理得到的迭代算法
- 最优性:BOE 的解对应于最优状态值和最优策略
请注意:最优 state value 是唯一的,但其对应的最优 policy 不一定是唯一的!