世界は優しい
首页博客关于

Site

世界は優しい

世界很温柔,我们都在努力变得更好。

Navigation

  • 首页
  • 博客
  • 关于

Connect

  • GitHub
  • 作者

© 2026 ZZC. 本站内容以 CC BY-NC-SA 4.0 协议发布。

Built with Next.js · Tailwind CSS

Folders

课程介绍与评分Lec1: IntroductionLec2: Lexical AnalysisLec3: ParsingLec4: Abstract SyntaxLec5: Semantic AnalysisLec6: Activation RecordsLec7: Translate to Intermediate CodeLec8: Basic Blocks and TracesLec9: 指令选择Lec10: Liveness Analysis
Lec0: 课程介绍与成绩Lec1: IntroductionLec2: Operating-System StructuresLec3: ProcessesLec4: Threads(多线程编程)Lec5: CPU SchedulingLec6: 进程同步Lec7: DeadlocksLec8: Main MemoryLec9: Virtual MemoryLec10: File-System InterfaceLec11: File System ImplementationLec12: Mass-Storage System
Lec1: Basic Concepts in Reinforcement LearningLec2: Bellman EquationLec3: Bellman Optimality EquationLec4: Value Iteration & Policy IterationLec5: Monte Carlo Learning
首页
ManiGaussian 论文笔记ManiGaussian++ 论文笔记
AMP: 对抗动作先验替代复杂奖励函数DeepMimic: 从动作捕捉数据学习物理仿真角色技能DreamWaQ: 纯本体感知的四足鲁棒行走Imitating Animals: 从动物模仿到真实四足敏捷运动MoE-Loco: 多任务腿足运动的专家混合架构Multi-AMP: 多重对抗动作先验学习高级技能PIE: Proprioception with Imagination for ParkourRMA: Rapid Motor Adaptation for Legged Robots
论文阅读
Lec1: 五十音Lec2: 日语声调Lec3: 浊音和长音
Callout 语法速查
Hello World - 我的第一篇博客
Typora 语法兼容性测试
首页博客Coure-NotebookReinforcement_learningLec2: Bellman Equation

强化学习

Lec2: Bellman Equation

从回报的递推性出发推导 Bellman 方程:状态价值函数的定义、矩阵形式的封闭解,以及策略评估在 MDP 上的意义。

2026 年 01 月 22 日/8 min read/ZZCZZC
#强化学习#课程笔记#计算机科学

Why return is important

​ 在上一节中我们介绍过了 return,return 之所以很重要,是因为 return 可以帮助我们直观地确定哪一种策略更好。

image-20260119121219498

​ 对于上面的例子,我们可以计算出各个 return 如下:

return1=0+γ1+γ21+γ31+⋯=γ1−γreturn2=1+γ1+γ21+γ31+⋯=1+γ1−γreturn3=0.5×return1+0.5×return2=0.5+γ1−γreturn2>return3>return1return_1 = 0+\gamma1+\gamma^21+\gamma^31+\dots=\frac{\gamma}{1-\gamma} \\ return_2=1+\gamma1+\gamma^21+\gamma^31+\dots=1+\frac{\gamma}{1-\gamma} \\ return_3 = 0.5 \times return_1 + 0.5 \times return_2=0.5+\frac{\gamma}{1-\gamma} \\ return_2 > return_3 > return_1return1​=0+γ1+γ21+γ31+⋯=1−γγ​return2​=1+γ1+γ21+γ31+⋯=1+1−γγ​return3​=0.5×return1​+0.5×return2​=0.5+1−γγ​return2​>return3​>return1​

​ 得到第一种策略优于第三种策略优于第二种策略。

How to calculate return

​ 下面我们来看一种情况,计算各个 return:

image-20260119121849051

​ 让 viv_ivi​ 代表从 sis_isi​ 开始得到的 return,计算结果如下:

v1=r1+γr2+γ2r3+…v2=r2+γr3+γ2r4+…v3=r3+γr4+γ2r1+…v4=r4+γr1+γ2r2+…v_1 = r_1+\gamma r_2+\gamma^2 r_3+\dots \\ v_2 = r_2+\gamma r_3+\gamma^2 r_4+\dots \\ v_3=r_3+\gamma r_4 + \gamma^2 r_1 + \dots \\ v_4 = r_4 + \gamma r_1 + \gamma^2 r_2 + \dotsv1​=r1​+γr2​+γ2r3​+…v2​=r2​+γr3​+γ2r4​+…v3​=r3​+γr4​+γ2r1​+…v4​=r4​+γr1​+γ2r2​+…

​ 这种方法非常直观,但实际上,我们还有另外一种计算方法:

v1=r1+γv2v2=r2+γv3v3=r3+γv4v4=r4+γv1v_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_1v1​=r1​+γv2​v2​=r2​+γv3​v3​=r3​+γv4​v4​=r4​+γv1​

​ 这告诉我们,一个状态的 return 实际上是依赖于别的状态的 return 的。在强化学习中我们称之为 Bootstrapping。

​ 上面的公式还可以写成矩阵形式:

[v1v2v3v4]⏟v=[r1r2r3r4]+[γv2γv3γv4γv1]=[r1r2r3r4]⏟r+γ[0100001000011000]⏟P[v1v2v3v4]⏟v\underbrace{\begin{bmatrix} v_1 \\ v_2 \\ v_3 \\ v_4 \end{bmatrix}}_{\mathbf{v}} = \begin{bmatrix} r_1 \\ r_2 \\ r_3 \\ r_4 \end{bmatrix} + \begin{bmatrix} \gamma v_2 \\ \gamma v_3 \\ \gamma v_4 \\ \gamma v_1 \end{bmatrix} = \underbrace{\begin{bmatrix} r_1 \\ r_2 \\ r_3 \\ r_4 \end{bmatrix}}_{\mathbf{r}} + \gamma \underbrace{\begin{bmatrix} 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ 1 & 0 & 0 & 0 \end{bmatrix}}_{\mathbf{P}} \underbrace{\begin{bmatrix} v_1 \\ v_2 \\ v_3 \\ v_4 \end{bmatrix}}_{\mathbf{v}}v​v1​v2​v3​v4​​​​​=​r1​r2​r3​r4​​​+​γv2​γv3​γv4​γv1​​​=r​r1​r2​r3​r4​​​​​+γP​0001​1000​0100​0010​​​​v​v1​v2​v3​v4​​​​​

​ 也就是:

v=r+γPv\mathbf{v} = \mathbf{r} + \gamma \mathbf{P} \mathbf{v}v=r+γPv

​ 其中,P\mathbf{P}P 是一个关于策略以及 state transition 等东西的矩阵,之后会详细介绍。

​ 这就是针对 specific deterministic problem 的 Bellman

Another Example

image-20260119123304806

State value

​ 考虑以下单步过程:

St→AtRt+1,St+1S_t \xrightarrow{A_t}R_{t+1},S_{t+1}St​At​​Rt+1​,St+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)S_t \rightarrow A_t:\pi(A_t = a \mid S_t=s)\\ S_t,A_t \rightarrow R_{t+1}:p(R_{t+1}=r \mid S_t=s,A_t=a)\\ S_t,A_t \rightarrow S_{t+1}:p(S_{t+1}=s' \mid S_t=s,A_t=a)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)

​ 对于以上单步过程,我们可以推广到多步过程:

St→AtRt+1,St+1→At+1Rt+2,St+2→At+2Rt+3,…S_t \xrightarrow{A_t}R_{t+1},S_{t+1} \xrightarrow{A_{t+1}}R_{t+2},S_{t+2} \xrightarrow{A_{t+2}}R_{t+3},\dotsSt​At​​Rt+1​,St+1​At+1​​Rt+2​,St+2​At+2​​Rt+3​,…

​ 我们记这个多步 trajectory 的 discount return 为:

Gt=Rt+1+γRt+2+γ2Rt+3+…=Rt+1+γGt+1γ∈[0,1)\begin{gather*} \begin{aligned} G_t &= R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \dots \\ &= R_{t+1} + \gamma G_{t+1} \end{aligned} \\ \gamma \in [0, 1) \end{gather*}Gt​​=Rt+1​+γRt+2​+γ2Rt+3​+…=Rt+1​+γGt+1​​γ∈[0,1)​
Note

像 GtG_tGt​、RtR_tRt​、StS_tSt​ 这一类的符号,都是 random variable(随机变量),也就是说,可以使用概率学公式对它们进行计算分析。

​ 在前面介绍这么多以后,我们来介绍 state value。

​ 实际上,state value 被定义为 GtG_tGt​ 的期望:

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[Gt+1∣St=s]\begin{align*} v_{\pi}(s) &= \mathbb{E}[G_t \mid S_t = s] \\ &=\mathbb{E}[R_{t+1}+\gamma G_{t+1} \mid S_t = s] \\ &=\mathbb{E}[R_{t+1}\mid S_t = s] + \mathbb{E}[\gamma G_{t+1} \mid S_t = s] \\ &=\mathbb{E}[R_{t+1}\mid S_t = s] + \gamma \mathbb{E}[G_{t+1} \mid S_t = s] \end{align*}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[Gt+1​∣St​=s]​

​ 需要注意以下几点:

  • 状态从 s 开始
  • 基于 policy π\piπ
  • state value 越高,说明策略越好
Note

Return value 和 state value 是什么关系?

  • The state value is the mean of all possible returns that can be obtained starting from a state.
  • 若所有 - π(a∣s)\pi(a|s)π(a∣s), p(r∣s,a)p(r|s, a)p(r∣s,a), p(s′∣s,a)p(s'|s, a)p(s′∣s,a) - 是确定的,那么 state value 就和 return 一样

Bellman equation

​ 推导过程如下所示:

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′)∑ap(s′∣s,a)π(a∣s)\begin{align*} \mathbb{E}[G_{t+1} | S_t = s] &= \sum_{s'} \mathbb{E}[G_{t+1} | S_t = s, S_{t+1} = s'] p(s'|s) \\ &= \sum_{s'} \mathbb{E}[G_{t+1} | S_{t+1} = s'] p(s'|s) \\ &= \sum_{s'} v_{\pi}(s') p(s'|s) \\ &= \sum_{s'} v_{\pi}(s') \sum_{a} p(s'|s, a) \pi(a|s) \end{align*}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)​

​ 结合上面的公式,可以推导出:

vπ(s)=E[Rt+1∣St=s]+γE[Gt+1∣St=s],=∑aπ(a∣s)∑rp(r∣s,a)r⏟mean of immediate rewards+γ∑aπ(a∣s)∑s′p(s′∣s,a)vπ(s′)⏟mean of future rewards,=∑aπ(a∣s)[∑rp(r∣s,a)r+γ∑s′p(s′∣s,a)vπ(s′)],∀s∈S.\begin{align*} \textcolor{red}{v_{\pi}(s)} &= \mathbb{E}[R_{t+1} \mid S_t = s] + \gamma \mathbb{E}[G_{t+1} \mid S_t = s], \\ &= \textcolor{blue}{\underbrace{\color{black}\sum_{a} \pi(a|s) \sum_{r} p(r|s, a)r}_{\text{mean of immediate rewards}}} + \textcolor{blue}{\underbrace{\color{black}\gamma \sum_{a} \pi(a|s) \sum_{s'} p(s'|s, a) \textcolor{red}{v_{\pi}(s')}}_{\text{mean of future rewards}}}, \\ &= \textcolor{blue}{\sum_{a} \pi(a|s) \left[ \sum_{r} p(r|s, a)r + \gamma \sum_{s'} p(s'|s, a) \textcolor{red}{v_{\pi}(s')} \right]}, \quad \forall s \in \mathcal{S}. \end{align*}vπ​(s)​=E[Rt+1​∣St​=s]+γE[Gt+1​∣St​=s],=mean of immediate rewardsa∑​π(a∣s)r∑​p(r∣s,a)r​​+mean of future rewardsγa∑​π(a∣s)s′∑​p(s′∣s,a)vπ​(s′)​​,=a∑​π(a∣s)[r∑​p(r∣s,a)r+γs′∑​p(s′∣s,a)vπ​(s′)],∀s∈S.​
Note

看似这里只有一条式子,且 vπ(s)v_{\pi}(s)vπ​(s) 的计算是依赖于 vπ(s)v_{\pi}(s)vπ​(s) 的。但实际上,我们可以对 ∀s∈S\forall s \in S∀s∈S,都得到这一条式子,因此可以得到多条方程,从而计算出结果。这也就是 Bpptstrapping。

  • π(a∣s)\pi(a \mid s)π(a∣s) 是一个给定的策略。解决这个方程的过程叫做 policy evaluation。
  • p(r∣s,a)p(r \mid s,a)p(r∣s,a) 和 p(s′∣s,a)p(s' \mid s,a)p(s′∣s,a) 代表着动态的模型。

Example 1

image-20260119155152049

image-20260119155225648

image-20260119155247456

image-20260119155359699

Example 2

image-20260119155544784

image-20260119155606891

Matrix-vector form

vπ(s)=∑aπ(a∣s)[∑rp(r∣s,a)r+γ∑s′p(s′∣s,a)vπ(s′)],∀s∈S.v_{\pi}(s)= {\sum_{a} \pi(a|s) \left[ \sum_{r} p(r|s, a)r + \gamma \sum_{s'} p(s'|s, a){v_{\pi}(s')} \right]}, \quad \forall s \in \mathcal{S}.vπ​(s)=a∑​π(a∣s)[r∑​p(r∣s,a)r+γs′∑​p(s′∣s,a)vπ​(s′)],∀s∈S.

​ 对于上面的贝尔曼表达式,我们可以进行一些处理:

rπ(s)≐∑a∈Aπ(a∣s)∑r∈Rp(r∣s,a)rpπ(s′∣s)≐∑a∈Aπ(a∣s)p(s′∣s,a)vπ(s)=rπ(s)+γ∑s′pπ(s′∣s)vπ(s′)r_{\pi}(s) \doteq \sum_{a \in \mathcal{A}} \pi(a|s) \sum_{r \in \mathcal{R}} p(r|s, a)r \\ p_{\pi}(s'|s) \doteq \sum_{a \in \mathcal{A}} \pi(a|s) p(s'|s, a) \\ v_{\pi}(s)=r_{\pi}(s)+\gamma \sum_{s'}p_{\pi}(s' \mid s)v_{\pi}(s')rπ​(s)≐a∈A∑​π(a∣s)r∈R∑​p(r∣s,a)rpπ​(s′∣s)≐a∈A∑​π(a∣s)p(s′∣s,a)vπ​(s)=rπ​(s)+γs′∑​pπ​(s′∣s)vπ​(s′)

​ 其中,rπ(s)r_{\pi}(s)rπ​(s) 代表的是当前 sss 情况下所可以获得的平均奖励;而 pπ(s′∣s)p_{\pi}(s' \mid s)pπ​(s′∣s) 则代表从状态 sss 到达状态 s′s's′ 的概率。

​ 详细解释rπ(s)r_{\pi}(s)rπ​(s)。实际上 ∑r∈Rp(r∣s,a)r\sum_{r \in \mathcal{R}} p(r|s, a)r∑r∈R​p(r∣s,a)r 代表在当前状态 sss 下,选择动作 aaa 的平均可获得奖励。

​ 我们对每一个状态 states 标号为 si  (i=1,…,n)s_i \; (i=1,\dots,n)si​(i=1,…,n),于是对于上面的贝尔曼公式,我们可以写成下面的格式:

vπ(si)=rπ(si)+γ∑sjpπ(sj∣si)vπ(sj)v_{\pi}(s_i)=r_{\pi}(s_i)+\gamma \sum_{s_j}p_{\pi}(s_j \mid s_i)v_{\pi}(s_j)vπ​(si​)=rπ​(si​)+γsj​∑​pπ​(sj​∣si​)vπ​(sj​)

​ 将所有的这些公式放在一起,并写成向量形式:

vπ=rπ+γPπvπvπ=[vπ(s1),…,vπ(sn)]T∈Rnrπ=[rπ(s1),…,rπ(sn)]T∈RnPπ∈Rn×n,[Pπ]ij=pπ(sj∣si),v_{\pi}=r_{\pi}+\gamma P_{\pi}v_{\pi} \\ v_{\pi} = [v_{\pi}(s_1), \ldots, v_{\pi}(s_n)]^T \in \mathbb{R}^n \\ r_{\pi} = [r_{\pi}(s_1), \ldots, r_{\pi}(s_n)]^T \in \mathbb{R}^n \\ P_{\pi} \in \mathbb{R}^{n \times n},[P_{\pi}]_{ij} = p_{\pi}(s_j|s_i),vπ​=rπ​+γPπ​vπ​vπ​=[vπ​(s1​),…,vπ​(sn​)]T∈Rnrπ​=[rπ​(s1​),…,rπ​(sn​)]T∈RnPπ​∈Rn×n,[Pπ​]ij​=pπ​(sj​∣si​),

​ 其中,PπP_{\pi}Pπ​ 代表的是状态转移矩阵。例子如下:

image-20260201185224003

Solve state values

​ 给定一个 policy,找到一个对应的 state value 的过程被称为 policy evaluation。

​ 我们可以根据公式直接计算得到(closed-form solution):

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

​ 但实际上,我们并不会使用这个公式,因为这个公式需要求一个矩阵的逆,这很费时。

​ 实际上,可以使用迭代法来进行计算:

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

​ 刚开始时,我们随便代入一个变量 v0v_0v0​,并一直计算,就可以得到一个近似解。其数学上的保证如下:

vk→vπ=(I−γPπ)−1rπ,  k→∞v_k \rightarrow v_{\pi}=(I-\gamma P_{\pi})^{-1}r_{\pi}, \; k \rightarrow \infinvk​→vπ​=(I−γPπ​)−1rπ​,k→∞
Note

上面相关的证明如下:

image-20260201191114658

Action value

​ Action value 指的是 the average return the agent can get starting from a state and taking an action,也就是:

qπ(s,a)=Eπ[Gt∣St=s,At=a]q_{\pi}(s,a)=\mathbb{E}_{\pi}[G_{t} \mid S_t=s,A_t=a]qπ​(s,a)=Eπ​[Gt​∣St​=s,At​=a]

​ 其与 state value 有如下关系:

vπ(s)=∑a∈Aπ(a∣s)⋅qπ(s,a)v_{\pi}(s)=\sum_{a \in \mathcal{A}}\pi(a \mid s) \cdot q_{\pi}(s,a)vπ​(s)=a∈A∑​π(a∣s)⋅qπ​(s,a)

​ 结合之前贝尔曼公式的形式,我们可以得到:

qπ(s,a)=∑rp(r∣s,a)r+γ∑s′p(s′∣s,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')}qπ​(s,a)=r∑​p(r∣s,a)r+γs′∑​p(s′∣s,a)vπ​(s′)

​ 根据上面的两个公式,我们可以知道:

  • 若我们知道所有的 vπ(s)v_{\pi}(s)vπ​(s),则我们可以计算出所有的 Action value qπ(s,a)q_{\pi}(s,a)qπ​(s,a)
  • 若我们知道所有的 Action value qπ(s,a)q_{\pi}(s,a)qπ​(s,a),则我们可以计算出所有的 state value vπ(s)v_{\pi}(s)vπ​(s)
ZZC

Written by

ZZC
每天研究怎么摸鱼的神人

Comments

评论功能即将上线

On this page

  • Why return is important
  • How to calculate return
  • Another Example
  • State value
  • Bellman equation
  • Example 1
  • Example 2
  • Matrix-vector form
  • Solve state values
  • Action value