2025 年初,DeepSeek R1 的发布展现了强化学习激发模型推理能力的成果。此后 GLM 5.3、DeepSeek V4.1 Flash 1017 等模型接连发布,让我清楚地看到强化学习后训练对模型能力的提升。于是,在学习赵世钰老师《强化学习的数学原理》和 《Hands on Modern RL》的过程中,我开了这个新系列:强化学习从基础到前沿,用来记录学习过程中的理解和思考。本篇作为这个系列的第一篇,讨论给定一个策略,我们用什么标准判断它好不好?
这篇博客会从状态、动作、策略和回报开始,在马尔可夫决策过程的框架下定义状态值,然后完整推导贝尔曼方程,并讨论如何求解贝尔曼方程。
基础概念
考虑《强化学习的数学原理》中经典的场景设置:网格世界。一个机器人在若干格子组成的平面上移动,每一步可以向上、下、左、右走一格,也可以停在原地。走进目标格子会得到正奖励,掉进陷阱或者超出范围等非预期行为会得到负奖励。
状态、动作与策略
状态(state)描述智能体所处的境况。在网格世界中,机器人的坐标就是一个状态。用 s 表示单个状态,所有可能状态的集合称为状态空间,记为 S。
一个合适的状态应当包含做决策所需的全部信息,也就是说,无论智能体此前经历了什么,只要当前状态和采取的动作相同,下一状态与奖励的概率分布就应当相同。这一要求来自马尔可夫性质。如果智能体只能看到环境的一部分,比如只能看到相邻的格子,那么它得到的是观测(observation),而不是完整状态,这类问题属于部分可观测马尔可夫决策过程(POMDP)。
动作(action)是智能体在某个状态下可以执行的操作,用 a 表示。状态 s 下可用的动作集合记为 A(s)。不同状态的动作集合可以不同,网格边缘的格子不能继续向外移动。
策略(policy)规定智能体在每个状态下如何选择动作,是强化学习中唯一由智能体决定的部分:环境决定状态如何转移、奖励如何产生,策略决定动作如何被选中。最常用的表示是随机策略:
π(a∣s)=P(At=a∣St=s),(1.1)
它给出在状态 s 下选择动作 a 的概率,并满足 ∑a∈A(s)π(a∣s)=1。策略也可以是确定性的,此时某个动作的概率为 1,其余为 0。
奖励(reward)是环境返回给智能体的标量信号,记作 r,可正可负。它定义了任务的目标,我们通过奖励告诉智能体哪些行为是好的。设计奖励时,真正需要关心的是不同动作对应奖励的相对大小。例如在无限长的折扣回报下,把所有奖励同时加上一个常数 c,每个状态值都平移 c/(1−γ),策略之间的排序不变;把所有奖励乘以一个正数,状态值同比例缩放,排序同样不变。绝对数值本身并不携带额外的偏好信息。
轨迹、回报与折扣
智能体按照策略与环境交互,得到一条轨迹(trajectory):
S0,A0,R1,S1,A1,R2,S2,…(1.2)
其中 Rt+1 是在 St 执行 At 后、转移到 St+1 时获得的奖励。这里约定用大写字母表示随机变量,小写字母表示具体取值。
沿轨迹把奖励累加,得到回报(return):
Gt=Rt+1+Rt+2+Rt+3+⋯(1.3)
Gt 表示从时刻 t 开始的累计奖励。如果轨迹无限长,且每一步的奖励不趋于零,这个级数会发散,不同策略之间也就无法比较。为此引入折扣因子 γ∈[0,1),定义折扣回报(discounted return):
Gt=Rt+1+γRt+2+γ2Rt+3+⋯=k=0∑∞γkRt+k+1.(1.4)
若每一步的奖励恒为 r,则 Gt=r(1+γ+γ2+⋯)=r/(1−γ);截断到 n 步的部分和为 r(1−γn)/(1−γ),当 n→∞ 且 γ<1 时收敛到 r/(1−γ)。更一般地,若 ∣R∣≤Rmax,则 ∣Gt∣≤Rmax/(1−γ),回报始终有界,任意两个策略的期望回报之差也就有界,比较才有意义。
如果任务在有限步后进入终止状态,轨迹长度有限,称为回合制任务(episodic task),从初始状态到终止状态的过程称为一个回合(episode)。如果交互永不停止,称为持续性任务(continuing task)。折扣回报对两者都适用;对回合制任务,即使取 γ=1,回报也是有限的。
马尔可夫决策过程
把上面的要素组织起来,就得到马尔可夫决策过程(Markov decision process, MDP)。环境的行为由状态转移和奖励共同决定,最完整的描述是联合分布
p(s′,r∣s,a)=P(St+1=s′,Rt+1=r∣St=s,At=a),(1.5)
它给出在状态 s 执行动作 a 后,转移到 s′ 并获得奖励 r 的概率。对任意 (s,a),有
s′∈S∑r∈R(s,a)∑p(s′,r∣s,a)=1.(1.6)
实际使用时,往往只关心它的两个边缘分布:
p(s′∣s,a)=r∈R(s,a)∑p(s′,r∣s,a),p(r∣s,a)=s′∈S∑p(s′,r∣s,a).(1.7)
这里强调边缘化,是因为后文推导贝尔曼方程时,即时奖励的期望只用到 p(r∣s,a),下一状态的分布只用到 p(s′∣s,a)。奖励与下一状态可以相关,比如掉进陷阱既扣分又回到起点,但由于期望的线性性,两项期望可以分别计算,不需要知道它们的联合分布。写代码时这一点也有用:环境只需要提供奖励的均值和转移概率,不必给出完整的联合分布。
策略满足归一化条件 ∑a∈A(s)π(a∣s)=1。剩下的关键假设是马尔可夫性质(Markov property):给定当前状态和动作,下一状态与奖励的分布不依赖更早的历史,
p(st+1∣st,at,st−1,at−1,…,s0,a0)p(rt+1∣st,at,st−1,at−1,…,s0,a0)P(St+1=s′,Rt+1=r∣Ht,At=a)=p(st+1∣st,at),=p(rt+1∣st,at),=p(s′,r∣St,a).(1.8)
现在包含了预测未来所需的全部信息,过去不再提供额外信息。这也解释了为什么状态的定义要求信息完整。如果状态表示不满足马尔可夫性质,仍然可以在给定轨迹分布时定义条件期望形式的状态值,但未来回报的分布可能依赖更早的历史。因此,状态值不一定满足只依赖当前状态和一步转移概率的贝尔曼递归关系。为了得到本文使用的贝尔曼方程,我们需要状态包含预测未来所需的充分信息。
在马尔可夫性质下,一条轨迹的概率可以写成连乘:
p(s0,a0,r1,s1,…)=μ(s0)t=0∏∞π(at∣st)p(st+1,rt+1∣st,at),(1.9)
其中 μ 是初始状态分布。式 1.9 说明,MDP 加上一个策略,就定义了轨迹空间上的一个概率分布;换一个策略,改变的就是这个分布。评价一个策略,本质上是在该策略诱导的分布下计算回报的期望。
状态值:给一个策略打分
回报是随机变量
即使策略固定,回报也不是一个确定的数。随机性来自至少三个地方:初始状态可能随机,策略本身可能是随机的,状态转移和奖励也可能是随机的。同一条策略跑两次,得到的轨迹不同,回报也不同。直接比较单次回报没有意义,一次运气好的采样可能让差策略看起来更好。合理的做法是看长期平均,也就是期望。
状态值的定义
给定策略 π,定义状态值函数
vπ(s)=Eπ[Gt∣St=s],(2.1)
vπ(s) 的含义是:从状态 s 出发,之后一直遵循 π,所能获得的折扣回报的期望。即可以理解为,从 s 出发跑足够多条轨迹,把每条轨迹的回报取平均,极限就是 vπ(s)。
这里没有给 vπ 加时间下标,原因是 MDP 是平稳的:转移概率、奖励分布和策略都不随时间变化。因此从同一个状态出发的回报分布与出发时刻无关,vπ 只是状态的函数。把所有状态上的取值排成向量,就得到 ∣S∣ 维的 vπ=(vπ(s1),…,vπ(s∣S∣))⊤。给定策略后,评价它就是要算出这个向量。
如果初始状态 s 服从分布 μ,策略的整体表现可以写成单个标量:
J(π)=s∈S∑μ(s)vπ(s).(2.2)
表示,某个状态出现概率乘以状态值后求和,反映了一个状态分布下,该策略所能获得的状态值的期望。
贝尔曼方程
回报的递归结构
式 1.4 把回报写成无穷级数,直接计算需要知道整条轨迹。贝尔曼方程的价值在于,它把这个无穷求和压缩成一个只涉及一步的递归关系。
从定义出发,把第一项提出来:
Gt=Rt+1+γRt+2+γ2Rt+3+⋯=Rt+1+γ(Rt+2+γRt+3+⋯).(3.1)
括号里的部分正好是 Gt+1,于是
Gt=Rt+1+γGt+1.(3.2)
这个等式精确成立。它说明一段折扣回报可以拆成第一步的奖励,加上从下一步开始的折扣回报再乘一个 γ。对式 3.2 两边在 St=s 的条件下取期望:
vπ(s)=Eπ[Rt+1∣St=s]+γEπ[Gt+1∣St=s].(3.3)
这一步只用了期望的线性性,没有对 Rt+1 与 Gt+1 的独立性做任何假设。
即时奖励项
第一项是在状态 s 下、遵循策略 π 时,下一步奖励的期望。At 是随机的,先对动作使用全期望公式:
Eπ[Rt+1∣St=s]=即对所有动作的概率乘以对应奖励期望求和a∈A(s)∑π(a∣s)Eπ[Rt+1∣St=s,At=a].(3.4)
再对奖励的取值展开内层期望:
Eπ[Rt+1∣St=s]=a∈A(s)∑π(a∣s)给定状态动作下,所有奖励值乘以对应概率之和r∈R(s,a)∑rp(r∣s,a).(3.5)
定义
r(s,a)=r∈R(s,a)∑rp(r∣s,a),rπ(s)=a∈A(s)∑π(a∣s)r(s,a),(3.6)
第一项就是表示即时奖励的期望值,就是 rπ(s)。它的含义很直接:在状态 s 下按策略 π 选动作,再按环境拿对应奖励,平均下来这一步能拿到多少奖励。
未来奖励项
第二项涉及 Gt+1,它由未来的奖励组成。先对下一状态 St+1 使用全期望公式:
Eπ[Gt+1∣St=s]=s′∈S∑pπ(s′∣s)Eπ[Gt+1∣St=s,St+1=s′],(3.7)
其中
pπ(s′∣s)=a∈A(s)∑π(a∣s)p(s′∣s,a)(3.8)
是在策略 π 下从 s 转移到 s′ 的概率:先按策略选动作,再按环境转移,对所有动作求和。
乘积的另一半表示从状态 s 转移到 s′ 状态后,得到汇报的期望(注意区分这是给定转移后状态的期望),Gt+1 由 St+1 之后的奖励组成,条件里有 St=s 和 St+1=s′。一旦 St+1=s′ 确定,之前是怎么到达 s′ 的就不再影响未来。马尔可夫性质保证:
Eπ[Gt+1∣St=s,St+1=s′]=Eπ[Gt+1∣St+1=s′]=vπ(s′).(3.9)
通过马尔可夫性质,可以将未来回报的条件期望化为仅依赖下一状态的价值函数。第二个等号还用到了策略与环境的时间平稳性。没有马尔可夫性质,未来仍然依赖 St 和 At,第一个等号就不一定成立,就无法只写成当前状态的函数,还需要依赖之前的历史。
此时,把式 3.8 和式 3.9 代回式 3.7得到:
Eπ[Gt+1∣St=s]=s′∈S∑a∈A(s)∑π(a∣s)p(s′∣s,a)vπ(s′).(3.10)
贝尔曼方程及其含义
把式 3.5 和式 3.10 代入式 3.3,得到
vπ(s)=a∈A(s)∑π(a∣s)[r(s,a)+γs′∈S∑p(s′∣s,a)vπ(s′)],∀s∈S.(3.11)
这就是贝尔曼方程(Bellman equation),也叫贝尔曼期望方程。
对式 3.11 有几点说明:
- 它是一个方程组,每个状态对应一个方程,未知量是所有状态的 vπ。方程两边都出现 vπ,说明状态值之间存在相互依赖:一个状态的价值取决于它能到达的状态的价值。单独的某个 vπ(s) 无法从自己的方程中解出,必须联立所有方程。
- 策略 π 是给定的。不同的 π 对应不同的方程组,解出哪一个,就得到哪一个策略的状态值。这个过程称为策略评估(policy evaluation)。
- 转移概率和奖励分布 p 构成环境模型。模型已知时可以直接求解;模型未知时,需要从与环境的交互中估计,这就是 model-based 与 model-free 方法的不同。
从计算的角度看,式 3.11 把一个无穷求和的问题转化成了一个递归求解的问题。
求解贝尔曼方程
矩阵形式
式 3.11 对所有状态成立,把它们排成矩阵。令 vπ∈R∣S∣,第 i 个分量是 vπ(si);令
rπ=rπ(s1)⋮rπ(s∣S∣),(Pπ)ij=pπ(sj∣si),(4.1)
则式 3.11 等价于
vπ=rπ+γPπvπ.(4.2)
Pπ 称为策略 π 下的状态转移矩阵。它的元素非负,每一行之和为 1:
j=1∑∣S∣(Pπ)ij=s′∈S∑pπ(s′∣si)=a∑π(a∣si)s′∑p(s′∣si,a)=1,(4.3)
因此 Pπ 是一个行随机矩阵(row-stochastic matrix)。
解析解
把含 vπ 的项移到左边:
(I−γPπ)vπ=rπ.(4.4)
由于 Pπ 是行随机矩阵,且 0≤γ<1,可以证明 I−γPπ 一定可逆(此处略),因此贝尔曼方程存在唯一的解析解:
vπ=(I−γPπ)−1rπ.(4.5)
这个结果说明,当环境模型和策略已知时,策略评估可以转化为求解一个线性方程组。我们不再需要直接计算无穷多步的期望回报,而是通过状态之间的转移关系,一次性求出所有状态的价值。
数值解
当状态空间很大时,直接求解线性方程组的计算成本较高。另一种方法是从任意初始状态值出发,反复利用贝尔曼方程更新估计,逐步逼近真实的 vπ。这种方法称为迭代策略评估(iterative policy evaluation)。
根据贝尔曼方程的矩阵形式:
vπ=rπ+γPπvπ.(4.6)
定义贝尔曼期望算子(Bellman expectation operator):
Tπ(v)=rπ+γPπv.(4.7)
贝尔曼方程可以写成 vπ=Tπ(vπ),即 vπ 是算子 Tπ 的不动点(fixed point)。因此,求解贝尔曼方程就转化为寻找这个不动点。
具体做法是,先任意初始化一个状态值向量 v(0),例如令所有状态的初始价值为 0。然后反复将当前估计代入贝尔曼方程右侧,得到下一轮的估计:
v(k+1)=Tπ(v(k))=rπ+γPπv(k).(4.8)
展开到每个状态,就是
v(k+1)(s)=a∈A(s)∑π(a∣s)[r(s,a)+γs′∈S∑p(s′∣s,a)v(k)(s′)].(4.9)
每一轮更新都用上一轮估计的下一状态价值,重新计算当前状态的价值,最终可以收敛到各状态的期望值。
但为什么反复更新能够收敛到真正的状态值?关键在于贝尔曼期望算子具有压缩性质。对任意两个向量 u,v,有
∥Tπ(u)−Tπ(v)∥∞=γ∥Pπ(u−v)∥∞≤γ∥u−v∥∞.(4.10)
其中 ∥⋅∥∞ 表示向量各分量绝对值的最大值。不等式成立是因为 Pπ 是行随机矩阵,每行元素非负且之和为 1。当 0≤γ<1 时,Tπ 是压缩映射。根据 Banach 不动点定理,它存在唯一不动点,并且从任意初始向量出发,反复应用该算子都能收敛到这个不动点,也就是 vπ。
因此,迭代策略评估可以概括为:初始化状态值,按照式 (4.7) 反复更新,直到相邻两次迭代的变化足够小:
∥v(k+1)−v(k)∥∞<ε.(4.11)
这里 ε 是预先设定的收敛阈值。需要注意,相邻两次迭代的差值小,并不代表当前估计与真实状态值的误差同样小,尤其当 γ 接近 1 时,可能需要设置更严格的阈值。
迭代法不需要显式计算矩阵逆,只需要根据当前状态值和环境的转移概率进行更新。折扣因子 γ 在这里也决定了收敛速度:γ 越接近 1,压缩效果越弱,通常需要更多轮迭代才能收敛。
如何比较不同策略
前面讨论了如何求解给定策略 π 的状态值函数 vπ,现在分析如何评价一个策略好不好。
状态值 vπ(s) 衡量的是从特定状态 s 出发,遵循策略 π 所能获得的期望折扣回报。因此,给定两个策略 π1 和 π2,如果
vπ1(s)>vπ2(s),(5.1)
就说明从状态 s 出发,策略 π1 的期望回报高于 π2,也就认为此时策略 π1 优于 π2。
但不同策略的状态值可能在不同状态下各有优势。例如,π1 在某些状态下更好,而 π2 在另一些状态下更好。此时不能只比较单个状态的价值,而需要明确我们关心哪些初始状态。
如果初始状态服从分布 μ,就可以使用前面定义的整体评价指标:
J(π)=s∈S∑μ(s)vπ(s).(5.2)
在相同的初始状态分布下,J(π) 越大,说明策略的整体期望折扣回报越高。于是,我们就有了一个明确的策略评价标准。
还有一种更强的比较方式:如果对于所有状态 s∈S,都有
vπ1(s)≥vπ2(s),(5.3)
那么称策略 π1 不劣于策略 π2。这一比较不依赖特定的初始状态分布,也是后续讨论最优策略的重要基础。
所以,评价一个策略需要:首先,通过贝尔曼方程计算策略在各个状态下的价值;然后,根据具体任务的初始状态分布,或者所有状态上的价值关系,比较不同策略的优劣。
总结
本文从状态、动作、策略和奖励出发,把策略的评价问题写成了回报的期望,并在马尔可夫性质下推导出贝尔曼方程。贝尔曼把无穷求和变成了递归问题,把策略评估变成了求解 vπ=(I−γPπ)−1rπ 方程组。下一篇会讨论如何通过贝尔曼最优方程找到最优策略。
参考资料
- 赵世钰,《强化学习的数学原理》(Mathematical Foundations of Reinforcement Learning)。GitHub 项目地址
- Hands-on Modern RL,《强化学习导论》。在线阅读
- Richard S. Sutton, Andrew G. Barto. Reinforcement Learning: An Introduction, 2nd Edition. MIT Press, 2018. 出版社页面