[UCAS强化学习]3·动态规划
1 动态规划简介
算法课上我们都学过,动态规划解决的问题具有两个性质:
- 最优子结构 (optimal substructure):问题最优解包含子问题的解也是子问题的最优解
- 重叠子问题 (overlapping subproblems):使用递归算法自顶向下对问题进行求解, 每次产生的子问题并不总是新问题
马尔可夫决策过程满足这两个性质:
- 贝尔曼方程具有递归形式
- 价值函数可以保存和重复利用
因而可以用动态规划解决。事实上,用动态规划的术语来说,价值函数就是 DP 状态,贝尔曼方程就是 DP 转移方程。
2 迭代策略评估
所谓策略评估,即给定策略
回顾:迭代法解线性方程组
基本思想:将
定理:迭代法收敛当且仅当
2.1 迭代策略评估
注意到贝尔曼期望方程正好就是写作了迭代形式的线性方程,因此自然而然地可以建立起迭代格式:
2.2 收敛性证明
以下涉及泛函分析的知识。
设所有价值函数的集合为
它将
可以证明,当
2.3 例子:Small Gridworld
- 本例中使用无衰减的 MDP(
) - 标号的 14 个格子是非终止状态,阴影格子即终止状态
- 往边界外走定义为保持当前状态不变(相当于被墙弹回来了)
- 每走一步的奖励是
- 智能体遵循随机策略(四个方向概率
)
迭代策略评估的过程如下图所示:左列是迭代的
需要注意的是,右边列出的贪心策略仅作为参考,实际迭代过程没有用到贪心策略——因为迭代策略评估的目的是评价一个给定策略。
从这个例子中可以看见,当价值函数收敛时,贪心策略也收敛到了最优策略,但是后者比前者收敛得更快——在
3 策略迭代
迭代策略评估可以评估给定策略
3.1 策略评估 & 策略提升
给定初始策略
- 策略评估:评估当前策略下的价值函数
- 策略提升:根据贪心思想更新策略
上述过程最终会收敛到最优策略
3.2 收敛性证明
以确定性策略为例,假设当前策略为
最终,当策略不再变化时,有:
3.3 策略迭代的扩展
- 在 2.3 节中,我们看到策略的收敛速度快于价值函数的收敛,因此我们可以提前终止迭代过程。例如引入阈值
,或者简单地在 步之后停止迭代。 - 上文我们用迭代策略评估来评价一个策略,用贪心思想来更新策略。事实上,我们不必局限于这两个算法,使用任何一个策略评价方式和任何一个能够得到更优策略的更新方式都行。
4 价值迭代
4.1 价值迭代
回顾贝尔曼最优方程:
于是基于贝尔曼最优方程,可以做如下的迭代更新:
4.2 收敛性证明
沿用 2.2 节中的记号,定义价值迭代算子
可以证明,当
4.3 例子:最短路
从这个例子我们可以看出,价值迭代的过程没有一个显式的策略,甚至迭代过程中的价值函数可能根本无法对应到某种策略上。但最终,它会收敛到最优价值函数。
学习到这里,我们做一个小结:
- 迭代策略评估通过迭代法解贝尔曼期望方程,求解给定策略下的价值函数
- 策略迭代通过策略评估和策略提升两个步骤的交替进行,求解最优策略
- 价值迭代通过迭代法解贝尔曼最优方程,求解最优策略
5 维度灾难
计算一下时间复杂度:
- 迭代策略评估:每次迭代
- 策略迭代:
- 使用迭代策略评估:每次迭代
- 使用矩阵求逆:每次迭代
- 使用迭代策略评估:每次迭代
- 价值迭代:每次迭代
可见三个算法的复杂度都很高,对于大规模问题而言效率低下。在接下来的课程中,我们将介绍蒙特卡洛和时间差分方法,相比动态规划方法,它们并不考虑所有的后继动作和状态,从而降低了复杂度。