RL2 贝尔曼公式

回顾

折扣回报公式:

Gt=Rt+1+γRt+2+γ2Rt+3+=k=0γkRt+k+1G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \cdots = \sum_{k=0}^{\infty} \gamma^k R_{t+k+1}

可以帮助我们们衡量一个策略的好与坏,G更大的代表策略也更优。下面我们具体讲讲如何计算GtG_t

Method1:按照定义计算

v1=r1+γr2+γ2r3+...v2=r2+γr3+γ2r4+...v3=r3+γr4+γ2r1+...v4=r4+γr1+γ2r2+...\begin{align} v_1 &= r_1 + \gamma r_2 + \gamma ^{2}r_3 + ... \\ v_2 &= r_2 + \gamma r_3 + \gamma ^{2}r_4 + ... \\ v_3 &= r_3 + \gamma r_4 + \gamma ^{2}r_1 + ...\\ v_4 &= r_4 + \gamma r_1 + \gamma ^{2}r_2 + ... \end{align}

Method2:按照价值函数计算

v1=r1+γv2v2=r2+γv3v3=r3+γv4v4=r4+γv1\begin{align} v_1 &= r_1 + \gamma v_2 \\ v_2 &= r_2 + \gamma v_3 \\ v_3 &= r_3 + \gamma v_4 \\ v_4 &= r_4 + \gamma v_1 \end{align}

上述等式可以进一步写为矩阵的形式

[v1v2v3v4]=[r1r2r3r4]+γ[0100001000011000][v1v2v3v4]\begin{bmatrix} v_1 \\ v_2 \\ v_3 \\ v_4 \end{bmatrix} = \begin{bmatrix} r_1 \\ r_2 \\ r_3 \\ r_4 \end{bmatrix} + \gamma \begin{bmatrix} 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ 1 & 0 & 0 & 0 \end{bmatrix} \begin{bmatrix} v_1 \\ v_2 \\ v_3 \\ v_4 \end{bmatrix}

对应的矩阵形式为:

V=R+γPV\mathbf{V} = \mathbf{R} + \gamma \mathbf{P} \mathbf{V}

其中:

  • V=[v1v2v3v4]\mathbf{V} = \begin{bmatrix} v_1 \\ v_2 \\ v_3 \\ v_4 \end{bmatrix}:状态值函数的向量。
  • R=[r1r2r3r4]\mathbf{R} = \begin{bmatrix} r_1 \\ r_2 \\ r_3 \\ r_4 \end{bmatrix}:即时奖励的向量。
  • P=[0100001000011000]\mathbf{P} = \begin{bmatrix} 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ 1 & 0 & 0 & 0 \end{bmatrix}:状态转移概率矩阵。
  • γ\gamma:折扣因子。

最终的解为:

V=(IγP)1R\mathbf{V} = (\mathbf{I} - \gamma \mathbf{P})^{-1} \mathbf{R}

状态价值(State Value)

数学公式

状态值函数 vπ(s)v_\pi(s) 定义为从状态 ss 开始,遵循策略 π\pi 的期望回报(Expected Return):

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

其中:

  • GtG_t 是从时间步 tt 开始的折扣回报(Discounted Return)。
  • St=sS_t = s 表示当前状态为 ss
  • E\mathbb{E} 表示期望值。

下面给出计算状态价值函数的推导

vπ(s)=E[GtSt=s]=E[RtSt=S]+γE[Gt+1St=s]=π(as)ap(rs,a)r+γ π(as)sp(ss,a)vπ(s)=π(as)[ap(rs,a)r+γsp(ss,a)vπ(s)]=rπ(s)+γspπ(ss)vπ(s)\begin{aligned} v_\pi(s) &= \mathbb{E}[G_t \mid S_t = s] \\ &= \mathbb{E}[R_t|S_t = S] + \gamma \mathbb{E}[G_{t+1}|S_t=s] \\ &= \pi(a|s)\sum_ap(r|s,a)r + \gamma \cdot\ \pi(a|s)\sum_{s^{'}}p(s^{'}|s,a)v_{\pi}(s^{'}) \\ &= \pi(a|s)[\sum_ap(r|s,a)r + \gamma \cdot \sum_{s^{'}}p(s^{'}|s,a)v_{\pi}(s^{'})]\\ &= r_{\pi}(s) + \gamma \sum _{s^{'}}p_{\pi}(s^{'}|s)v_{\pi}(s^{'}) \end{aligned}

写成矩阵形式:

vπ=rπ+γPπvπv_{\pi} = r_{\pi} + \gamma P_{\pi}v_{\pi}

数值求解

vπv_{\pi}的closed-form(有限个标准数学运算)求解:

vπ=(IγPπ)1rπv_{\pi} = (I - \gamma P_{\pi})^{-1}r_{\pi}

实际上,我们通常采用迭代算法计算

vk+1=rπ+γPπvkv_{k+1} = r_{\pi} + \gamma P_{\pi}v_{k}

算法正确性证明:

定义误差为δk=vkvπ\delta_k = v_k - v_{\pi}

我们只需要证明δk0\delta_k \to 0

vk+1=δk+1+vπv_{k+1} = \delta_{k+1} + v_{\pi}vk=δk+vπv_k = \delta_k + v_{\pi}代入方程vk+1=rπ+γPπvkv_{k+1} = r_{\pi} + \gamma P_{\pi} v_k,得到:

δk+1+vπ=rπ+γPπ(δk+vπ),\delta_{k+1} + v_{\pi} = r_{\pi} + \gamma P_{\pi} (\delta_k + v_{\pi}),

可以改写为:

δk+1=vπ+rπ+γPπδk+γPπvπ\delta_{k+1} = -v_{\pi} + r_{\pi} + \gamma P_{\pi} \delta_k + \gamma P_{\pi} v_{\pi}

=γPπδkvπ+(rπ+γPπvπ)= \gamma P_{\pi} \delta_k - v_{\pi} + (r_{\pi} + \gamma P_{\pi} v_{\pi})

=γPπδk.= \gamma P_{\pi} \delta_k.

结果为:

δk+1=γPπδk=γ2Pπ2δk1==γk+1Pπk+1δ0.\delta_{k+1} = \gamma P_{\pi} \delta_k = \gamma^2 P_{\pi}^2 \delta_{k-1} = \cdots = \gamma^{k+1} P_{\pi}^{k+1} \delta_0.

由于PπP_{\pi}的每个条目都不小于0且不大于1,我们有0Pπk10 \leq P_{\pi}^k \leq 1,对于任何kk都成立。

PπkP_{\pi}^k的每个条目都不大于1。另一方面,由于γ<1\gamma < 1,我们知道γk0\gamma^k \to 0,因此δk+1=γk+1Pπk+1δ00\delta_{k+1} = \gamma^{k+1} P_{\pi}^{k+1} \delta_0 \to 0kk \to \infty时。

行动价值(Action Value)

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

联系上述的状态价值公式

vπ(s)=π(as)aq(s,a)v_{\pi}(s) = \pi(a|s)\sum_a q(s,a)

不难得到行动价值公式

q(s,a)=ap(rs,a)r+γsp(ss,a)vπ(s)q(s,a) = \sum_ap(r|s,a)r + \gamma \cdot \sum_{s^{'}}p(s^{'}|s,a)v_{\pi}(s^{'})

  • 状态价值:已知行动价值计算状态价值
  • 行动价值:已知未来的状态价值计算当前的行动价值

RL2 贝尔曼公式
https://xrlexpert.github.io/2025/02/12/RL2/
作者
Hirox
发布于
2025年2月12日
许可协议