目录
前言
学习赵老师讲授的强化学习的数学原理视频,本篇文章记录第三讲 Part 2:贝尔曼最优公式(最优策略和公式推导),记录个人学习笔记,和大家一起分享交流😄
1. Optimal policy
下面我们来介绍 optimal policy 正式的定义。
在上节课我们介绍 state value 的时候,其实反复强调了 state value 之所以重要是因为,它能够来 衡量一个策略究竟好还是不好,那么下面我们来正式地定义这种说法。

v π 1 ( s ) ≥ v π 2 ( s ) for all s ∈ S v_{\pi_1}(s) \geq v_{\pi_2}(s) \quad \text{for all } s \in \mathcal{S} vπ1(s)≥vπ2(s)for all s∈S
如果我有两个策略,一个是 π 1 \pi_1 π1 一个是 π 2 \pi_2 π2 ,它们在每一个状态都有自己的 state value ,如果对于所有的状态 s s s , π 1 \pi_1 π1 得到的 state value 都大于等于 π 2 \pi_2 π2 得到的 state value ,我们就说 π 1 \pi_1 π1 是比 π 2 \pi_2 π2 要好的。
进一步我们就可以来定义最优,什么是最优呢?
如果有一个策略 π ∗ \pi^* π∗ ,它对任意的一个状态 s s s ,然后相比任意的其它的一个策略 π \pi π ,它所得到的 state value 都要大,我们就说 这个 π ∗ \pi^* π∗ 是最优的,即:
v π ∗ ( s ) ≥ v π ( s ) for all s ∈ S v_{\pi^*}(s) \geq v_{\pi}(s) \quad \text{for all } s \in \mathcal{S} vπ∗(s)≥vπ(s)for all s∈S
这个定义其实并不复杂,但是比较麻烦的是在这个定义出来之后,我们要回答一系列的问题:

比如说这个 最优的策略是否存在? 因为看上去这个最优的策略是非常理想的,它比其它所有的策略都要好,并且在所有的状态上都能打败其它的策略,会不会存在这样的情况:一个策略只在某些状态上优于其它策略,却在另一些状态上被其它策略打败---也就是说,根本不存在一个在所有状态上都占优的策略?这是我们要回答的第一个问题。
第二个问题:最优策略是否唯一?是否存在多个策略都达到最优?第三个问题:最优策略是随机的(stochastic )还是确定性的(deterministic )?我们有时会希望它是确定性的---在每个状态明确告诉 agent 该采取什么动作。最后一个问题:最优策略我怎么样去得到?
为了回答这些问题,我们需要研究 贝尔曼最优公式,研究了它,上述所有问题都能得到回答。
2. Bellman optimality equation (BOE)
下面我们正式开始介绍 贝尔曼最优公式。
我们介绍的方法就是首先直接把 贝尔曼最优公式 给出来,之后我们会详细分析它的一些性质。

v ( s ) = ∑ a π ( a ∣ s ) ( ∑ r p ( r ∣ s , a ) r + γ ∑ s ′ p ( s ′ ∣ s , a ) v ( s ′ ) ) , ∀ s ∈ S v(s) = \sum_{a} \textcolor{blue}{\pi(a \mid s)} \left( \sum_{r} p(r \mid s, a) r + \gamma \sum_{s'} p(s' \mid s, a) v(s') \right), \quad \forall s \in \mathcal{S} v(s)=a∑π(a∣s)(r∑p(r∣s,a)r+γs′∑p(s′∣s,a)v(s′)),∀s∈S
大家首先看上面这样一个式子,这个式子其实看着非常眼熟,它就是 贝尔曼公式 ---当策略 π \pi π 给定时。
现在我们做一个小小的改动:在 π \pi π 前面加上 max π \textcolor{blue}{\max \limits_{\pi}} πmax :
v ( s ) = max π ∑ a π ( a ∣ s ) ( ∑ r p ( r ∣ s , a ) r + γ ∑ s ′ p ( s ′ ∣ s , a ) v ( s ′ ) ) , ∀ s ∈ S = max π ∑ a π ( a ∣ s ) q ( s , a ) s ∈ S \begin{align*} v(s) &= \textcolor{blue}{\max_{\pi}} \sum_{a} \textcolor{blue}{\pi(a \mid s)} \left( \sum_{r} p(r \mid s, a) r + \gamma \sum_{s'} p(s' \mid s, a) v(s') \right), \quad \forall s \in \mathcal{S} \\ &= \textcolor{blue}{\max_{\pi}} \sum_{a} \textcolor{blue}{\pi(a \mid s)} q(s, a) \quad s \in \mathcal{S} \end{align*} v(s)=πmaxa∑π(a∣s)(r∑p(r∣s,a)r+γs′∑p(s′∣s,a)v(s′)),∀s∈S=πmaxa∑π(a∣s)q(s,a)s∈S
那这时候实际上这个 π \pi π 就不再是给定的了,因为这里面 嵌套了一个优化问题 ,我需要先解决这个优化问题求解出来这个 π \pi π ,然后再把这个 π \pi π 代到这个式子里边去,这个实际上就是 贝尔曼最优公式。
我相信大家会有很多问题,包括这个 π \pi π 怎么样去求解等等,不用担心,之后我们会详细地介绍,然后公式后边这个括号里比较复杂的这一项,其实我们可以简洁地写成 q ( s , a ) q(s,a) q(s,a) 。
然后这里边我们已知哪些,要求哪些呢?

我们已知的是 p ( r ∣ s , a ) p(r|s,a) p(r∣s,a) 和 p ( s ′ ∣ s , a ) p(s'|s,a) p(s′∣s,a) ,它们构成了系统的模型; γ \gamma γ 也是已知的,要求解的是 state value v v v 。
这里面这个 π \pi π 究竟是已知的还是未知的呢?对于一个 贝尔曼公式 它一定是依赖于一个 给定的 π \pi π ,但对于 贝尔曼最优公式 , π \pi π 是未知的,我们 必须先求解出这个 π \pi π 。
刚才是 elementwise form ,下面这个是 matrix-vector form:

v = max π ( r π + γ P π v ) \textcolor{red}{v=\max_{\pi}(r_{\pi} + \gamma P_{\pi} v)} v=πmax(rπ+γPπv)
其中与 s s s 或 s ′ s' s′ 对应的元素是
r π s ≜ ∑ a π ( a ∣ s ) ∑ r p ( r ∣ s , a ) r , P π s , s ′ = p ( s ′ ∣ s ) ≜ ∑ a π ( a ∣ s ) p ( s ′ ∣ s , a ) \begin{align*} r_{\\pi}{s} &\triangleq \sum{a} \pi(a \mid s) \sum_{r} p(r \mid s, a) r, \\ P_{\\pi}{s, s'} &= p(s' \mid s) \triangleq \sum{a} \pi(a \mid s) p(s' \mid s, a) \end{align*} rπsPπs,s′≜a∑π(a∣s)r∑p(r∣s,a)r,=p(s′∣s)≜a∑π(a∣s)p(s′∣s,a)
Note :课件中 P π s , s ′ P_{\\pi}_{s, s'} Pπs,s′ 的表达式有误,它表示当前处于状态 s s s ,按照策略 π \pi π 选择动作后,下一步转移到 指定状态 s ′ s' s′ 的概率,因此,这里 只需要对 a a a 求和,不需要对 s ′ s' s′ 求和。
至于怎么从 elementwise 到这个 matrix-vector ,具体的过程我们就不再讲解了,之前其实我们在介绍 贝尔曼公式 的时候,这样一个过程讲解还是比较详细的。
这里唯一的一个区别就是前面多了一个这个 max π \max_{\pi} maxπ ,注意矩阵形式中的 max π \max_\pi maxπ 是逐分量取最大值:第 s s s 个分量的最大化只依赖于 π ( ⋅ ∣ s ) \pi(\cdot|s) π(⋅∣s) ,因此每个状态可以独立地求解最优策略,这个就是 贝尔曼最优公式。
贝尔曼最优公式 它既非常 tricky ,也非常 elegant(优美)。

为什么说它优美呢?因为它的形式其实 非常的简洁 ,然后它能刻画 最优的策略以及最优的 state value ,为什么说它 tricky 呢?一方面,它的右边 嵌套了一个优化问题;另一方面,求解和理解其中的问题并不那么直观。
我相信大家现在对 贝尔曼最优公式 有很多疑问,不用着急我们接下来会一个一个介绍。

首先,比如说我们怎么样去求解这个问题,然后这个公式 是否存在解 ,这个解 是否唯一,还有我们为什么要研究这个公式,这个公式和最优的策略、最优的 state value 有什么样的关系等等,这些问题我们后面都会一一地解答。
3. Maximization on the right-hand side of BOE
刚刚我们给出了 贝尔曼最优公式 的表达式,下面呢我们来详细分析一下这个表达式,首先我们要分析的是可能让人迷惑的,出现在右边的那个 求最大化的优化问题。

BOE: elementwise form v ( s ) = max π ∑ a π ( a ∣ s ) ( ∑ r p ( r ∣ s , a ) r + γ ∑ s ′ p ( s ′ ∣ s , a ) v ( s ′ ) ) , ∀ s ∈ S BOE: matrix-vector form v = max π ( r π + γ P π v ) \begin{align*} &\text{BOE: elementwise form} \\ &v(s) = \textcolor{blue}{\max_{\pi}} \sum_{a} \pi(a \mid s) \left( \sum_{r} p(r \mid s, a) r + \gamma \sum_{s'} p(s' \mid s, a) v(s') \right), \quad \forall s \in \mathcal{S} \\ &\text{BOE: matrix-vector form} \quad \textcolor{red}{v= \max_{\pi}(r_{\pi} + \gamma P_{\pi} v)} \end{align*} BOE: elementwise formv(s)=πmaxa∑π(a∣s)(r∑p(r∣s,a)r+γs′∑p(s′∣s,a)v(s′)),∀s∈SBOE: matrix-vector formv=πmax(rπ+γPπv)
大家可以看到无论是 elementwise form 还是 matrix-vector form 的 贝尔曼最优公式 ,在它们的右边都存在这样一个 最大化的优化问题。
对初学者来说可能会感到比较迷惑,在这个式子中, v v v 是未知量;除此之外, π \pi π 也是未知的---对每个状态都要确定最优的 π ( ⋅ ∣ s ) \pi(\cdot|s) π(⋅∣s) 。所以相当于我们 有一个式子,但是我们要求两个未知量,这个怎么样求解呢?
实际上非常简单,我这里举一个例子大家就会明白。
示例(如何从一个方程求解两个未知数)
考虑两个变量 x , a ∈ R x, a \in \mathbb{R} x,a∈R 。假设它们满足如下方程:
x = max a ( 2 x − 1 − a 2 ) x = \max_{a}(2x - 1 - a^2) x=amax(2x−1−a2)
这个方程包含两个未知数。为了求解,我们首先考虑等式右侧。无论 x x x 的值如何, max a ( 2 x − 1 − a 2 ) = 2 x − 1 \max_{a}(2x - 1 - a^2) = 2x - 1 maxa(2x−1−a2)=2x−1 ,其最大值在 a = 0 a = 0 a=0 时取得。接着,当 a = 0 a = 0 a=0 时,方程变为 x = 2 x − 1 x = 2x - 1 x=2x−1 ,由此解得 x = 1 x = 1 x=1 。因此, a = 0 a = 0 a=0 和 x = 1 x = 1 x=1 是该方程的解。
我们这里考虑有两个变量,一个是 x x x ,一个是 a a a ,那它们满足下面这样一个式子:
x = max a ( 2 x − 1 − a 2 ) x = \max_{a}(2x - 1 - a^2) x=amax(2x−1−a2)
这个式子实际上是仿照 贝尔曼最优公式 构造的,它的右边也存在对 a a a 求最优这样一个问题,那这个公式怎么求解呢?
实际上我们可以分成两步,第一步,考察等式右边 max a ( 2 x − 1 − a 2 ) \max_a(2x-1-a^2) maxa(2x−1−a2) 的最优值是什么。其实是非常明显的,因为这里是 a 2 a^2 a2 ,所以它达到最大值的时候就是 a = 0 a=0 a=0 的时候,那此时结果就是 2 x − 1 2x-1 2x−1 ,如果 a ≠ 0 a \neq 0 a=0 的话,那因为 − a 2 - a^2 −a2 一定是负数,所以这个值一定会是更小的,那右边就求解得到了最优值是 2 x − 1 2x-1 2x−1 ,并且 当 a = 0 a=0 a=0 的时候这个最优值可以实现。
第二步是什么呢?第二步就是我把最优解 a = 0 a=0 a=0 代入右边,那右边实际上就变成了 2 x − 1 2x-1 2x−1 ,左边是 x x x ,这个非常容易求解的,我可以求出 x = 1 x=1 x=1 。所以通过这两个步骤,我们就求解出来 a = 0 a=0 a=0 和 x = 1 x=1 x=1 就是这公式的解。
这个思路就可以放到我们求解 贝尔曼最优公式 当中,我们来看一看。

贝尔曼最优公式 右边, p ( r ∣ s , a ) p(r|s,a) p(r∣s,a)、 p ( s ′ ∣ s , a ) p(s'|s,a) p(s′∣s,a)、 r r r、 γ \gamma γ 都是已知的; v ( s ′ ) v(s') v(s′) 是未知项。但之后会看到,我们可以 先给它一个初始值 ---当 v ( s ′ ) v(s') v(s′) 给定时,它也可视为已知。
我们把它缩写成一个 q ( s , a ) q(s,a) q(s,a) , q ( s , a ) q(s,a) q(s,a) 假如说是已知的,所以受到刚才例子的启发,我们要做的就是把 π ( a ∣ s ) \pi(a|s) π(a∣s) 给确定下来,那这里实际上有多个 a a a ,在我们的 grid-world example 当中一共有 5 个 a a a ,分别是 q ( s , a 1 ) , q ( s , a 2 ) q(s,a_1),q(s,a_2) q(s,a1),q(s,a2) 一直到 q ( s , a 5 ) q(s,a_5) q(s,a5) ,我现在有 5 个这样的值,那我怎么样求解这个 π \pi π ?怎么样求解这样一个问题呢?
我们再通过一个例子来看一下:
示例(如何求解 max π ∑ a π ( a ∣ s ) q ( s , a ) \max_\pi \sum_a \pi(a|s)q(s, a) maxπ∑aπ(a∣s)q(s,a))
假设 q 1 , q 2 , q 3 ∈ R q_1, q_2, q_3 \in \mathbb{R} q1,q2,q3∈R 已知。求解 c 1 ∗ , c 2 ∗ , c 3 ∗ c_1^*, c_2^*, c_3^* c1∗,c2∗,c3∗ 满足:
max c 1 , c 2 , c 3 c 1 q 1 + c 2 q 2 + c 3 q 3 . \max_{c_1, c_2, c_3} c_1 q_1 + c_2 q_2 + c_3 q_3. c1,c2,c3maxc1q1+c2q2+c3q3.
其中 c 1 + c 2 + c 3 = 1 c_1 + c_2 + c_3 = 1 c1+c2+c3=1 且 c 1 , c 2 , c 3 ≥ 0 c_1, c_2, c_3 \ge 0 c1,c2,c3≥0 。
不失一般性,假设 q 3 ≥ q 1 , q 2 q_3 \ge q_1, q_2 q3≥q1,q2。那么,最优解为 c 3 ∗ = 1 c_3^* = 1 c3∗=1 且 c 1 ∗ = c 2 ∗ = 0 c_1^* = c_2^* = 0 c1∗=c2∗=0。这是因为对于任意的 c 1 , c 2 , c 3 c_1, c_2, c_3 c1,c2,c3 ,
q 3 = ( c 1 + c 2 + c 3 ) q 3 = c 1 q 3 + c 2 q 3 + c 3 q 3 ≥ c 1 q 1 + c 2 q 2 + c 3 q 3 . q_3 = (c_1 + c_2 + c_3)q_3 = c_1 q_3 + c_2 q_3 + c_3 q_3 \ge c_1 q_1 + c_2 q_2 + c_3 q_3. q3=(c1+c2+c3)q3=c1q3+c2q3+c3q3≥c1q1+c2q2+c3q3.
我们先考虑一个简单的情况,假如说我有 3 个 q q q 值,然后我要解决的问题就是求解 c 1 ∗ , c 2 ∗ , c 3 ∗ c_1^*, c_2^*, c_3^* c1∗,c2∗,c3∗ 这三个系数或者叫权重,使得下面这样一个 objective function 能够达到最大:
max c 1 , c 2 , c 3 c 1 q 1 + c 2 q 2 + c 3 q 3 . \max_{c_1, c_2, c_3} c_1 q_1 + c_2 q_2 + c_3 q_3. c1,c2,c3maxc1q1+c2q2+c3q3.
这个系数或权重应该满足它们的 和等于 1 ,并且它们每一个值都是 大于等于 0 的,为什么要有这样一个约束呢?就是因为这个系数实际上对应的就是上面的 概率 π \pi π ,概率 π \pi π 是满足这样的性质的。
那这个目标函数它的最优值是什么呢?我们首先不妨假设这里边存在一个最大值,其实 q 1 , q 2 , q 3 q_1,q_2,q_3 q1,q2,q3 一定会存在一个最大值,假设它是 q 3 q_3 q3 ,假设最大值是 q 1 q_1 q1 或 q 2 q_2 q2 其实也完全没有问题,如果我们假设它是 q 3 q_3 q3 ,那最优解是什么呢?
最优解就是 c 3 = 1 c_3=1 c3=1 ,然后 c 1 = c 2 = 0 c_1=c_2=0 c1=c2=0,为什么呢?
我们给两个解释。第一个是直观的解释:从直观上来说, c 3 c_3 c3 代表的是 q 3 q_3 q3 的权重,因为 q 3 q_3 q3 是最大的 ,所以我们希望 把所有的权重全部放到 q 3 q_3 q3 上面去 ,那自然 c 3 c_3 c3 应该等于 1,这时候这个总的和是最大的。
从数学上来说其实也容易解释,我们来看这样一个式子:
q 3 = ( c 1 + c 2 + c 3 ) q 3 = c 1 q 3 + c 2 q 3 + c 3 q 3 ≥ c 1 q 1 + c 2 q 2 + c 3 q 3 . q_3 = (c_1 + c_2 + c_3)q_3 = c_1 q_3 + c_2 q_3 + c_3 q_3 \ge c_1 q_1 + c_2 q_2 + c_3 q_3. q3=(c1+c2+c3)q3=c1q3+c2q3+c3q3≥c1q1+c2q2+c3q3.
首先最左边是 q 3 q_3 q3 ,然后它等于 ( c 1 + c 2 + c 3 ) q 3 (c_1 + c_2 + c_3)q_3 (c1+c2+c3)q3 ,因为权重之和等于 1,接着把它展开得到 c 1 q 3 + c 2 q 3 + c 3 q 3 c_1 q_3 + c_2 q_3 + c_3 q_3 c1q3+c2q3+c3q3 ,因为 q 3 q_3 q3 是最大的所以它是大于其它的 q q q ,那它一定是大于等于 c 1 q 1 + c 2 q 2 + c 3 q 3 c_1 q_1 + c_2q_2 + c_3q_3 c1q1+c2q2+c3q3 。
所以我们看,最左边是 q 3 q_3 q3 ,最右边就是我们的目标函数 c 1 q 1 + c 2 q 2 + c 3 q 3 c_1q_1+c_2q_2+c_3q_3 c1q1+c2q2+c3q3 。这个不等式实际上说明了:无论 c 1 , c 2 , c 3 c_1,c_2,c_3 c1,c2,c3 取什么样的值,只要满足非负并且和为 1,这个目标函数的值都不会超过 q 3 q_3 q3 。
也就是说, q 3 q_3 q3 就是这个目标函数能够达到的一个上界。而当我们取 c 3 = 1 , c 1 = c 2 = 0 c_3=1,c_1=c_2=0 c3=1,c1=c2=0 时,目标函数的值恰好就等于 q 3 q_3 q3 ,说明这个上界是可以真正取到的。因此,我们就知道了这个优化问题的最大值就是 q 3 q_3 q3 ,对应的一个 最优解就是 c 3 = 1 , c 1 = c 2 = 0 c_3=1,c_1=c_2=0 c3=1,c1=c2=0。
这样一个思路我们也可以用到求解 贝尔曼最优公式 当中。通过上面那个例子我们就知道了,如果右边 q q q 值确定的话怎么样来求解最优的 π \pi π 。

先固定 v ( s ′ ) v(s') v(s′) ,并求解 π \pi π :
v ( s ) = max π ∑ a π ( a ∣ s ) ( ∑ r p ( r ∣ s , a ) r + γ ∑ s ′ p ( s ′ ∣ s , a ) v ( s ′ ) ) , ∀ s ∈ S = max π ∑ a π ( a ∣ s ) q ( s , a ) \begin{align*} v(s) &= \textcolor{blue}{\max_{\pi}} \sum_{a} \textcolor{blue}{\pi(a \mid s)} \left( \sum_{r} p(r \mid s, a) r + \gamma \sum_{s'} p(s' \mid s, a) v(s') \right), \quad \forall s \in \mathcal{S} \\ &= \textcolor{blue}{\max_{\pi}} \sum_{a} \textcolor{blue}{\pi(a \mid s)} q(s, a) \end{align*} v(s)=πmaxa∑π(a∣s)(r∑p(r∣s,a)r+γs′∑p(s′∣s,a)v(s′)),∀s∈S=πmaxa∑π(a∣s)q(s,a)
受上述示例启发,考虑到 ∑ a π ( a ∣ s ) = 1 \sum_a \pi(a|s) = 1 ∑aπ(a∣s)=1 ,我们有:
max π ∑ a π ( a ∣ s ) q ( s , a ) = max a ∈ A ( s ) q ( s , a ) , \max_{\pi} \sum_{a} \pi(a|s)q(s,a) = \max_{a \in \mathcal{A}(s)} q(s,a), πmaxa∑π(a∣s)q(s,a)=a∈A(s)maxq(s,a),
其中最优性在满足以下条件时达到:
π ( a ∣ s ) = { 1 a = a ∗ 0 a ≠ a ∗ \pi(a|s) = \begin{cases} 1 & a = a^* \\ 0 & a \neq a^* \end{cases} π(a∣s)={10a=a∗a=a∗
其中 a ∗ = arg max a q ( s , a ) a^* = \arg\max_a q(s,a) a∗=argmaxaq(s,a) 。
最后的结果就是 右边这个优化问题的最优值,实际上就等于 q ( s , a ) q(s,a) q(s,a) 中最大的那个值 。要达到这个最大值,策略 π \pi π 应该把全部概率都分配给使 q ( s , a ) q(s,a) q(s,a) 最大的那个动作,也就是说,当 a = a ∗ a = a^* a=a∗ 时取 1,当 a ≠ a ∗ a \neq a^* a=a∗ 时取 0。其中, a ∗ a^* a∗ 就是能够使 q ( s , a ) q(s,a) q(s,a) 取得最大值的那个 action。
通过上面的介绍我们就比较清晰地展示了,嵌套在 贝尔曼最优公式 中的、可能让人感到迷惑的右边最优项,应该如何处理。
结语
本讲第二部分正式给出了 optimal policy 的定义:若策略 π ∗ \pi^* π∗ 在所有状态上的 state value 都不小于任意其它策略,则 π ∗ \pi^* π∗ 是最优策略。然而,这个定义引发了一系列深刻的问题---最优策略是否存在?是否唯一?是确定性的还是随机的?如何求得?回答这些问题正是贝尔曼最优公式(BOE)的使命。
贝尔曼最优公式在贝尔曼公式的基础上,将给定的策略 π \pi π 替换为待优化的变量,即在公式右边嵌套了一个对 π \pi π 的最大化问题。通过两个精心设计的示例,我们掌握了求解这类 "一个方程、两个未知量" 问题的两步法:先固定 v v v 求解最优的 π \pi π ,再代回求解 v v v 。
关键的数学结论是---由于 ∑ a π ( a ∣ s ) = 1 \sum_a \pi(a|s) = 1 ∑aπ(a∣s)=1 且 π ( a ∣ s ) ≥ 0 \pi(a|s) \geq 0 π(a∣s)≥0 ,加权和 ∑ a π ( a ∣ s ) q ( s , a ) \sum_a \pi(a|s) q(s,a) ∑aπ(a∣s)q(s,a) 的最大值就等于最大的 q ( s , a ) q(s,a) q(s,a) ,且最优策略将所有概率集中在 arg max a q ( s , a ) \argmax_a q(s,a) argmaxaq(s,a) 对应的动作上,当最大 action value 唯一时,最优策略是贪婪且确定性的,若存在平局,概率可在这些并列最优的动作之间任意分配。这一重要性质将在后续分析贝尔曼最优公式的解时反复发挥作用🤗。