动态规划
介绍动态规划在强化学习中的应用,包括动态规划的定义、策略评估、策略迭代和价值迭代等内容
动态规划定义
- 动态规划不是 RL 特有的,它解决的是一类问题:序列决策 + 最优性 + 可分解结构,而 MDP 问题刚好满足两个关键条件
- 最优子结构(Optimal Substructure):从当前状态开始的最优决策 = 当前一步最优 + 后续状态仍然最优,这也正是贝尔曼最优原理
- 重叠子问题(Overlapping Subproblems):不同轨迹会反复到达同一个状态,所以「状态价值」值得缓存和反复使用,这就是为什么用值函数而不是直接枚举轨迹
- 因此引入动态规划解决已知的 MDP 问题(即状态转移概率矩阵和奖励函数已知)
- 动态规划方法的特点
- Model-based
- 动态规划假设 MDP 的转移概率 和奖励函数 是完全已知的;而我们需要解决的是 Planning,也即如何解决 MDP 问题
- 动态规划的更新式为
- 必须知道整个转移分布,不能靠采样
- 确定性
- 值函数和策略的更新是基于精确的数学计算,不依赖于采样数据
- 动态规划不引入方差,所以 DP 是 RL 的 “理想上限”
- 因此,TD / Q-learning 的本质是在不知道模型时,用采样近似 DP
- 预测 / 控制问题
- 对于 Prediction:预测固定策略的价值函数 —— 策略评估
- 对于 Control:在给定 MDP 中,能做到的最好事情是什么;可获得最大回报是什么;最好的策略是什么;最优价值函数
- Model-based
- 动态规划的目标
-
动态规划的目标是求解最优策略 ,即找到一种策略使得累积期望奖励(或价值)最大化
-
价值函数(Value Function):
-
状态价值函数 :在策略 下,从状态 开始的累积期望奖励
-
状态 - 动作价值函数 :在策略 下,从状态 执行动作 开始的累积期望奖励
-
-
设 是最优价值函数,最优策略 满足:
-
策略评估
-
策略评估(Policy Evaluation)
-
目标:给定一个策略 ,计算其对应的状态价值函数 ,评估该策略到底有多么好
-
本质:用不动点迭代,求算子 的不动点
-
方法:通过贝尔曼期望方程(Bellman Expectation Equation)迭代计算:
-
迭代方式:
-
初始 (或任意值)
-
逐步更新(其中 是 的后继状态)
- Synchronous 备份:每次更新时,对于所有状态 ,使用 更新
- 改进
- In-Place Dynamic Programming
- Prioritised sweeping
- Real-time dynamic programming
- Full-Width Backups
- Sample Backups
-
-
-
策略评估过程中,虽然能够利用当前价值函数和贪婪原则得到好的策略,但是策略评估的策略始终是初始被评估策略,不会更新
-
即更好的策略并不会对价值函数的迭代造成反馈,所以称为策略评估
策略迭代
-
在 “评估当前策略” 和 “改进当前策略” 之间来回摆动
-
本质:在 “策略诱导的 Bellman 算子” 序列中,不断切换算子,逼近最优算子 的不动点
-
策略改进(Policy Improvement)
-
目标:基于当前策略的价值函数 ,改进策略
-
实际上,不必等到价值函数收敛,即可得到最优策略
-
方法:利用贪婪原则(Greedy Principle)更新策略:
-
-
策略迭代(Policy Iteration)
-
目标:反复进行 “策略评估” 和 “策略改进”,直至收敛到最优策略
-
过程:
-
初始随机策略
-
策略评估:计算 ,即
-
策略改进:得到新策略 ,即
-
重复,直至策略不再变化(即使价值函数未完全收敛,只要策略稳定就可停止)
-
-
与简单的策略评估不同,策略迭代会在更新后的新策略上进行策略评估
-
最终达到最优策略
-
策略评估得到价值函数不一定需要收敛,可以提前停止吗
- 迭代 K 步
- 策略迭代通常需要更少次的外循环,但每次策略评估本身可能较耗时
- 价值迭代
-
价值迭代
-
把「评估 + 改进」压缩成一步
-
本质:直接对最优 Bellman 算子做不动点迭代
-
价值迭代(Value Iteration)
-
目标:直接通过更新价值函数来找到最优值函数 ,进而推导出最优策略
-
方法:基于贝尔曼最优方程(Bellman Optimality Equation)迭代:
-
终止条件:当 与 的变化小于阈值 时停止
-
与策略迭代不同,没有显式策略
-
中间价值函数可能并没有对应的策略;而策略迭代中价值函数是根据特定策略计算得到的
-
| 问题类型 | 贝尔曼方程 | 算法 | 功能 | 算法复杂度 |
|---|---|---|---|---|
| 预测问题 | 贝尔曼期望方程 | 策略评估 | 计算给定策略的状态价值函数 | 每次迭代 ,其中 是状态数, 是动作数 |
| 控制问题(期望) | 贝尔曼期望方程 | 策略迭代 | 求解最优策略 和 | 每次策略评估 ,策略改进 |
| 控制问题(最优) | 贝尔曼最优方程 | 价值迭代 | 求解最优策略 和 | 每次迭代 ,基于动作值函数时,每次迭代 |