马尔科夫决策过程
Makov的定义
下一个状态的产生只和当前的状态有关,即:
本来直观上讲,下一个状态的产生跟所有历史状态是有关的,也就是等式右边所示。但是Markov的定义则是忽略掉历史信息,只保留当前状态的信息来预测下一个状态,这就叫Markov。
状态转移概率
对于一个具体的状态s和它的下一个状态s’ ,它们的状态转移概率(就是从s转移到s’的概率)定义为:
假如总共有n种状态可以选择。那么状态转移矩阵P定义为:
矩阵中第 i 行表示:当前状态为
i
i
i,那么它的下一个状态为
1
,
…
,
n
1, … , n
1,…,n 的概率分别为
P
i
1
,
.
.
.
,
P
i
n
P_{i1},...,P_{in}
Pi1,...,Pin。显然这一行所有概率之和为1。
Markov Process
马尔科夫过程 是一个二元组 <S,P>。S为状态集合,P为状态转移概率矩阵。
Markov Reward Process
马尔科夫奖励过程 简单标示为 <S,P,R,y>。R表示为从S到S’能够获得的奖励期望,y为折扣因子。
理解 G t G_t Gt
从状态 s 出发,经过一系列的状态转移最终达到终点,得到了一条路径,每次状态转移都会有一个R。
所以最终 G表示从s开始一直到终点的所有R之和。
这里
G
t
G_t
Gt是某个具体的episode所获得的return,当然我们的目标是想找到一个路径使得
G
t
G_t
Gt的值最大,也就是累积奖赏最大。
因为离s越远的地方一般影响较小,所以加了一个折扣因子来表达影响衰减。
Value Function (价值函数)
值函数表示在状态 s 下,
G
t
G_t
Gt的期望
从状态 s 开始有很多条路径可以最终到达终点,每条路径都有一个G,这里值函数就是这些G的期望。
当然,如果要算出期望的话,我们需要把所有可能的路径都列举出来进行计算。但是对于复杂的问题,穷举基本上是不可能的,所以后面会说到值函数的估计,因为很难把路径都遍历了。
Bellman Equation
贝尔曼方程,由价值函数的定义公式推导而来,可以发现最后为一个递归过程。
从最后的推导结果来看,一个状态 s 的价值
V
(
s
)
V(s)
V(s) 由两部分组成:
一部分是
R
t
+
1
R_{t+1}
Rt+1,它代表即时奖励的期望,它与下一个状态无关
另一个是下一时刻状态
S
t
+
1
S_{t+1}
St+1 的价值期望。
Markov Decision Process
马尔科夫决策过程是一个五元组,它是在前面马尔科夫奖励过程的基础上添加了**动作集(A)**改进来的。在强化学习的简介中我们也知道,agent与环境是通过执行动作来进行交互的。因此,我们需要添加动作集进来,这样从一个状态转移到另一个状态就是因为执行了动作才会产生的。
Policies
policy策略 π 表示在一个状态s下,agent接下来可能会采取的任意一个action的概率分布。
对于每一个状态s都会有这样一个π(a|s),所有状态的π(a|s)就形成 整体策略π。
比如,我们可以说我们的策略就是在每个状态下都随机选取一个动作,这也是一种策略。我们也可以说我们的策略就是在每个状态下一直选某一个动作。总之,策略π是指所有状态都要使用这个策略,不是单独指某一个状态。
无论怎样,我们的目标是最大化累积奖赏,所以我们可以通过不断地改进我们的策略,使得我们最后能够获得最大累积奖赏。
理解 P s , s ′ π P^π_{s,s′} Ps,s′π
P
s
,
s
′
π
P^π_{s,s′}
Ps,s′π 其实是一个联合概率,表示在执行策略π的情况下,状态从s转移到s’的概率。
基于策略π的 值函数v(s)、状态动作值函数Q(s,a)
v π ( s ) v_π(s) vπ(s)表示从状态s出发,使用策略π所带来的累积奖赏。这个策略是指在一个状态下,执行所有可能动作的概率,是一个概率分布。
q
π
(
s
,
a
)
q_π(s,a)
qπ(s,a) 表示从状态s出发,已经采取了动作a之后,再使用策略π所带来的累积奖赏。被称为状态动作值函数。这里π是针对当前状态s下采取动作a之后的下一个状态以及以后的状态。
将上式代入
v
π
(
s
)
v_π(s)
vπ(s),可得如下:
最优值函数、最优状态动作值函数
最优值函数
v
∗
(
s
)
v_∗(s)
v∗(s):在所有的策略产生的值函数中最大的那个函数。
最优状态动作值函数
q
∗
(
s
,
a
)
q_∗(s,a)
q∗(s,a):在所有的策略中产生的状态动作价值函数中最大的那个函数。
贝尔曼最优方程
v 描述了处于一个状态的长期最优化价值,即在这个状态下考虑到所有可能发生的后续动作,并且都挑选最优的动作来执行的情况下,这个状态的价值
q 描述了处于一个状态并执行某个动作后所带来的长期最优价值,即在这个状态下执行某一特定动作后,考虑再之后所有可能处于的状态并且在这些状态下总是选取最优动作来执行所带来的长期价值。
由上面的公式可以,要求最优值需要一步步迭代计算,是一个递归过程。具体在代码中怎么计算,就要使用到价值迭代、策略迭代、Q-learning、Sarsa等。
附:参考马尔科夫决策过程