2 基于动态规划的强化学习算法
针对白箱环境,可以使用基于动态规划的强化学习算法。主要有两种:策略迭代(policy iteration)与价值迭代(value iteration)。价值迭代是策略迭代的优化版本。
这两种方法有以下局限:
- 需要事先知道环境的状态转移函数 \(\mathcal{P}\) 和奖励函数 \(\mathcal{R}\) ,即整个马尔可夫决策过程(白盒环境,不需要智能体与环境多次交互学习,直接动态规划得最优策略);
- 只适用于有限马尔可夫决策过程,即状态空间和动作空间是离散且有限的。
1 策略迭代
强化学习的终极目的是获得一个最佳策略。
“策略迭代”的意思是从一个策略开始不断优化,直至最佳策略。策略迭代由策略评估(policy evaluation)和策略提升(policy improvement)两部分组成。
- “策略评估”:判断当前策略有多好;
- “策略提升”:优化当前策略。
1.1 策略评估
1.1a 核心思路与公式
已知贝尔曼期望方程
\[V^{\pi}(s) = \sum_{a\in A}\pi(a|s)\left(r(s,a)+\gamma\sum_{s'\in S}P\left(s'|s,a\right)V^{\pi}\left(s'\right)\right) \tag{1-1}\]
该方程描述了从状态 s 出发遵循策略 \(\pi\) 能获得的期望回报。我们利用期望回报来判断一个策略有多好。
问题是,在已知一个策略 a 的情况下,怎么获知一个策略在不同状态 s 下的期望回报?
答案如下:
\[
V^{k+1}(s) = \sum_{a\in A}\pi(a|s)\left(r(s,a)+\gamma\sum_{s'\in S}P\left(s'|s,a\right)V^{k}\left(s'\right)\right) \tag{1-2}
\]
我们任意选定不同状态的期望回报初始值 \(V^0\) ,不断迭代,当 \(k\to\infty\) 后,可以使序列 \(\left\{V^{k}\right\}\) 收敛到当前策略的状态价值函数 \(V^{\pi}\) 。
1.1b 收敛性证明
我们用 # 算符表示式 (1-2) 所示的迭代过程,即
\[V^{k+1}(s) = \#\left\{V^{k}(s)\right\} \tag{1-3}\]
我们要证明序列 \(\left\{V^k\right\}\) 收敛到 \(V^\pi\) ,就是要证明 \(V^{k}\) 迭代成 \(V^{k+1}=\#\left\{V^{k}\right\}\) 之后,与 \(V^{\pi}\) 的差距变小了,即
\[\left|\#\left\{V\right\} - V^{\pi}\right| \le \left|V-V^{\pi}\right| \tag{1-4}\]
一方面,我们注意到式 (1-4) 是和状态 s 相关的。但是,上式是否需要在所有状态 s 下都成立呢?
此处 s 是离散、有限的,因此我们实际上可以遍历所有 s 。
其实不然,可以放宽条件,只要求 \(\max_{s} \left|\#\left\{V\right\} - V^{\pi}\right| \le \max_{s} \left|V-V^{\pi}\right|\) 。这个结论比较显然,参照以下示意图:

另一方面,注意到 \(V^\pi\) 是迭代的不动点,满足 \(V^{\pi} = \#\left\{V^{\pi}\right\}\) 。综合以上两方面,要证明的条件——式 (1-4)——可改成
\[\max_{s}\left|\#\{V\}-\#\{V^{\pi}\}\right| \le \max_{s}\left|V - V^{\pi}\right| \tag{1-5}\]
我们来尝试证明式 (1-5):
\[\begin{aligned}
&\max_{s}\left|\#\{V\}-\#\{V^{\pi}\}\right|\\
=& \max_{s}\left|\sum_{a\in\mathcal{A}}\pi(a|s)\left(r(s,a)+\gamma\sum_{s'\in\mathcal{S}}P(s'|s,a)V(s')\right) - \sum_{a\in\mathcal{A}}\pi(a|s)\left(r(s,a)+\gamma\sum_{s'\in\mathcal{S}}P(s'|s,a)V^{\pi}(s')\right)\right|\\
=& \max_{s}\left|\sum_{a\in\mathcal{A}}\pi(a|s)\left[\gamma\sum_{s'\in\mathcal{S}}P(s'|s,a)\left(V(s')-V^{\pi}(s')\right)\right]\right|\\
=& \gamma\max_{s}\left|\sum_{a\in\mathcal{A}}\pi(a|s)\sum_{s'\in\mathcal{S}}P(s'|s,a)\left[V(s')-V^{\pi}(s')\right]\right|\\
\le&\gamma\max_{s}\left|\sum_{a\in\mathcal{A}}\pi(a|s)\left[\sum_{s'\in\mathcal{S}}P(s'|s,a)\max_{s'}\left|V(s')-V^{\pi}(s')\right|\right]\right|\\
\end{aligned}\]
这里的 \(\max_{s'}\left|V(s')-V^{\pi}(s')\right|\) 是个常数项,可以提出来,即
\[\begin{aligned}
&\max_{s}\left|\#\{V\}-\#\{V^{\pi}\}\right|\\
\le&\gamma\max_{s}\left|\sum_{a\in\mathcal{A}}\pi(a|s)\left[\sum_{s'\in\mathcal{S}}P(s'|s,a)\max_{s'}\left|V(s')-V^{\pi}(s')\right|\right]\right|\\
=&\gamma\max_{s'}\left|V(s')-V^{\pi}(s')\right|\max_{s}\left|\sum_{a\in\mathcal{A}}\pi(a|s)\sum_{s'\in\mathcal{S}}P(s'|s,a)\right|\\
=&\gamma\max_{s'}\left|V(s')-V^{\pi}(s')\right|\max_{s}\left|\sum_{a\in\mathcal{A}}\pi(a|s)\right|\\
=&\gamma\max_{s'}\left|V(s')-V^{\pi}(s')\right|\\
\le& \max_{s'}\left|V(s')-V^{\pi}(s')\right|
\end{aligned}\]
证毕。
1.2 策略提升
知道了当前策略的状态价值函数 \(V^\pi\) 之后,我们要想办法获得一个更好的策略。
如果我们在状态 s 下不采取动作 \(\pi(s)\) ,而采取另一个动作 a ,之后的所有动作仍然遵循策略 \(\pi\) ,此时的动作价值函数为 \(Q^\pi(s,a)\) 。如果 \(Q^\pi(s,a) > V^\pi(s)\) ,这就说明状态 s 下采取动作 a 是更好的。
策略提升定理
假设存在一个确定性策略 \(\pi'\) ,若和当前策略 \(\pi\) 相比,在任意一个状态 s 下,都满足动作价值函数 \(Q^{\pi}\left(s,\pi'(s)\right) \ge V^{\pi}(s)\) ,则在任意状态 \(s\) 下都有 \(V^{\pi'}(s) \ge V^{\pi}(s)\) 。
根据此定理,我们贪心地更新策略 \(\pi\) 为 \(\pi'\) (对每个状态,都尝试选一个最好的动作使期望回报最大):
\[
\pi'(s) = \arg\max_{a}Q^{\pi}(s,a)
\]
\(\pi'(s)\) 就是一个确定性的策略了,不存在概率分布。
怎么知道什么动作的期望回报最大呢?这就要利用策略评估得到的状态价值函数了:
\[\begin{aligned}
\pi'(s) &= \arg\max_{a}Q^{\pi}(s,a)\\
&= \arg\max_{a}\left\{r(s,a)+\gamma\sum_{s'\in \mathcal{S}}P\left(s'|s,a\right)V^{\pi}\left(s'\right)\right\}
\end{aligned}\]
整个策略迭代算法的流程为:首先初始化策略 \(\pi(s)\) 和价值函数 \(V(s)\) ,然后反复进行策略评估和策略提升,直到策略足够好。
收敛性证明: 每次迭代后的 \(\pi_{k+1}\) 都优于 \(\pi_{k}\) ,因此只要总策略数是有限的,就能迭代出一个最优策略。
2 价值迭代
2.1 核心思路与公式
策略迭代需要多轮“评估—提升”收敛,计算量大。
我们反思一下。策略迭代中,针对待优化策略,我们需要大量计算获得其策略价值函数 \(V^{\pi}\) ,再进行策略提升。策略评估过程浪费了计算量。
Example
当策略价值函数 \(V^{k}\) 收敛到一定程度时,无论如何继续收敛,策略提升得到的更优策略都是同一个策略。此时,继续进行策略评估就是在浪费计算量。
价值迭代基于贝尔曼最优方程,优化策略迭代过程。贝尔曼最优方程为:
\[V^{*}(s) = \max_{a\in\mathcal{A}}\left\{r(s,a)+\gamma\sum_{s'\in\mathcal{S}}P\left(s'|s,a\right)V^{*}\left(s'\right)\right\}\]
价值迭代方程为:
\[V^{k+1}(s) = \max_{a\in\mathcal{A}}\left\{r(s,a)+\gamma\sum_{s'\in\mathcal{S}}P\left(s'|s,a\right)V^{k}\left(s'\right)\right\}\]
收敛完成后,如下恢复出最优策略:
\[
\pi(s) = \arg\max_a\left\{r(s,a)+\gamma\sum_{s'}P\left(s'|s,a\right)V^{k+1}\left(s'\right)\right\}
\]
2.2 收敛性证明
思路和策略评估的收敛性证明一致。若设
\[\begin{aligned}
V^{k+1}(s) &= \max_{a\in\mathcal{A}}\left\{r(s,a)+\gamma\sum_{s'\in\mathcal{S}}P\left(s'|s,a\right)V^{k}\left(s'\right)\right\}\\
&= \S\left\{ V^{k}(s) \right\}
\end{aligned}\]
易知 \(V^{*}(s)\) 是一个不动点。我们要证明
\[\max_{s}\left|\S(V)-\S(V^{*})\right| \le \max_{s}\left|V-V^{*}\right|\]
证明过程如下:
\[\begin{aligned}
&\max_{s}\left|\S(V)-\S(V^{*})\right|\\
=&\max_{s}\left|\max_{a\in\mathcal{A}}\left\{r(s,a)+\gamma\sum_{s'\in\mathcal{S}}P\left(s'|s,a\right)V\left(s'\right)\right\} - \max_{a'\in\mathcal{A}}\left\{r(s,a')+\gamma\sum_{s'\in\mathcal{S}}P\left(s'|s,a'\right)V^{*}\left(s'\right)\right\}\right|\\
\le&\max_{s,a}\left|r(s,a)+\gamma\sum_{s'\in\mathcal{S}}P\left(s'|s,a\right)V\left(s'\right)-r(s,a)+\gamma\sum_{s'\in\mathcal{S}}P\left(s'|s,a\right)V^{*}\left(s'\right)\right|\\
=& \gamma\max_{s,a}\left|\sum_{s'\in\mathcal{S}}P(s'|s,a)\left[V(s')-V^{*}(s')\right]\right|
\end{aligned}\]
Note
上面这个不等号本质上是
\[\max_{a_1\in\mathcal{A}}f_1(a_1) - \max_{a_2\in\mathcal{A}}f_2(a_2) \le \max_{a\in\mathcal{A}}\left[f_1(a)-f_2(a)\right]\]
这个式子没有那么显然,可以如下证明:
设 \(a_1 = \arg\max_{a\in\mathcal{A}}f_1(a)\) 以及 \(a_2 = \arg\max_{a\in\mathcal{A}}f_2(a)\) 。
首先,若 \(a_1 = a_2\) ,则等式左边为 \(f_1(a)-f_2(a)\) ,必然小于等于等式右边取 \(\max\) 后的结果。
其次,若 \(a_1 \neq a_2\) ,即 \(f_2(a_2) > f_2(a_1)\) ,则有 \(\max_{a\in\mathcal{A}}\left[f_1(a)-f_2(a)\right] \ge f_1(a_1) - f_2(a_1) > f_1(a_1)-f_2(a_2)\) 。
综合以上两种情况,上式得证。
继续证明:
\[\begin{aligned}
&\max_{s}\left|\S(V)-\S(V^{*})\right|\\
\le& \gamma\max_{s,a}\left|\sum_{s'\in\mathcal{S}}P(s'|s,a)\left[V(s')-V^{*}(s')\right]\right|\\
\le& \gamma\max_{s,a}\left|\sum_{s'\in\mathcal{S}}P(s'|s,a)\max_{s'}\left|V(s')-V^{*}(s')\right|\right|\\
=&\gamma\max_{s'}\left|V(s')-V^{*}(s')\right|\max_{s,a}\left|\sum_{s'\in\mathcal{S}}P(s'|s,a)\right|\\
=&\gamma\max_{s'}\left|V(s')-V^{*}(s')\right|\\
\le&\max_{s'}\left|V(s')-V^{*}(s')\right|
\end{aligned}\]
证毕。