强化学习——马尔科夫决策过程(MDP)
1、MDP引入
1.1、强化学习引入
对于强化学习而言,其有几个基本的组成部件:
- 环境:所谓的环境,就是指我们用于强化学习的数据。
- 智能体:无论是任何的学习方式,我们都可以将其抽象成一个模型在寻找最佳参数的过程,在强化学习中,我们将模型抽象成一个“有思想的智能体”。模型学习最佳参数的过程可以抽象成一个智能体在寻找最优回报的过程。
- 动作:在强化学习中,智能体与环境之间的交互称为“动作”。
- 回报:强化学习的目标就是寻找一个最优回报,我们可以将回报类比成其他学习中的误差,只不过其他学习的过程的目标是最小化误差,而强化学习的过程需要最大化这种“误差”。
- 状态:智能体在不断的探索的过程中,每一个时刻会处于一个“状态”。
总结一下,所谓的强化学习,就是指智能体采用某种动作和环境进行交互,进而环境会给予智能体一个回报来引起智能体的状态发生改变。通过不断的迭代过程,为智能体选择一个最优回报的过程。我们用图来总结下这个过程:
1.2 马尔科夫决策过程引入
在了解了强化学习的基本组件和学习过程之后,我们可以发现,强化学习的基本方式和有监督、无监督学习还是由很大的差别的。对于有、无监督的学习过程,有很多的模型框架来支持这两种学习方式的。比如SVM,K-means等等。那么是否有一个基本的框架来支持强化学习的过程呢?这就引出了我们下面要介绍的MDP决策过程。
在介绍MDP之前,让我们一起来回顾一下有关于马尔科夫的相关概念。
-
马尔科夫性
所谓的马尔科夫性是指状态序列的下一个状态仅仅和前一个状态相关。我们用公式来表示一下就是:
P ( S t + 1 ∣ S 1 , S 2 , S 3 , . . . S t ) = P ( S t + 1 ∣ S t ) P(S_{t+1}|S_1,S_2,S_3,...S_{t})=P(S_{t+1}|S_t) P(St+1∣S1,S2,S3,...St)=P(St+1∣St) -
马尔科夫过程
马尔科夫过程由一个二元组(S,P)所构成,其中S表示的所有的状态集合,P表示的状态之间的转移的概率矩阵。具体的来说,马尔科夫过程是一个随机的过程,在给定状态转移概率的前提之后,我们可有根据状态转移的概率来获得多个状态转移的序列,每一个序列称为是一个马尔科夫链。我们下面举一个例子来说明一下:
根据上图所示,我们可以获知到的状态的集合为S={娱乐,课1,课2,课3,论文,睡觉,考过},共有七种状态。同时,根据边上的状态转移概率,我们可以总结出概率矩阵P。
进一步,假设我们以课1为开始状态,则可以产生的马尔科夫链包括:
课1->课2->睡觉
课1->课2->课3->考过
等等。
1.3 MDP介绍
在基本了解了马尔科夫的相关特性和马尔科夫过程之后,我们进一步来介绍MDP过程。对于一个马尔科夫决策过程而言,其一共包含以下几个组件。
- S:有限状态集合
- A:有限动作集合
- P:状态转移的概率矩阵。
- R:回报函数
- γ:折扣因子,用来计算累积回报。
在我们之前计算的马尔科夫过程中,整个过程是通过状态转移转移的概率和状态的集合来生成状态序列。而在MDP中,我们需要考虑的不仅仅包括状态和转移概率,还考虑了状态所采取的动作。也就是说,在MDP中,状态的转移是根据前一个状态和前一个状态所采用的动作两个部分共同决定的。用公式表示就是:
P s s a = P ( S t + 1 ∣ S t = s , A t = a ) P_{ss}^a=P(S_{t+1}|S_t=s,A_t=a) Pssa=P(St+1∣St=s,At=a)
在理解了MDP的转移过程之后,我们下面以一个例子来说明一下这种状态转移的过程。
根据上图所示,我们可以抽象出相关MDP的基本元素包括:
S
=
{
S
1
,
S
2
,
S
3
,
S
4
,
S
5
}
S=\{S_1,S_2,S_3,S_4,S_5\}
S={S1,S2,S3,S4,S5}
A
=
{
玩
,
退
出
,
学
习
,
睡
觉
,
发
表
}
A=\{玩,退出,学习,睡觉,发表\}
A={玩,退出,学习,睡觉,发表}
回
报
函
数
R
。
回报函数R。
回报函数R。
状
态
转
移
概
率
矩
阵
P
。
状态转移概率矩阵P。
状态转移概率矩阵P。
这
里
关
于
折
扣
因
子
γ
可
以
在
计
算
的
过
程
中
定
义
即
可
。
这里关于折扣因子γ可以在计算的过程中定义即可。
这里关于折扣因子γ可以在计算的过程中定义即可。
1.4 策略π
当使用MDP来描述强化学习的时候,强化学习的目标是在给定一个MDP的基础上寻找最优的:策略。那么什么是策略呢?
所谓的“策略”,指的是在给定一个状态S之后,在这个状态S上能产生的动作集的一个分布。策略通常采用π来表示。那我们上面描述的例子来说,当处于状态 S 3 S_3 S3的时候,其能够采用的动作包括“睡觉”和“学习”两种,而策略π就可以描述这两个动作的概率分布。用公式来描述就是:
π ( a ∣ s ) = P ( A t = a ∣ S t = s ) π(a|s)=P(A_t=a|S_t=s) π(a∣s)=P(At=a∣St=s)
1.5 累积回报与状态—值函数
在1.4中我们提到了,强化学习在MDP上的目标是为了寻找一个最优的策略,那么如何来衡量策略的最优性呢?这就引出来我们下面要介绍的“累积回报”。
假设我们给定当前状态 S t S_t St和一个策略π,我们可以计算关于策略π的累积回报来对于策略π进行评价。
首先,我们定义累积回报的基本形式:
G
t
=
R
t
+
1
+
γ
R
t
+
2
+
γ
2
R
t
+
3
+
,
.
.
.
=
∑
k
=
0
∞
γ
k
R
t
+
k
+
1
G_t=R_{t+1}+γR_{t+2}+γ^2R_{t+3}+,...=∑_{k=0}^∞γ^kR_{t+k+1}
Gt=Rt+1+γRt+2+γ2Rt+3+,...=k=0∑∞γkRt+k+1
我们来简单的理解一下这个公式,在当前状态
S
t
S_t
St下,随着动作的不断发生,智能体不断的和环境产生交互,不断的从从环境中获取到环境的回报值。利用折扣因子γ,对于之后每一个时刻的回报值进行调节,并将调节之后的回报值进行累加。最终获取到回报的累加和。我们利用举一个例子来说明一下:
假设从状态
S
1
S_1
S1开始,其可能生成的状态序列包括:
S
1
−
>
S
2
−
>
S
3
−
>
S
4
S_1->S_2->S_3->S_4
S1−>S2−>S3−>S4
S
1
−
>
S
2
−
>
S
3
−
>
S
5
S_1->S_2->S_3->S_5
S1−>S2−>S3−>S5
可以发现,从某一个状态开始,可以产生多个状态序列,进一步,我们可以计算出来多个 G 1 G_1 G1值,也就是说,对于累积回报 G t G_t Gt而言,由于不同的状态序列。则其本身也是随机的。显然,我们不可能利用一个随机值去衡量一个策略的优劣。所以,为了使用累积回报去衡量策略,我们对于累积回报取其期望值来消除这种随机性。则有:
V
π
(
s
)
=
E
π
(
∑
k
=
0
∞
γ
k
R
t
+
k
+
1
∣
S
t
=
s
)
V_π(s)=E_π(∑_{k=0}^∞γ^kR_{t+k+1}|S_t=s)
Vπ(s)=Eπ(k=0∑∞γkRt+k+1∣St=s)
我们将这种期望称为状态—值函数。策略π决定了累积回报值的分布情况,也就是说状态值函数与策略π是对应的。
1.7 状态—行为值函数
在我们之前的介绍中,讲述了MDP的状态转移是由两个部分决定的,第一个部分是前一个时刻的状态 S t S_t St,另外一个是前一个时刻所采用的动作 A t A_t At。用一个图来展示一下这个过程:
根据上面的图示,我们可以将状态转移里理解为两个过程,第一个过程是处于当前的状态 S t S_t St,也就是第一个点,第二个过程是采用动作 A t A_t At,最后转移到了下一个状态 S t + 1 S_{t+1} St+1。
那么,我们定义的状态—值函数可以看做是最上面的圆的回报函数,那么我们是否可以为了第二个圆,也就是状态,动作来定义一个回报函数呢?答案当然是肯定的,下面就引出来这个状态—行为值函数。
q π ( s , a ) = E π ( ∑ k = 0 ∞ γ k R t + k + 1 ∣ S t = s , A t = a ) q_π(s,a)=E_π(∑_{k=0}^∞γ^kR_{t+k+1}|S_t=s,A_t=a) qπ(s,a)=Eπ(k=0∑∞γkRt+k+1∣St=s,At=a)
相比于状态—值函数,状态—行为值函数引入了行为,刻画了上图中第二个圆的回报情况。
2、MDP求解
上面我们介绍了关于状态—值函数和状态—行为值函数的定义过程,接下来我们就是对于这两个函数进行求解的过程。
2.1 贝尔曼方程
首先,让我们从状态—值函数开始:
V ( s ) = E π ( ∑ k = 0 ∞ γ k R t + k + 1 ∣ S t = s ) = E π ( G t ∣ S t = s ) = E π ( R t + 1 + γ ( R t + 2 + γ R t + 3 + γ 2 R t + 4 + , . . . ) ∣ S t = s ) = E π ( R t + 1 + γ G t + 1 ∣ S t = s ) = E π ( R t + 1 + γ V ( S t + 1 ) ∣ S t ) V(s)=E_π(∑_{k=0}^∞γ^kR_{t+k+1}|S_t=s)=\\ \frac{}{}\\ E_π(G_t|S_t=s)=\\ \frac{}{}\\ E_π(R_{t+1}+γ(R_{t+2}+γR_{t+3}+γ^2R_{t+4}+,...)|S_t=s)=\\ \frac{}{}\\ E_π(R_{t+1}+γG_{t+1}|S_t=s)=E_π(R_{t+1}+γV(S_{t+1})|S_t) V(s)=Eπ(k=0∑∞γkRt+k+1∣St=s)=Eπ(Gt∣St=s)=Eπ(Rt+1+γ(Rt+2+γRt+3+γ2Rt+4+,...)∣St=s)=Eπ(Rt+1+γGt+1∣St=s)=Eπ(Rt+1+γV(St+1)∣St)
进一步,我们可以推导出关于 q π ( s , a ) q_π(s,a) qπ(s,a)的贝尔曼方程为:
q π ( s , a ) = E π ( ∑ k = 0 ∞ γ k R t + k + 1 ∣ S t = s , A t = a ) = E π ( R t + 1 + γ ( R t + 2 + γ R t + 3 + γ 2 R t + 4 + , . . . ∣ S t + 1 , A t + 1 ) ∣ S t = s , A t = a ) = E π ( R t + 1 + γ q ( S t + 1 , A t + 1 ) ∣ S t = s , A t = a ) q_π(s,a)=E_π(∑_{k=0}^∞γ^kR_{t+k+1}|S_t=s,A_t=a)=\\ \frac{}{}\\ E_π(R_{t+1}+γ(R_{t+2}+γR_{t+3}+γ^2R_{t+4}+,...|S_{t+1},A_{t+1})|S_t=s,A_t=a)=\\ \frac{}{}\\ E_π(R_{t+1}+γq(S_{t+1},A_{t+1})|S_t=s,A_t=a) qπ(s,a)=Eπ(k=0∑∞γkRt+k+1∣St=s,At=a)=Eπ(Rt+1+γ(Rt+2+γRt+3+γ2Rt+4+,...∣St+1,At+1)∣St=s,At=a)=Eπ(Rt+1+γq(St+1,At+1)∣St=s,At=a)
2.2 状态—值和状态—行为值的融合过程
在推导出状态—值函数的贝尔曼方程和状态—行为值的贝尔曼方程之后,我们下面要将两种方程融合到一起来表示最终的状态累积回报。下面我们从一个图开始介绍:
在上图中,定义了两种动作和对应产生的不同状态。我们沿着最左侧的状态来看,对于当前的状态 S t = s S_t=s St=s,我们假设其产生的累积回报的期望为 V π ( s ) V_π(s) Vπ(s),进一步其采取的是动作 a 1 a_1 a1,在该条件下产生的累积回报的期望为 q π ( s , a ) q_π(s,a) qπ(s,a),在采取了动作 a 1 a_1 a1之后,其转移到状态 s ′ s' s′之上,那么在 s ′ s' s′处产生的回报为 V π ( s ′ ) V_π(s') Vπ(s′)。
则,我们可以对状态s的回报看成是两个部分,第一个部分是采取动作a之后产生的状态——行为回报,另外一个部分是状态转移之后,下一个状态 s ′ s' s′的回报情况。用图来表示就是:
在状态—行为值函数中,包含了之后的状态的回报,所以,我们可以将当前的状态的回报看做是状态——行为函数的反馈。则根据当前状态s可以产生的不同的行为,我们可以定义状态——值函数为:
V
π
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
q
π
(
s
,
a
)
V_π(s)=∑_{a∈A}π(a|s)q_{π}(s,a)
Vπ(s)=a∈A∑π(a∣s)qπ(s,a)
而其中的状态—行为值函数可以定义为:
q
π
(
s
,
a
)
=
R
s
a
+
γ
∑
s
′
P
s
s
a
V
π
(
s
′
)
q_{π}(s,a)=R_s^a+γ∑_{s'}P_{ss}^aV_π(s')
qπ(s,a)=Rsa+γs′∑PssaVπ(s′)
其中,
R
s
a
R_s^a
Rsa表示当前状态采取动作a的立即回报,也就是
R
t
+
1
R_{t+1}
Rt+1,
P
s
s
a
P_{ss}^a
Pssa表示的在动作a和当前状态s之下的状态转移概率,
s
′
s'
s′表示的是当前状态在采用动作a的条件下可以转移到的所有状态。进一步,我们将
V
π
(
s
′
)
V_π(s')
Vπ(s′)展开之后有:
V
π
(
s
′
)
=
∑
a
′
∈
A
π
(
a
′
∣
s
′
)
q
π
(
s
′
,
a
′
)
V_π(s')=∑_{a'∈A}π(a'|s')q_π(s',a')
Vπ(s′)=a′∈A∑π(a′∣s′)qπ(s′,a′)
将上面的式子融合一下就得到了最终的状态—值函数为:
V π ( s ) = ∑ a ∈ A π ( a ∣ s ) [ R s a + γ ∑ s ′ P s s a V π ( s ′ ) ] V_π(s)=∑_{a∈A}π(a|s)[R_s^a+γ∑_{s'}P_{ss}^aV_π(s')] Vπ(s)=a∈A∑π(a∣s)[Rsa+γs′∑PssaVπ(s′)]
最终的状态—行为值函数定义为:
q
π
(
s
,
a
)
=
R
s
a
+
γ
∑
s
′
P
s
s
a
∑
a
′
∈
A
π
(
a
′
∣
s
′
)
q
π
(
s
′
,
a
′
)
q_{π}(s,a)=R_s^a+γ∑_{s'}P_{ss}^a∑_{a'∈A}π(a'|s')q_π(s',a')
qπ(s,a)=Rsa+γs′∑Pssaa′∈A∑π(a′∣s′)qπ(s′,a′)
2.3 总结
对于基于MDP的强化学习而言,我们的目标是为了寻找最优策略π,并且我们已经定义了关于π的评价函数,那么下面我们总结一下这个过程。
1.获取最优策略
π
∗
π^*
π∗
定义:最优的状态—值函数
V
∗
(
s
)
V^*(s)
V∗(s)为在所有的策略中最大的状态值函数,也就是有:
V
∗
(
s
)
=
m
a
x
π
V
π
(
s
)
V^*(s)=max_{π}V_{π}(s)
V∗(s)=maxπVπ(s),
定义最优的状态—行为值函数
q
∗
(
s
,
a
)
q^*(s,a)
q∗(s,a)为在所有的策略中最大的状态—行为值函数,即:
q
∗
(
s
,
a
)
=
m
a
x
π
q
π
(
s
,
a
)
q^*(s,a)=max_{π}q_π(s,a)
q∗(s,a)=maxπqπ(s,a)
在通过上面的推导过程获取到最优的状态—行为值函数之后,最优策略可以通过直接最大化
q
∗
(
s
,
a
)
q^*(s,a)
q∗(s,a)来决定最优策略
π
∗
π^*
π∗:
π
∗
(
a
∣
s
)
=
{
1
i
f
a
=
a
r
g
m
a
x
a
∈
A
q
∗
(
s
,
a
)
0
o
t
h
e
r
w
i
s
e
π^*(a|s)=\begin{cases}1 & if a = argmax_{a∈A}q^*(s,a)\\ 0&otherwise\end{cases}
π∗(a∣s)={10ifa=argmaxa∈Aq∗(s,a)otherwise
2. 定义离散MDP
首先,我们定义一个离散的马尔科夫决策过程M=(S,A,P,r,ρ,γ,T),其中S,A,P分别表示有限的状态集合,有限的动作集合,状态转移概率,ρ表示初始的状态分布,r表示立即回报集合。T表示整个过程的时间长度。γ为折扣因子。
令
τ
=
(
s
0
,
a
0
,
s
1
,
a
1
,
.
.
.
.
)
τ=(s_0,a_0,s_1,a_1,....)
τ=(s0,a0,s1,a1,....)为一个转移过程的序列集合。累积回报为
R
=
∑
t
=
0
T
γ
t
r
t
R=∑_{t=0}^Tγ^tr_t
R=∑t=0Tγtrt强化学习的目标是寻找最优策略π,使得该策略下的累积回报期望最大,也就是:
m a x π ∫ R ( τ ) P π ( τ ) d τ max_π∫R(τ)P_π(τ)dτ maxπ∫R(τ)Pπ(τ)dτ
3 参考
- 深入浅出的强化学习——原理入门