Skip to content

E.2.5 贝尔曼期望方程与动作价值

前置知识E.2.1 概率基础E.2.2 状态价值——你需要知道条件概率和期望的线性性。


前面把价值函数解释成"从某个状态出发的平均回报":

vπ(s)=Eπ[GtSt=s].v_\pi(s)=\mathbb{E}_\pi[G_t\mid S_t=s].

这个定义是对的,但它把所有细节都藏在了期望符号 Eπ\mathbb{E}_\pi 里面。如果不知道期望里面到底在求什么和、按什么权重加,就没法真正计算价值——就像知道"平均成绩是 85 分"但不知道有几门课、各占多少权重,就没法复现这个数字。这一篇把期望一步步展开,看看符号背后包含了哪些求和。展开之后得到的递推关系就是贝尔曼期望方程——它的作用是把”未来所有步的价值”压缩成”一步奖励 + 下一状态价值”的递推形式,这样我们不需要跑完整条轨迹就能计算价值。

先把 GtG_t 拆成”一步奖励 + 未来回报”:

Gt=Rt+1+γGt+1.G_t=R_{t+1}+\gamma G_{t+1}.

代入价值函数:

vπ(s)=Eπ[Rt+1+γGt+1St=s].v_\pi(s)=\mathbb{E}_\pi[R_{t+1}+\gamma G_{t+1}\mid S_t=s].

期望有一个基本性质——线性性:和的期望等于期望的和。于是:

vπ(s)=Eπ[Rt+1St=s]+γEπ[Gt+1St=s].v_\pi(s)=\mathbb{E}_\pi[R_{t+1}\mid S_t=s]+\gamma\mathbb{E}_\pi[G_{t+1}\mid S_t=s].

左边的 Eπ[Rt+1St=s]\mathbb{E}_\pi[R_{t+1}\mid S_t=s] 是”即时奖励的平均值”,展开为:

Eπ[Rt+1St=s]=aπ(as)rp(rs,a)r.\mathbb{E}_\pi[R_{t+1}\mid S_t=s] =\sum_a \pi(a\mid s)\sum_r p(r\mid s,a)r.

右边的 Eπ[Gt+1St=s]\mathbb{E}_\pi[G_{t+1}\mid S_t=s] 是"下一状态价值的平均值":

Eπ[Gt+1St=s]=aπ(as)sp(ss,a)vπ(s).\mathbb{E}_\pi[G_{t+1}\mid S_t=s] =\sum_a \pi(a\mid s)\sum_{s'}p(s'\mid s,a)v_\pi(s').

两项合在一起,得到贝尔曼期望方程:

vπ(s)=aπ(as)[rp(rs,a)r+γsp(ss,a)vπ(s)].v_\pi(s)=\sum_a\pi(a\mid s) \left[ \sum_r p(r\mid s,a)r +\gamma\sum_{s'}p(s'\mid s,a)v_\pi(s') \right].

这个公式看起来复杂,但逐层拆开来看,每一层都只是"按概率加权求平均":

  • aπ(as)\sum_a\pi(a\mid s):对所有可能选的动作求平均。
  • rp(rs,a)r\sum_r p(r\mid s,a)r:对每种可能的奖励求平均。
  • sp(ss,a)vπ(s)\sum_{s'}p(s'\mid s,a)v_\pi(s'):对每种可能的下一状态的价值求平均。

用两状态例子验证

回到导读中的两状态例子。假设策略是确定性的——在 s1s_1 只选一个动作,这个动作让下一步一定到 s2s_2,奖励是 22;在 s2s_2 只选一个动作,下一步一定到 s1s_1,奖励是 11γ=0.5\gamma=0.5

因为策略是确定性的,π(as)\pi(a\mid s) 对选中的动作是 11、其余是 00,所以"对动作求和"这一层消失了。对 s1s_1 展开:

v(s1)=2即时奖励+γ(1×v(s2))下一步到 s2,概率 1=2+0.5v(s2).v(s_1)=\underbrace{2}_{\text{即时奖励}}+\gamma\underbrace{(1\times v(s_2))}_{\text{下一步到 }s_2\text{,概率 }1}=2+0.5v(s_2).

s2s_2 展开:

v(s2)=1即时奖励+γ(1×v(s1))下一步到 s1,概率 1=1+0.5v(s1).v(s_2)=\underbrace{1}_{\text{即时奖励}}+\gamma\underbrace{(1\times v(s_1))}_{\text{下一步到 }s_1\text{,概率 }1}=1+0.5v(s_1).

这就是导读里的两个方程,验证了贝尔曼期望方程确实是在做"一步奖励 + 概率加权未来价值"。

策略有随机性时怎么办?

如果策略在 s1s_1 下有两个可选动作,概率分别是 π(lefts1)=0.3\pi(\text{left}\mid s_1)=0.3π(rights1)=0.7\pi(\text{right}\mid s_1)=0.7

  • 选 left 奖励是 11,下一步到 s1s_1
  • 选 right 奖励是 33,下一步到 s2s_2

那么 s1s_1 的贝尔曼期望方程是:

v(s1)=0.3×[1+0.5v(s1)]+0.7×[3+0.5v(s2)].v(s_1)=0.3\times[1+0.5v(s_1)]+0.7\times[3+0.5v(s_2)].

每个方括号里是"选了某个动作后的即时奖励 + 未来价值",前面的系数是选该动作的概率。逐层展开就是在逐层做概率加权平均


动作价值与优势函数

状态价值函数 vπ(s)v_\pi(s) 回答的是"从状态 ss 出发,平均能拿多少"。但在训练策略时,我们经常面临一个更具体的问题:在状态 ss 下,到底是动作 left 好,还是动作 right 好?光知道"平均能拿多少"没法回答——因为平均分可能是一个很好、一个很差的混合结果。我们需要单独评估每个动作的价值,这就需要动作价值函数

qπ(s,a)=Eπ[GtSt=s,At=a].q_\pi(s,a)=\mathbb{E}_\pi[G_t\mid S_t=s,A_t=a].

动作价值函数 qπ(s,a)q_\pi(s,a) 的定义是:已经在状态 ss 选择了动作 aa,之后继续按策略 π\pi 行动,平均能拿多少回报。

它的贝尔曼形式是:

qπ(s,a)=rp(rs,a)r+γsp(ss,a)vπ(s).q_\pi(s,a)=\sum_r p(r\mid s,a)r +\gamma\sum_{s'}p(s'\mid s,a)v_\pi(s').

注意 qqvv 之间的关系:状态价值是动作价值的加权平均——

vπ(s)=aπ(as)qπ(s,a).v_\pi(s)=\sum_a\pi(a\mid s)q_\pi(s,a).

直觉上,”从 ss 出发的平均回报”等于”每种动作的回报 × 选该动作的概率”之和。

优势函数是动作价值和状态价值的差:

Aπ(s,a)=qπ(s,a)vπ(s).A_\pi(s,a)=q_\pi(s,a)-v_\pi(s).

它衡量”动作 aa 比状态 ss 下的平均水平好多少”。前面”回报 10、平均 8,所以优势是 2”的例子,就是这个公式的数值版本。

用数字看 q、v 和 A 的关系

假设在某个状态 ss 下,策略以概率 0.40.4 选 left、0.60.6 选 right。已知:

动作动作价值 q(s,a)q(s,a)
left55
right88

状态价值是动作价值的加权平均:

v(s)=0.4×5+0.6×8=2+4.8=6.8.v(s)=0.4\times5+0.6\times8=2+4.8=6.8.

于是优势函数是:

A(s,left)=56.8=1.8,A(s,right)=86.8=1.2.A(s,\text{left})=5-6.8=-1.8, \qquad A(s,\text{right})=8-6.8=1.2.

left 比平均差 1.81.8(负优势),right 比平均好 1.21.2(正优势)。策略梯度会用这个正负号来决定:right 的概率应该上调,left 的概率应该下调。


重要性采样的轨迹形式

单步的重要性权重前面已经见过:

ρt=π(atst)b(atst).\rho_t=\frac{\pi(a_t\mid s_t)}{b(a_t\mid s_t)}.

如果一整条轨迹都由行为策略 bb 采样,而我们想估计目标策略 π\pi 的回报,就要把每一步的概率比乘起来:

ρ0:T=t=0Tπ(atst)b(atst).\rho_{0:T}=\prod_{t=0}^{T}\frac{\pi(a_t\mid s_t)}{b(a_t\mid s_t)}.

这里 \prod(大写的 π\pi)表示"把所有的项乘起来",就像 \sum 表示"把所有的项加起来"。于是异策略蒙特卡洛估计写成:

v^π(s)=1Ni=1Nρ(i)G(i).\hat{v}_\pi(s)=\frac{1}{N}\sum_{i=1}^N \rho^{(i)}G^{(i)}.

这个方法能用,但有风险:如果很多概率比相乘,权重可能变得非常大,导致方差爆炸。因此实际算法常使用截断、加权重要性采样或其他更稳定的方法。

数值例子:轨迹重要性权重

假设一条两步轨迹,每一步的目标策略和行为策略概率分别是:

步骤π(atst)\pi(a_t\mid s_t)b(atst)b(a_t\mid s_t)单步权重
t=0t=00.60.60.30.30.6/0.3=20.6/0.3=2
t=1t=10.80.80.40.40.8/0.4=20.8/0.4=2

轨迹重要性权重是两步之积:

ρ0:2=2×2=4.\rho_{0:2}=2\times2=4.

如果这条轨迹的回报是 G=5G=5,加权后贡献为 4×5=204\times5=20。看起来还能接受。但如果每步权重都是 33,跑 1010 步后权重变成 310=590493^{10}=59049——这就是"方差爆炸"的含义。PPO 的裁剪和归一化本质上就是在控制这种极端权重。


协方差与策略梯度方差

两个随机变量一起变化的趋势可以用协方差表示:

Cov(X,Y)=E[(XE[X])(YE[Y])].\mathrm{Cov}(X,Y)=\mathbb{E}[(X-\mathbb{E}[X])(Y-\mathbb{E}[Y])].

相关系数进一步把协方差标准化到 [1,1][-1,1]

ρX,Y=Cov(X,Y)σXσY.\rho_{X,Y}=\frac{\mathrm{Cov}(X,Y)}{\sigma_X\sigma_Y}.

在强化学习中,梯度估计常常是随机变量。例如策略梯度样本:

gt=A^tθlogπθ(atst).g_t=\hat{A}_t\nabla_\theta\log\pi_\theta(a_t\mid s_t).

如果 A^t\hat{A}_t 波动很大,gtg_t 的方差也会变大。使用 baseline、advantage 标准化、GAE,本质上都是在控制这个随机梯度的方差。

数值例子:协方差

假设两个策略梯度样本,优势分别是 A^=[2,1]\hat{A}=[2, -1],对应的梯度范数是 [4,1][4, 1]

均值:Aˉ=0.5\bar{A}=0.5gˉ=2.5\bar{g}=2.5

协方差:

Cov=(20.5)(42.5)+(10.5)(12.5)2=1.5×1.5+(1.5)×(1.5)2=4.52=2.25.\mathrm{Cov}=\frac{(2-0.5)(4-2.5)+(-1-0.5)(1-2.5)}{2}=\frac{1.5\times1.5+(-1.5)\times(-1.5)}{2}=\frac{4.5}{2}=2.25.

协方差为正,说明优势大的时候梯度也大——两个信号正相关。如果协方差接近 00,说明优势的大小和梯度的大小没有稳定关系,梯度估计的噪声会更大。


小结

本篇把价值函数从"黑盒期望"展开成了可计算的贝尔曼期望方程,并引入了动作价值和优势函数:

概念公式作用
贝尔曼期望方程vπ(s)=aπ(as)[rp(rs,a)r+γsp(ss,a)vπ(s)]v_\pi(s)=\sum_a\pi(a\mid s)[\sum_r p(r\mid s,a)r+\gamma\sum_{s'}p(s'\mid s,a)v_\pi(s')]把"未来所有步"压缩成"一步 + 递推"
动作价值qπ(s,a)=Eπ[GtSt=s,At=a]q_\pi(s,a)=\mathbb{E}_\pi[G_t\mid S_t=s,A_t=a]评估"选了某个动作后平均能拿多少"
优势函数Aπ(s,a)=qπ(s,a)vπ(s)A_\pi(s,a)=q_\pi(s,a)-v_\pi(s)衡量"这个动作比平均水平好多少"
轨迹重要性采样ρ0:T=tπ(atst)b(atst)\rho_{0:T}=\prod_t\frac{\pi(a_t\mid s_t)}{b(a_t\mid s_t)}用旧策略数据评估新策略,注意方差爆炸风险
协方差Cov(X,Y)=E[(XE[X])(YE[Y])]\mathrm{Cov}(X,Y)=\mathbb{E}[(X-\mathbb{E}[X])(Y-\mathbb{E}[Y])]衡量两个随机变量的共同波动,控制梯度方差

贝尔曼期望方程的核心思想是递推:不需要跑完整条轨迹,只需要知道"一步奖励 + 下一状态价值"就能计算当前价值。动作价值让我们能比较不同动作的好坏,优势函数把这个比较量化成一个数字。轨迹重要性采样让我们能复用旧数据,但要注意方差爆炸的风险。

下一篇E.2.6 概率统计公式速查与练习 —— 汇总本模块所有公式,附练习题。

Built for reusable bilingual course delivery