马尔可夫决策过程
0. 前言
在马尔可夫决策过程中,它的环境是全部可以观测的(fully observable)
。但是很多时候环境里面有些量是不可观测的,但是这个部分观测的问题也可以转换成一个 MDP 的问题。
在介绍马尔可夫决策过程(Markov Decision Process,MDP)之前,先给大家梳理一下马尔可夫过程(Markov Process,MP)、马尔可夫奖励过程(Markov Reward Processes,MRP)。这两个过程是马尔可夫决策过程的基础。
1. 马尔可夫过程(Markov Process,MP)
- 如果一个状态转移是符合马尔可夫的,那就是说一个状态的下一个状态只取决于它当前状态,而跟它当前状态之前的状态都没有关系。
我们可以用状态转移矩阵(State Transition Matrix) P 来描述状态转移 p ( s t + 1 = s ′ ∣ s t = s ) p\left(s_{t+1}=s^{\prime} \mid s_{t}=s\right) p(st+1=s′∣st=s),如下式所示。
2. 马尔可夫奖励过程(Markov Reward Process,MRP)
马尔可夫奖励过程(Markov Reward Process, MRP)
是马尔可夫链再加上了一个奖励函数。
-
Horizon
是指一个回合的长度(每个回合最大的时间步数),它是由有限个步数决定的。 -
Return(回报)
说的是把奖励进行折扣后所获得的收益。Return 可以定义为奖励的逐步叠加,如下式所示:
其中:
- R t + 1 R_{t+1} Rt+1代表从状态 s t s_t st转移到 s t + 1 s_{t+1} st+1得到的奖励
-
G
t
G_t
Gt代表在状态
s
t
s_t
st下能获得的折扣回报
这里有一个叠加系数,越往后得到的奖励,折扣得越多。这说明我们其实更希望得到现有的奖励,未来的奖励就要把它打折扣。
- 当我们有了 return 过后,就可以定义一个状态的价值了,就是
state value function
。对于 MRP,state value function 被定义成是 return 的期望,如下式所示:
G t G_t Gt是之前定义的discounted return
,我们这里取了一个期望,期望就是说从这个状态开始,你有可能获得多大的价值。discount factor 可以作为强化学习 agent 的一个超参数来进行调整,然后就会得到不同行为的 agent。
2.1 迭代法计算状态价值函数 V V V
在使用迭代法之前,需要从价值函数里面推导出 Bellman Equation(贝尔曼等式)
,如下所示
想要推导贝尔曼等式,在此之前需要得到Law of Total Expectation(全期望公式)
,即:
其中:
- V ( s t + 1 ) V(s_{t+1}) V(st+1)代表在状态 s t + 1 s_{t+1} st+1下的状态价值函数
- G t + 1 G_{t+1} Gt+1代表在状态 s t + 1 s_{t+1} st+1下的折扣回报(discounted return)。从 s t + 1 s_{t+1} st+1转移到 s t + 2 s_{t+2} st+2的奖励 R t + 2 R_{t+2} Rt+2开始算起,后面乘以折扣因子再相加。
证明过程:
因此全期望公式说的是,在状态
s
t
s_{t}
st下,下一状态
s
t
+
1
s_{t+1}
st+1的状态价值函数
V
(
s
t
+
1
)
V(s_{t+1})
V(st+1)(它本身就是一个期望)的期望,等于,在状态
s
t
s_{t}
st下,下一状态
s
t
+
1
s_{t+1}
st+1的折扣回报
G
t
+
1
G_{t+1}
Gt+1(它不是一个期望)的期望。(推导过程省略)
如何理解全期望公式?
表面上看,好像
G
t
+
1
G_{t+1}
Gt+1比
V
(
s
t
+
1
)
V(s_{t+1})
V(st+1)计算更简洁,计算得到了优化,实际上,在计算
E
[
G
t
+
1
∣
s
t
]
\mathrm{E}\left[\mathrm{G}_{\mathrm{t}+1} \mid \mathrm{s}_{\mathrm{t}}\right]
E[Gt+1∣st]的时候仍然要考虑状态
s
t
s_{t}
st转移到状态
s
t
+
1
s_{t+1}
st+1的概率和状态
s
t
+
1
s_{t+1}
st+1转移到状态
s
t
+
2
s_{t+2}
st+2的概率,因为
G
t
+
1
G_{t+1}
Gt+1并不是状态
s
t
+
1
s_{t+1}
st+1一个确定的折扣奖励,而是一个随机变量。全期望公式只是形式上得到了简化,但是实际在计算的时候,还是没有得到简化。
接下来,就可以得到贝尔曼等式了。
贝尔曼等式:
定义了当前状态价值函数与未来状态价值函数的关系
其中:
- s’可以看成未来的所有状态。
- 转移 P(s’|s)是指从当前状态转移到未来状态的概率。
- V(s’)代表的是未来某一个状态的价值。我们从当前这个位置开始,有一定的概率去到未来的所有状态,所以我们要把这个概率也写上去,这个转移矩阵也写上去,然后我们就得到了未来状态,然后再乘以一个 γ,这样就可以把未来的奖励打折扣。
- 第二部分可以看成是未来奖励的折扣总和(Discounted sum of future reward)。
推导过程如下:
基于贝尔曼等式,可以写出所有状态的状态价值函数
V
(
s
i
)
V(s_i)
V(si)之间的关系:
修改为矩阵形式:
因此,只要知道每个状态的即时奖励
R
R
R与状态间的转移矩阵
P
P
P,那么就可以求出每个状态的状态价值函数
V
V
V。但是迭代法需要对矩阵求逆,对于大型矩阵的求逆会非常耗时,所以这种方法只适用于状态数较少的情况。
2.2 蒙特卡罗法计算状态价值函数 V V V
根据状态价值函数
V
V
V的定义,一个状态的
V
V
V是当前状态的折扣奖励期望,因此蒙特卡罗法就从当前状态出发,生成很多轨迹,然后计算这些轨迹的折扣奖励,将这些奖励加和后取平均,只要选取的轨迹足够多,那么就可以认为这就是
V
V
V的值。
2.3 动态规划法计算状态价值函数 V V V
我们也可以用这个动态规划的办法,一直去迭代它的 Bellman equation,让它最后收敛,就得到了状态价值函数 V V V。
2.4 时序差分学习法计算状态价值函数 V V V
时序差分学习(Temporal-Difference Learning)的办法。 Temporal-Difference Learning 叫 TD Leanring,它是动态规划和蒙特卡罗的一个结合。
3. 马尔可夫决策过程(Markov Decision Process,MDP)
相对于 MRP,马尔可夫决策过程(Markov Decision Process)
多了一个 decision
,其它的定义跟 MRP 都是类似的:
- 这里多了一个决策,多了一个动作。
- 状态转移也多了一个条件,变成了 P ( s t + 1 = s ′ ∣ s t = s , a t = a ) P\left(s_{t+1}=s^{\prime} \mid s_{t}=s, a_{t}=a\right) P(st+1=s′∣st=s,at=a)。未来的状态不仅是依赖于你当前的状态 s s s,也依赖于在当前状态 agent 采取的这个动作 a a a。
- 对于这个价值函数,它也是多了一个条件,多了一个你当前的动作,变成了 R ( s t = s , a t = a ) = E [ r t ∣ s t = s , a t = a ] R\left(s_{t}=s, a_{t}=a\right)=\mathbb{E}\left[r_{t} \mid s_{t}=s, a_{t}=a\right] R(st=s,at=a)=E[rt∣st=s,at=a]。你当前的状态以及你采取的动作会决定你在当前可能得到的奖励多少。
3.1 MDP中的策略policy
- Policy 定义了在某一个状态应该采取什么样的动作。
- 知道当前状态过后,我们可以把当前状态带入 policy function,然后就会得到一个概率,即:
π ( a ∣ s ) = P ( a t = a ∣ s t = s ) \pi(a \mid s)=P\left(a_{t}=a \mid s_{t}=s\right) π(a∣s)=P(at=a∣st=s)
假设这个概率函数应该是稳定的(stationary) - 另外这个策略也可能是确定的,它有可能是直接输出一个值,告诉你当前应该采取什么样的动作,而不是一个动作的概率。
加了策略policy
π
\pi
π的MDP和没加策略的MRP是有关系的,即:只要对所有动作得到的奖励进行加权平均,如下所示:
3.2 MDP和MRP之间的区别
下图中左边是MP过程(或者是MRP过程,加了一个奖励而已),右边是MDP过程
3.3 MDP的价值函数
-
仿照MRP中的状态价值函数的定义,可以类似地定义MDP中的价值函数:
我们通过对policy 进行采样来得到一个期望,那么就可以计算出它的价值函数。 -
这里我们另外引入了一个
Q 函数(Q-function)
。Q 函数
也被称为action-value function
。Q 函数定义的是在某一个状态采取某一个动作,它有可能得到的这个 return 的一个期望。
对 Q 函数 q π ( s , a ) \rm q^{\pi}(s,a) qπ(s,a)中的动作进行加和,就可以得到价值函数 v π ( s ) \rm v^{\pi}(s) vπ(s),即:
-
Q 函数的 Bellman equation:
3.4 贝尔曼期望等式(Bellman Expectation Equation)
我们可以把状态-价值函数和 Q 函数拆解成两个部分:即时奖励(immediate reward)
和后续状态的折扣价值(discounted value of successor state)
。
比如,对于状态价值函数
v
π
(
s
)
\rm v^{\pi}(s)
vπ(s),有:
比如,对于Q函数
q
π
(
s
,
a
)
\rm q^{\pi}(s,a)
qπ(s,a),有:
上面两个就是Bellman Expectation Equation
的第一种形式。
当然,根据前述的
v
π
(
s
)
\rm v^{\pi}(s)
vπ(s)与
q
π
(
s
,
a
)
\rm q^{\pi}(s,a)
qπ(s,a)的实际含义,可以得到两者的数学关系:
或:
两式相互代入,可以得到Bellman Expectation Equation
的第二种形式:
3.5 备份图(backup diagram)
如下所示的为状态价值函数
v
π
(
s
)
\rm v^{\pi}(s)
vπ(s)备份图,图中的
r
\rm r
r是
γ
\gamma
γ。
- 这些操作将价值信息从一个状态(或状态-动作对)的后继状态(或状态-动作对)转移回它。
- 每一个空心圆圈代表一个状态,每一个实心圆圈代表一个状态-动作对。
上图很形象地说明了下面这个公式
注意
R
(
s
,
a
)
R(s,a)
R(s,a)代表在状态s下采取动作a后(转移到状态
s
′
s'
s′)得到的单步奖励期望,即:
R
(
s
,
a
)
=
E
[
R
t
+
1
∣
s
t
=
s
,
a
t
=
a
]
\rm R(s,a) = \mathbb{E}\left[\mathbf{R}_{\mathrm{t}+1} \mid \mathrm{s}_{\mathrm{t}}=\mathrm{s}, \mathrm{a}_{\mathrm{t}}=\mathrm{a}\right]
R(s,a)=E[Rt+1∣st=s,at=a]。
如下所示的为Q函数
q
π
(
s
,
a
)
\rm q^{\pi}(s,a)
qπ(s,a)备份图,图中的
r
\rm r
r是
γ
\gamma
γ。
- 第一层加和是先把这个叶子节点从黑色节点推到这个白色的节点,进了它的这个状态。
- 当我们到达某一个状态过后,再对这个白色节点进行一个加和,这样就把它重新推回到当前时刻的一个 Q 函数。
3.6 预测和控制问题
MDP 的 prediction 和 control 是 MDP 里面的核心问题。
这两者的区别就在于:预测问题
是给定一个 policy,我们要确定它的 value function 是多少,这也称为policy evaluation
问题;而控制问题
是在没有 policy 的前提下,我们要确定最优的 value function 以及对应的决策方案。
在强化学习中,我们通过解决预测问题,进而解决控制问题。
3.6.1 解决预测问题
解决方案:用下式反复迭代,就会得到一个收敛的价值函数的值。
因为已经给定了这个函数的 policy function,那我们可以直接把它简化成一个 MRP 的表达形式,这样的话,形式就更简洁一些,就相当于我们把动作 a 去掉,如下式所示:
3.6.2 解决控制问题
有两种解决方案,一种是policy iteration
,一种是value iteration
-
首先来看policy iteration。因为策略 π \pi π和价值函数 v ( s ) \rm v(s) v(s)都不知道,所以需要先假定一个策略,然后按这个策略计算价值函数和Q函数,接着按照使Q函数取得最大值的动作(其他动作被选取到的概率为0)制定新策略,然后再计算价值函数和Q函数,如此往复,直至价值函数和策略收敛。
收敛后,就得到如下等式:
上式被称为Bellman optimality equation
,它表达了这样一个事实:最佳策略下的一个状态的价值必须等于在这个状态下采取最好动作得到的回报期望。 -
再来看value iteration。同样是策略 π \pi π和价值函数 v ( s ) \rm v(s) v(s)都不知道,但是value iteration的思路是先按照当前最优动作去迭代价值函数 v ( s ) \rm v(s) v(s),直到价值函数 v ( s ) \rm v(s) v(s)收敛后,再来制定策略。