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

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_learningLec4: Value Iteration & Policy Iteration

强化学习

Lec4: Value Iteration & Policy Iteration

求解 Bellman 最优方程的两条经典路径:Value Iteration 直接迭代 Bellman 算子,Policy Iteration 在策略评估与改进之间交替,并讨论二者的等价性与收敛性。

2026 年 02 月 05 日/7 min read/ZZCZZC
#强化学习#课程笔记#计算机科学

Value iteration algorithm

Value iteration algorithm

​ 这一节的数学基础其实就是上节课介绍过的公式:

vk+1=f(vk)=max⁡π(rπ+γPπvk)v_{k+1}=f(v_k)=\max_\pi(r_\pi+\gamma P_\pi v_k)vk+1​=f(vk​)=πmax​(rπ​+γPπ​vk​)

​ 对于这个公式的计算,我们可以将其分为两个步骤:首先我们要处理右边的关于策略 π\piπ 的优化问题(policy update);然后我们要处理左边的新一轮的 value 的计算(value update)。

Note

vkv_{k}vk​ 并不是 state value,因为 vk+1=max⁡π(rπ+γPπvk)v_{k+1}=\max_\pi(r_\pi+\gamma P_\pi v_k)vk+1​=maxπ​(rπ​+γPπ​vk​) 中左右两边的 vvv 是不一样的。

Policy update

​ 这一步是为了求出最优的策略的:

πk+1=arg⁡max⁡π(rπ+γPπvk)\pi_{k+1}=\arg \max_\pi(r_\pi+\gamma P_\pi v_k)πk+1​=argπmax​(rπ​+γPπ​vk​)

​ 也就是:

πk+1(s)=arg⁡max⁡π∑aπ(a∣s)(∑rp(r∣s,a)r+γ∑s′p(s′∣s,a)vk(s′))⏟qk(s,a),s∈S\pi_{k+1}(s) = \arg \max_{\pi} \sum_{a} \pi(a|s) \underbrace{\left( \sum_{r} p(r|s, a)r + \gamma \sum_{s'} p(s'|s, a)v_{k}(s') \right)}_{q_k(s,a)}, \quad s \in \mathcal{S}πk+1​(s)=argπmax​a∑​π(a∣s)qk​(s,a)(r∑​p(r∣s,a)r+γs′∑​p(s′∣s,a)vk​(s′))​​,s∈S

​ 根据之前的经验,我们知道,想要到达最好的策略的话,就要:

πk+1(a∣s)={1a=ak∗(s)0a≠ak∗(s)\pi_{k+1}(a|s) = \begin{cases} 1 & a = a_k^*(s) \\ 0 & a \neq a_k^*(s) \end{cases}πk+1​(a∣s)={10​a=ak∗​(s)a=ak∗​(s)​

​ 此时:

ak∗(s)=arg⁡max⁡aqk(a,s)a_k^*(s) = \arg \max_{a} q_k(a, s)ak∗​(s)=argamax​qk​(a,s)

​ 我们称 πk+1\pi_{k+1}πk+1​ 为 greedy policy,因为此时选择的都是最好的 q-value。

Value update

​ 这一步是为了求出 state value:

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

​ 需要注意的是,上面 value update 中的 vkv_kvk​ 代表的并不是 state value,而是一个估计值。

​ 展开公式,得到:

vk+1(s)=∑aπk+1(a∣s)(∑rp(r∣s,a)r+γ∑s′p(s′∣s,a)vk(s′))⏟qk(s,a),s∈Svk+1(s)=∑aπk+1(a∣s)qk(s,a)v_{k+1}(s) = \sum_{a} \pi_{k+1}(a|s) \underbrace{\left( \sum_{r} p(r|s, a)r + \gamma \sum_{s'} p(s'|s, a)v_{k}(s') \right)}_{q_k(s,a)}, \quad s \in \mathcal{S} \\ v_{k+1}(s)=\sum_a \pi_{k+1}(a \mid s)q_k(s,a)vk+1​(s)=a∑​πk+1​(a∣s)qk​(s,a)(r∑​p(r∣s,a)r+γs′∑​p(s′∣s,a)vk​(s′))​​,s∈Svk+1​(s)=a∑​πk+1​(a∣s)qk​(s,a)

​ 根据上面的最优策略的选择,我们知道:

vk+1(s)=max⁡aqk(a,s)v_{k+1}(s) = \max_{a} q_k(a, s)vk+1​(s)=amax​qk​(a,s)

​ Value iteration algorithm 算法如下所示:

image-20260203141539420

Policy interation algorithm

​ 正如名称所示,在这个方法中,我们更关注 policy 的衡量与优化,分为两个阶段:policy evaluation(PE)、policy improvement(PI)。

Policy evaluation

​ 在这一步中,我们需要去衡量(计算)当前策略的 state value 有多好:

vπk=rπk+γPπkvπkv_{\pi_k} = r_{\pi_k} + \gamma P_{\pi_k} v_{\pi_k}vπk​​=rπk​​+γPπk​​vπk​​

​ vπkv_{\pi_k}vπk​​ 是 state value function。

​ 我们可以使用 Iteration solution 的方法来计算 vπkv_{\pi_k}vπk​​:

vπk(j+1)=rπk+γPπkvπk(j),j=0,1,2,…vπk(j+1)(s)=∑aπk(a∣s)(∑rp(r∣s,a)r+γ∑s′p(s′∣s,a)vπk(j)(s′)),s∈Sv_{\pi_k}^{(j+1)} = r_{\pi_k} + \gamma P_{\pi_k} v_{\pi_k}^{(j)}, \quad j = 0, 1, 2, \dots \\ v_{\pi_k}^{(j+1)}(s) = \sum_a \pi_k(a|s) \left( \sum_r p(r|s, a)r + \gamma \sum_{s'} p(s'|s, a) v_{\pi_k}^{(j)}(s') \right), \quad s \in \mathcal{S}vπk​(j+1)​=rπk​​+γPπk​​vπk​(j)​,j=0,1,2,…vπk​(j+1)​(s)=a∑​πk​(a∣s)(r∑​p(r∣s,a)r+γs′∑​p(s′∣s,a)vπk​(j)​(s′)),s∈S

​ 当 j→∞j \rightarrow \infinj→∞ 或者 jjj 已经足够大了或者 ∣∣vπk(j+1)−vπk(j)∣∣||v_{\pi_k}^{(j+1)}-v_{\pi_k}^{(j)}||∣∣vπk​(j+1)​−vπk​(j)​∣∣ 足够小的时候停止。

Policy improvement

​ 计算出 state value 后,就可以根据其值对策略进行优化:

πk+1=arg⁡max⁡π(rπ+γPπvπk)πk+1(s)=arg⁡max⁡π∑aπ(a∣s)(∑rp(r∣s,a)r+γ∑s′p(s′∣s,a)vπk(s′))⏟qπk(s,a),s∈S\pi_{k+1} = \arg\max_{\pi} (r_\pi + \gamma P_\pi v_{\pi_k}) \\ \pi_{k+1}(s) = \arg\max_{\pi} \sum_a \pi(a|s) \underbrace{\left( \sum_r p(r|s, a)r + \gamma \sum_{s'} p(s'|s, a)v_{\pi_k}(s') \right)}_{q_{\pi_k}(s, a)}, \quad s \in \mathcal{S}πk+1​=argπmax​(rπ​+γPπ​vπk​​)πk+1​(s)=argπmax​a∑​π(a∣s)qπk​​(s,a)(r∑​p(r∣s,a)r+γs′∑​p(s′∣s,a)vπk​​(s′))​​,s∈S

​ 要想获得最优的策略,需要让 action 的奖励最大,也就是对应的 qqq 最大:

ak∗(s)=arg⁡max⁡aqπk(a,s)a_k^*(s)=\arg \max_aq_{\pi_k}(a,s)ak∗​(s)=argamax​qπk​​(a,s)

​ 对应的策略为:

πk+1(a∣s)={1a=ak∗(s)0a≠ak∗(s)\pi_{k+1}(a|s) = \begin{cases} 1 & a = a_k^*(s) \\ 0 & a \neq a_k^*(s) \end{cases}πk+1​(a∣s)={10​a=ak∗​(s)a=ak∗​(s)​

Summary & algorithm

​ 整个算法的流程如下所示:

π0→PEvπ0→PIπ1→PEvπ1→PIπ2→PEvπ2→PI…\pi_0 \xrightarrow{PE} v_{\pi_0} \xrightarrow{PI} \pi_1 \xrightarrow{PE} v_{\pi_1} \xrightarrow{PI} \pi_2 \xrightarrow{PE} v_{\pi_2} \xrightarrow{PI} \dotsπ0​PE​vπ0​​PI​π1​PE​vπ1​​PI​π2​PE​vπ2​​PI​…

​ 在这里,我们有四个问题:

Note

Q1:在 PE 阶段,如何通过贝尔曼公式计算 state value vπkv_{\pi_k}vπk​​。

Ans:

实际上我们就是要解决这个方程:

vπk=rπk+γPπkvπkv_{\pi_k} = r_{\pi_k} + \gamma P_{\pi_k} v_{\pi_k}vπk​​=rπk​​+γPπk​​vπk​​

有两种方法,实际上我们在之前的课程中都学习过:

  1. Closed-form solution:vπk=(I−γPπk)−1rπkv_{\pi_k} = (I - \gamma P_{\pi_k})^{-1} r_{\pi_k}vπk​​=(I−γPπk​​)−1rπk​​
  2. Iterative solution:vπk(j+1)=rπk+γPπkvπk(j),j=0,1,2,…v_{\pi_k}^{(j+1)} = r_{\pi_k} + \gamma P_{\pi_k} v_{\pi_k}^{(j)}, \quad j = 0, 1, 2, \dotsvπk​(j+1)​=rπk​​+γPπk​​vπk​(j)​,j=0,1,2,…
Note

Q2:在 PI 阶段,为什么新策略 πk+1\pi_{k+1}πk+1​ 会比 πk\pi_kπk​ 好?

Ans:

证明如下:

image-20260221152633971 image-20260221152646051

Note

Q3:为什么这样的一个算法可以最终到达最优策略?

Ans:

首先,我们知道:vπ0≤vπ1≤vπ2≤⋯≤vπk≤⋯≤v∗v_{\pi_0} \leq v_{\pi_1} \leq v_{\pi_2} \leq \dots \leq v_{\pi_k} \leq \dots \leq v^*vπ0​​≤vπ1​​≤vπ2​​≤⋯≤vπk​​≤⋯≤v∗。接下来就是证明这个上界是可以取到的。

证明如下:

image-20260221154550762

Note

Q4:policy iteration 和 value iteration 有什么关系?

Ans:

它们两者其实是一个更普遍的算法 truncated policy iteration 的两个极端。

​ 算法如下:

image-20260221161139642

例子

image-20260221161521504

​ 我们可以发现一个现象:靠近目标区域的策略会先达到最优。

Truncated policy iteration algorithm

​ 我们首先对上面讲过的两种迭代方式进行一个对比:

  • Policy iteration:π0→PEvπ0→PIπ1→PEvπ1→PIπ2→PEvπ2→PI…\pi_0 \xrightarrow{PE} v_{\pi_0} \xrightarrow{PI} \pi_1 \xrightarrow{PE} v_{\pi_1} \xrightarrow{PI} \pi_2 \xrightarrow{PE} v_{\pi_2} \xrightarrow{PI} \dotsπ0​PE​vπ0​​PI​π1​PE​vπ1​​PI​π2​PE​vπ2​​PI​…
  • Value iteration:v0→PUπ1′→VUv1→PUπ2′→VUv2→PU…v_0 \xrightarrow{PU} \pi_1' \xrightarrow{VU} v_1 \xrightarrow{PU} \pi_2' \xrightarrow{VU} v_2 \xrightarrow{PU} \dotsv0​PU​π1′​VU​v1​PU​π2′​VU​v2​PU​…

​ 具体对比如下:

Policy iteration algorithmValue iteration algorithmComments
1) Policy:π0\pi_0π0​N/A
2) Value:vπ0=rπ0+γPπ0vπ0v_{\pi_0} = r_{\pi_0} + \gamma P_{\pi_0} v_{\pi_0}vπ0​​=rπ0​​+γPπ0​​vπ0​​v0:=vπ0v_0 := v_{\pi_0}v0​:=vπ0​​
3) Policy:π1=arg⁡max⁡π(rπ+γPπvπ0)\pi_1 = \arg\max_{\pi} (r_{\pi} + \gamma P_{\pi} v_{\pi_0})π1​=argmaxπ​(rπ​+γPπ​vπ0​​)π1=arg⁡max⁡π(rπ+γPπv0)\pi_1 = \arg\max_{\pi} (r_{\pi} + \gamma P_{\pi} v_0)π1​=argmaxπ​(rπ​+γPπ​v0​)The two policies are the same
4) Value:vπ1=rπ1+γPπ1vπ1v_{\pi_1} = r_{\pi_1} + \gamma P_{\pi_1} v_{\pi_1}vπ1​​=rπ1​​+γPπ1​​vπ1​​v1=rπ1+γPπ1v0v_1 = r_{\pi_1} + \gamma P_{\pi_1} v_0v1​=rπ1​​+γPπ1​​v0​vπ1≥v1v_{\pi_1} \ge v_1vπ1​​≥v1​ since vπ1≥vπ0v_{\pi_1} \ge v_{\pi_0}vπ1​​≥vπ0​​
5) Policy:π2=arg⁡max⁡π(rπ+γPπvπ1)\pi_2 = \arg\max_{\pi} (r_{\pi} + \gamma P_{\pi} v_{\pi_1})π2​=argmaxπ​(rπ​+γPπ​vπ1​​)π2′=arg⁡max⁡π(rπ+γPπv1)\pi_2' = \arg\max_{\pi} (r_{\pi} + \gamma P_{\pi} v_1)π2′​=argmaxπ​(rπ​+γPπ​v1​)
⋮\vdots⋮⋮\vdots⋮⋮\vdots⋮⋮\vdots⋮

​ 我们考虑 4)Value 这一步,也就是解决 vπ1=rπ1+γPπ1vπ1v_{\pi_1} = r_{\pi_1} + \gamma P_{\pi_1} v_{\pi_1}vπ1​​=rπ1​​+γPπ1​​vπ1​​ 这一步:

vπ1(0)=v0value iteration←v1←vπ1(1)=rπ1+γPπ1vπ1(0)vπ1(2)=rπ1+γPπ1vπ1(1)⋮→truncated policy iteration←vˉ1←vπ1(j)=rπ1+γPπ1vπ1(j−1)⋮→policy iteration←vπ1←vπ1(∞)=rπ1+γPπ1vπ1(∞)\begin{align*} & \color{red}{v_{\pi_1}^{(0)}} = v_0 \\ \text{value iteration} \leftarrow \color{red}{v_1} \leftarrow \quad & v_{\pi_1}^{(1)} = r_{\pi_1} + \gamma P_{\pi_1} v_{\pi_1}^{(0)} \\ & v_{\pi_1}^{(2)} = r_{\pi_1} + \gamma P_{\pi_1} v_{\pi_1}^{(1)} \\ & \vdots \\ \color{red}{\rightarrow \text{truncated policy iteration}} \leftarrow \color{red}{\bar{v}_1} \leftarrow \quad & v_{\pi_1}^{(j)} = r_{\pi_1} + \gamma P_{\pi_1} v_{\pi_1}^{(j-1)} \\ & \vdots \\ \rightarrow \text{policy iteration} \leftarrow \color{red}{v_{\pi_1}} \leftarrow \quad & v_{\pi_1}^{(\infty)} = r_{\pi_1} + \gamma P_{\pi_1} v_{\pi_1}^{(\infty)} \end{align*}value iteration←v1​←→truncated policy iteration←vˉ1​←→policy iteration←vπ1​​←​vπ1​(0)​=v0​vπ1​(1)​=rπ1​​+γPπ1​​vπ1​(0)​vπ1​(2)​=rπ1​​+γPπ1​​vπ1​(1)​⋮vπ1​(j)​=rπ1​​+γPπ1​​vπ1​(j−1)​⋮vπ1​(∞)​=rπ1​​+γPπ1​​vπ1​(∞)​​

​ 中间的 truncated policy iteration 是一般情况。value iteration 和 policy iteration 可看作是 truncated policy iteration 在 j=1j=1j=1 以及 j→∞j \rightarrow \infinj→∞ 的特殊情况。

​ 其伪代码如下所示:

image-20260221171442824

​ 这三种算法的性能如下:

image-20260221171524906

ZZC

Written by

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

Comments

评论功能即将上线

On this page

  • Value iteration algorithm
  • Value iteration algorithm
  • Policy update
  • Value update
  • Policy interation algorithm
  • Policy evaluation
  • Policy improvement
  • Summary & algorithm
  • 例子
  • Truncated policy iteration algorithm