基于“蘑菇书”的强化学习知识点(六):策略迭代和价值迭代来解决马尔可夫决策过程的控制问题。
策略迭代和价值迭代来解决马尔可夫决策过程的控制问题。
策略迭代和价值迭代来解决马尔可夫决策过程的控制问题。
摘要
本系列知识点讲解基于蘑菇书EasyRL中的内容进行详细的疑难点分析!具体内容请阅读蘑菇书EasyRL!
对应蘑菇书EasyRL——2.3.10 马尔可夫决策过程控制
策略迭代(Policy Iteration)与价值迭代(Value Iteration)详解
策略迭代和价值迭代是解决马尔可夫决策过程(MDP)控制问题的两种经典动态规划方法。它们的目标是找到最优策略 π ∗ \pi^* π∗,使得智能体在环境中获得最大累积奖励。以下从基础概念到具体算法逐步推导,并结合实例说明。
1. 马尔可夫决策过程(MDP)回顾
MDP 包含以下要素:
- 状态集合 S \mathcal{S} S:所有可能的状态(如机器人位置)。
- 动作集合 A \mathcal{A} A:所有可能的动作(如移动方向)。
- 转移概率 P ( s ′ ∣ s , a ) P(s' \mid s, a) P(s′∣s,a):在状态 s s s 执行动作 a a a 后转移到状态 s ′ s' s′ 的概率。
- 奖励函数 R ( s , a , s ′ ) R(s, a, s') R(s,a,s′):执行动作 a a a 后从状态 s s s 转移到 s ′ s' s′ 的即时奖励。
- 折扣因子 γ ∈ [ 0 , 1 ) \gamma \in [0,1) γ∈[0,1):平衡当前奖励与未来奖励的重要性。
2. 策略迭代(Policy Iteration)
策略迭代通过交替执行 策略评估(Policy Evaluation) 和 策略改进(Policy Improvement) 来逐步逼近最优策略。
(1) 策略评估(Policy Evaluation)
目标:计算当前策略 π \pi π 的状态值函数 V π ( s ) V^\pi(s) Vπ(s)。
方法:利用贝尔曼期望方程迭代更新值函数,直到收敛。
贝尔曼期望方程:
V k + 1 ( s ) = ∑ a π ( a ∣ s ) ∑ s ′ P ( s ′ ∣ s , a ) [ R ( s , a , s ′ ) + γ V k ( s ′ ) ] V_{k+1}(s) = \sum_{a} \pi(a \mid s) \sum_{s'} P(s' \mid s, a) \left[ R(s, a, s') + \gamma V_k(s') \right] Vk+1(s)=a∑π(a∣s)s′∑P(s′∣s,a)[R(s,a,s′)+γVk(s′)]
算法步骤:
- 初始化所有状态的值函数 V 0 ( s ) = 0 V_0(s) = 0 V0(s)=0。
- 对于 k = 0 , 1 , 2 , … k = 0, 1, 2, \dots k=0,1,2,…,依次更新每个状态的值:
V k + 1 ( s ) = ∑ a π ( a ∣ s ) ∑ s ′ P ( s ′ ∣ s , a ) [ R ( s , a , s ′ ) + γ V k ( s ′ ) ] V_{k+1}(s) = \sum_{a} \pi(a \mid s) \sum_{s'} P(s' \mid s, a) \left[ R(s, a, s') + \gamma V_k(s') \right] Vk+1(s)=a∑π(a∣s)s′∑P(s′∣s,a)[R(s,a,s′)+γVk(s′)] - 当 max s ∣ V k + 1 ( s ) − V k ( s ) ∣ < ϵ \max_s |V_{k+1}(s) - V_k(s)| < \epsilon maxs∣Vk+1(s)−Vk(s)∣<ϵ(预设阈值)时停止迭代。
(2) 策略改进(Policy Improvement)
目标:基于当前值函数 V π V^\pi Vπ,更新策略 π \pi π 使其更优。
方法:对每个状态选择能够最大化预期收益的动作(贪婪策略)。
策略更新规则:
π ′ ( s ) = arg max a ∑ s ′ P ( s ′ ∣ s , a ) [ R ( s , a , s ′ ) + γ V π ( s ′ ) ] \pi'(s) = \arg\max_a \sum_{s'} P(s' \mid s, a) \left[ R(s, a, s') + \gamma V^\pi(s') \right] π′(s)=argamaxs′∑P(s′∣s,a)[R(s,a,s′)+γVπ(s′)]
算法步骤:
- 对每个状态 s s s,计算所有动作的预期收益:
Q π ( s , a ) = ∑ s ′ P ( s ′ ∣ s , a ) [ R ( s , a , s ′ ) + γ V π ( s ′ ) ] Q^\pi(s, a) = \sum_{s'} P(s' \mid s, a) \left[ R(s, a, s') + \gamma V^\pi(s') \right] Qπ(s,a)=s′∑P(s′∣s,a)[R(s,a,s′)+γVπ(s′)] - 选择使 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a) 最大的动作作为新策略:
π ′ ( s ) = arg max a Q π ( s , a ) \pi'(s) = \arg\max_a Q^\pi(s, a) π′(s)=argamaxQπ(s,a)
(3) 策略迭代完整流程
- 初始化:随机选择一个初始策略 π 0 \pi_0 π0。
- 循环直到策略收敛:
- 策略评估:计算当前策略 π k \pi_k πk 的值函数 V π k V^{\pi_k} Vπk。
- 策略改进:根据 V π k V^{\pi_k} Vπk 生成新策略 π k + 1 \pi_{k+1} πk+1。
- 如果 π k + 1 = π k \pi_{k+1} = \pi_k πk+1=πk,停止迭代。
示例:网格世界(Grid World)
环境设定:
-
3x3 网格,中心为起点 S 4 S_4 S4,右上角为终点 G G G(奖励 +10),其他移动每步奖励 -1。
-
动作:上、下、左、右(撞墙则留在原地)。
-
策略 π 0 \pi_0 π0:随机选择动作(各方向概率 25%)。
-
折扣因子 γ = 0.9 \gamma = 0.9 γ=0.9。
s6 | s7 | s8(终点,奖励+10) s3 | s4 | s5 s0 | s1 | s2
第一次策略评估:
- 计算 V π 0 ( S 0 ) V^{\pi_0}(S_0) Vπ0(S0):
V π 0 ( S 0 ) = 0.25 [ ( − 1 + 0.9 × 0 ) + ( − 1 + 0.9 × 0 ) + ( − 1 + 0.9 × 0 ) + ( − 1 + 0.9 × 0 ) ] = − 1 V^{\pi_0}(S_0) = 0.25 \left[ (-1 + 0.9 \times 0) + (-1 + 0.9 \times 0) + (-1 + 0.9 \times 0) + (-1 + 0.9 \times 0) \right] = -1 Vπ0(S0)=0.25[(−1+0.9×0)+(−1+0.9×0)+(−1+0.9×0)+(−1+0.9×0)]=−1 - 同理计算其他状态的值函数(初始均为 -1)。
第一次策略改进:
- 对 S 4 S_4 S4,计算各动作的 Q Q Q 值:
- 向右:移动到 S 5 S_5 S5, Q ( S 4 , 右 ) = − 1 + 0.9 × ( − 1 ) = − 1.9 Q(S_4, \text{右}) = -1 + 0.9 \times (-1) = -1.9 Q(S4,右)=−1+0.9×(−1)=−1.9
- 其他动作同理。
- 由于所有动作 Q Q Q 值相同,策略保持不变。
后续迭代:
- 经过多次策略评估和改进后,策略逐渐收敛到最优策略:始终向右或向上移动以最快到达终点。
3. 价值迭代(Value Iteration)
价值迭代直接通过迭代更新值函数逼近最优值函数 V ∗ V^* V∗,最后从中提取最优策略。
(1) 贝尔曼最优方程
价值迭代的核心是贝尔曼最优方程:
V k + 1 ( s ) = max a ∑ s ′ P ( s ′ ∣ s , a ) [ R ( s , a , s ′ ) + γ V k ( s ′ ) ] V_{k+1}(s) = \max_a \sum_{s'} P(s' \mid s, a) \left[ R(s, a, s') + \gamma V_k(s') \right] Vk+1(s)=amaxs′∑P(s′∣s,a)[R(s,a,s′)+γVk(s′)]
(2) 算法步骤
- 初始化:所有状态的值函数 V 0 ( s ) = 0 V_0(s) = 0 V0(s)=0。
- 循环直到值函数收敛:
V k + 1 ( s ) = max a ∑ s ′ P ( s ′ ∣ s , a ) [ R ( s , a , s ′ ) + γ V k ( s ′ ) ] V_{k+1}(s) = \max_a \sum_{s'} P(s' \mid s, a) \left[ R(s, a, s') + \gamma V_k(s') \right] Vk+1(s)=amaxs′∑P(s′∣s,a)[R(s,a,s′)+γVk(s′)] - 提取最优策略:
π ∗ ( s ) = arg max a ∑ s ′ P ( s ′ ∣ s , a ) [ R ( s , a , s ′ ) + γ V ∗ ( s ′ ) ] \pi^*(s) = \arg\max_a \sum_{s'} P(s' \mid s, a) \left[ R(s, a, s') + \gamma V^*(s') \right] π∗(s)=argamaxs′∑P(s′∣s,a)[R(s,a,s′)+γV∗(s′)]
示例:网格世界(同策略迭代)
第一次迭代:
- 计算 V 1 ( S 0 ) V_1(S_0) V1(S0):
V 1 ( S 0 ) = max { 向上 : − 1 + 0.9 × 0 , 向下 : − 1 + 0.9 × 0 , 左 : − 1 + 0.9 × 0 , 右 : − 1 + 0.9 × 0 } = − 1 V_1(S_0) = \max \left\{ \text{向上}: -1 + 0.9 \times 0, \text{向下}: -1 + 0.9 \times 0, \text{左}: -1 + 0.9 \times 0, \text{右}: -1 + 0.9 \times 0 \right\} = -1 V1(S0)=max{向上:−1+0.9×0,向下:−1+0.9×0,左:−1+0.9×0,右:−1+0.9×0}=−1
第二次迭代:
- 计算 V 2 ( S 0 ) V_2(S_0) V2(S0):
V 2 ( S 0 ) = max { 右 : − 1 + 0.9 × ( − 1 ) = − 1.9 , 其他动作同理 } = − 1.9 V_2(S_0) = \max \left\{ \text{右}: -1 + 0.9 \times (-1) = -1.9, \text{其他动作同理} \right\} = -1.9 V2(S0)=max{右:−1+0.9×(−1)=−1.9,其他动作同理}=−1.9
V 2 ( S 0 ) = max { 上 : − 1 + 0.9 × ( − 1 ) = − 1.9 , 其他动作同理 } = − 1.9 V_2(S_0) = \max \left\{ \text{上}: -1 + 0.9 \times (-1) = -1.9, \text{其他动作同理} \right\} = -1.9 V2(S0)=max{上:−1+0.9×(−1)=−1.9,其他动作同理}=−1.9
后续迭代:
- … \dots …
提取最优策略:
- 对每个状态选择最大化 Q ∗ ( s , a ) Q^*(s, a) Q∗(s,a) 的动作,例如在 S 0 S_0 S0 选择向右或向上移动。
4. 策略迭代 vs 价值迭代
| 特征 | 策略迭代 | 价值迭代 |
|---|---|---|
| 核心步骤 | 策略评估 + 策略改进交替进行 | 直接迭代更新最优值函数 |
| 收敛速度 | 策略通常快速收敛,但每次评估计算量大 | 值函数收敛较慢,但单次迭代更快 |
| 中间策略 | 显式维护策略并逐步改进 | 无显式策略,仅在最后提取 |
| 适用场景 | 策略空间较小或需要显式策略分析 | 状态空间较大或无需中间策略 |
| 数学基础 | 贝尔曼期望方程 | 贝尔曼最优方程 |
5. 总结
- 策略迭代:通过交替的策略评估和改进,逐步优化策略。适合需要显式分析策略的场景。
- 价值迭代:直接逼近最优值函数,最后提取策略。适合状态空间较大或无需中间策略的场景。
- 共同点:均基于动态规划,依赖完整的环境模型(已知 ( P ) 和 ( R ))。
通过网格世界示例可直观理解两者的计算流程:策略迭代通过显式策略更新寻找最优路径,而价值迭代通过值函数迭代隐式达成目标。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)