这里写自定义目录标题
强化学习(二)马尔科夫决策过程(MDP)
参考:https://www.cnblogs.com/pinard/p/9426283.html
在强化学习(一)模型基础中,我们讲到了强化学习模型的8个基本要素。但是仅凭这些要素还是无法使用强化学习来帮助我们解决问题的, 在讲到模型训练前,模型的简化也很重要,这一篇主要就是讲如何利用马尔科夫决策过程(Markov Decision Process,以下简称MDP)来简化强化学习的建模。
1. 强化学习引入MDP的原因
强化学习的8个要素我们在第一节已经讲了。其中的第七个是环境的状态转化模型,它可以表示为一个概率模型,即在状态s下采取动作a,转到下一个状态s′的概率,表示为
P
s
s
′
a
P_{ss'}^{a}
Pss′a
如果按照真实的环境转化过程看,转化到下一个状态
s
s
s′的概率既与上一个状态
s
s
s有关,还与上上个状态,以及上上上个状态有关。这一会导致我们的环境转化模型非常复杂,复杂到难以建模。因此我们需要对强化学习的环境转化模型进行简化。简化的方法就是假设状态转化的马尔科夫性,也就是假设转化到下一个状态
s
′
s′
s′的概率仅与上一个状态s有关,与之前的状态无关。用公式表示就是:
P
s
s
′
a
=
E
(
S
t
+
1
=
s
′
∣
S
t
=
s
,
A
t
=
a
)
P_{ss'}^{a}=E(S_{t+1}=s'|S_{t}=s,A_{t}=a)
Pss′a=E(St+1=s′∣St=s,At=a)
除了对于环境的状态转化模型这个因素做马尔科夫假设外,我们还对强化学习第四个要素个体的策略
(
p
o
l
i
c
y
)
π
(policy)π
(policy)π也做了马尔科夫假设。即在状态s时采取动作a的概率仅与当前状态s有关,与其他的要素无关。用公式表示就是
π
(
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)
对于第五个要素,价值函数
v
π
(
s
)
v_{π}(s)
vπ(s)也是一样,
v
π
(
s
)
v_{π}(s)
vπ(s)现在仅仅依赖于当前状态了,那么现在价值函数
v
π
(
s
)
v_{π}(s)
vπ(s)可以表示为:
v
π
(
s
)
=
E
(
G
t
∣
S
t
=
s
)
=
E
π
(
R
t
+
1
+
γ
R
t
+
2
+
γ
2
R
t
+
3
+
.
.
.
∣
S
t
=
s
)
v_{π}(s)=E(G_{t}|S_{t}=s)=E_{π}(R_{t+1}+γR_{t+2}+γ^{2}R_{t+3}+...|S_{t}=s)
vπ(s)=E(Gt∣St=s)=Eπ(Rt+1+γRt+2+γ2Rt+3+...∣St=s)
其中
G
t
G_{t}
Gt表示收获
r
e
t
u
r
n
return
return,是一个MDP中从某一个状态
S
t
S_{t}
St开始采样直到终止状态是所有奖励的衰减之和。
2. MDP的价值函数与贝尔曼方程
对于MDP。我们在第一节降到了他的价值函数
v
π
(
s
)
v_{π}(s)
vπ(s)的表达式。但是这个表达是没有考虑到所采用动作a带来的价值影响,因此我们除了
v
π
(
s
)
v_{π}(s)
vπ(s)这个状态函数外,还有一个动作价值函数
q
π
(
s
,
a
)
q_{π}(s,a)
qπ(s,a),即:
q
π
(
s
,
a
)
=
E
(
G
t
∣
S
t
=
s
,
A
t
=
a
)
=
E
π
(
R
t
+
1
+
γ
R
t
+
2
+
γ
2
R
t
+
3
+
.
.
.
∣
S
t
=
s
,
A
t
=
a
)
q_{π}(s,a)=E(G_{t}|S_{t}=s,A_{t}=a)=E_{π}(R_{t+1}+γR_{t+2}+γ^{2}R_{t+3}+...|S_{t}=s,A_{t}=a)
qπ(s,a)=E(Gt∣St=s,At=a)=Eπ(Rt+1+γRt+2+γ2Rt+3+...∣St=s,At=a)
根据价值函数的表达式,我们可以推倒出价值函数基于状态的递推关系,比如对于状态价值函数
v
π
(
s
)
v_{π}(s)
vπ(s),可以发现:
v
π
(
s
)
=
E
π
(
R
t
+
1
+
γ
R
t
+
2
+
γ
2
R
t
+
3
+
.
.
.
∣
S
t
=
s
)
=
E
π
(
R
t
+
1
+
γ
(
R
t
+
2
+
γ
R
t
+
3
+
.
.
.
)
∣
S
t
=
s
)
=
E
π
(
R
t
+
1
+
γ
G
t
+
1
∣
S
t
=
s
)
=
E
π
(
R
t
+
1
+
γ
v
π
(
S
t
+
1
)
∣
S
t
=
s
)
\begin{aligned} v_{π}(s) & = E_{π}(R_{t+1}+γR_{t+2}+γ^{2}R_{t+3}+...|S_{t}=s) \\ & = E_{π}(R_{t+1}+γ(R_{t+2}+γR_{t+3}+...)|S_{t}=s) \\ & = E_{π}(R_{t+1}+γG_{t+1}|S_{t}=s) \\ & = E_{π}(R_{t+1}+γv_{π}(S_{t+1})|S_{t}=s) \\ \end{aligned}
vπ(s)=Eπ(Rt+1+γRt+2+γ2Rt+3+...∣St=s)=Eπ(Rt+1+γ(Rt+2+γRt+3+...)∣St=s)=Eπ(Rt+1+γGt+1∣St=s)=Eπ(Rt+1+γvπ(St+1)∣St=s)
也就是说,在t时刻的状态
S
t
S_{t}
St和t+1时刻的状态
S
t
+
1
S_{t+1}
St+1是满足递推关系的,即:
v
π
(
s
)
=
E
π
(
R
t
+
1
+
γ
v
π
(
S
t
+
1
)
∣
S
t
=
s
)
v_{π}(s)=E_{π}(R_{t+1}+γv_{π}(S_{t+1})|S_{t}=s)
vπ(s)=Eπ(Rt+1+γvπ(St+1)∣St=s)
这个递推式子我们一般将它叫做贝尔曼方程。这个式子告诉我们,一个状态的价值由该状态的奖励以及后续状态价值按一定的衰减比例联合组成。
同样的方法,我们可以得到动作价值函数
q
π
(
s
,
a
)
q_{π}(s,a)
qπ(s,a)的贝尔曼方程:
q
π
(
s
,
a
)
=
E
π
(
R
t
+
1
+
γ
q
π
(
S
t
+
1
,
A
t
+
1
)
∣
S
t
=
s
,
A
t
=
a
)
q_{π}(s,a)=E_{π}(R_{t+1}+γq_{π}(S_{t+1},A_{t+1})|S_{t}=s,A_{t}=a)
qπ(s,a)=Eπ(Rt+1+γqπ(St+1,At+1)∣St=s,At=a)
3. 状态价值函数与动作价值函数的递推关系
根据动作价值函数
q
π
(
s
,
a
)
q_{π}(s,a)
qπ(s,a)和状态价值函数
v
π
(
s
)
v_{π}(s)
vπ(s)的定义,我们很容易得到他们之间的转化关系公式:
v
π
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
q
π
(
s
,
a
)
v_{π}(s)=\sum_{a∈A}π(a|s)q_{π}(s,a)
vπ(s)=a∈A∑π(a∣s)qπ(s,a)
也就是说,状态价函数是所有动作价值函数基于策略
π
π
π的期望。通俗说就是某状态下所有状态动作价值乘以该动作出现的概率,最后求和,就得到了对应的状态价值。
反过来,利用贝尔曼方程,我们很容易从状态价值函数
v
π
(
s
)
v_{π}(s)
vπ(s)表示动作价值函数
q
π
(
s
,
a
)
q_{π}(s,a)
qπ(s,a),即:
q
π
(
s
,
a
)
=
R
s
a
+
γ
∑
s
′
∈
S
P
s
s
′
a
v
π
(
s
′
)
q_{π}(s,a)=R_{s}^{a}+γ\sum_{s'∈S}P_{ss'}^{a}v_{π}(s')
qπ(s,a)=Rsa+γs′∈S∑Pss′avπ(s′)
通俗说就是状态动作价值由两部分相加组成,第一部分是即时奖励,第二部分是环境所有可能的下一个状态的概率乘以该下一个状态的状态值,最后求和,并加上衰减。
转化过程如图所示:
把上面两个式子结合起来,我们可以得到:
v
π
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
(
R
s
a
+
γ
∑
s
∈
s
′
P
s
s
′
a
v
π
(
s
′
)
)
v_{π}(s)=\sum_{a∈A}π(a|s)(R_{s}^{a}+γ\sum_{s∈s'}P_{ss'}^{a}v_{π}(s'))
vπ(s)=a∈A∑π(a∣s)(Rsa+γs∈s′∑Pss′avπ(s′))
q
π
(
s
,
a
)
=
R
s
a
+
γ
∑
s
′
∈
S
P
s
s
′
a
∑
a
′
∈
A
π
(
a
′
∣
s
′
)
q
π
(
s
′
,
a
′
)
q_{π}(s,a)=R_{s}^{a}+γ\sum_{s'∈S}P_{ss'}^{a}\sum_{a'∈A}π(a'|s')q_{π}(s',a')
qπ(s,a)=Rsa+γs′∈S∑Pss′aa′∈A∑π(a′∣s′)qπ(s′,a′)
4.最优价值函数
解决强化学习问题意味着要寻找一个最优的策略让个体在与环境交互过程中获得始终比其它策略都要多的收获,这个最优策略我们可以用
π
∗
π^{∗}
π∗表示。一旦找到这个最优策略
π
∗
π^{∗}
π∗,那么我们就解决了这个强化学习问题。一般来说,比较难去找到一个最优策略,但是可以通过比较若干不同策略的优劣来确定一个较好的策略,也就是局部最优解。
如何比较策略的优劣呢?一般是通过对应的价值函数来比较的,也就是说,寻找较优策略可以通过寻找较优的价值函数来完成。可以定义最优状态价值函数是所有策略下产生的众多状态价值函数中的最大者,即:
v
∗
(
s
)
=
max
π
v
π
(
s
)
v_{*}(s)=\max_{π}v_{π}(s)
v∗(s)=πmaxvπ(s)
同理也可以定义最优动作价值函数是所有策略下产生的中多动作状态价值函数中的最大值,即:
q
∗
(
s
,
a
)
=
max
π
q
π
(
s
,
a
)
q_{*}(s,a)=\max_{π}q_{π}(s,a)
q∗(s,a)=πmaxqπ(s,a)
对于最优的策略,基于动作价值函数我们可以定义为:
π
∗
(
a
∣
s
)
=
{
1
,
i
f
a
=
a
r
g
m
a
x
a
∈
A
q
∗
(
s
,
a
)
0
,
e
l
s
e
π_{*}(a|s)=\begin{cases} 1,\ \ if \ a=argmax_{a∈A}q_{*}(s,a)\\ 0, \ \ else \end{cases}
π∗(a∣s)={1, if a=argmaxa∈Aq∗(s,a)0, else
只要我们找到了最大的状态价值函数或者动作价值函数,那么对应的策略
π
∗
π^{*}
π∗就是我们强化学习问题的解。同时利用状态价值函数和动作价值函数之间的关系,我们可以得到:
v
∗
(
s
)
=
max
a
q
∗
(
s
,
a
)
v_{*}(s)=\max_{a}q_{*}(s,a)
v∗(s)=amaxq∗(s,a)
反过来的最优价值函数关系也很容易得到:
q
∗
(
s
,
a
)
=
R
s
a
+
γ
∑
s
′
∈
S
P
s
s
′
a
v
∗
(
s
′
)
q_{*}(s,a)=R_{s}^{a}+γ\sum_{s'∈S}P_{ss'}^{a}v_{*}(s')
q∗(s,a)=Rsa+γs′∈S∑Pss′av∗(s′)
利用上面两个式子也可以得到和第三届每位类似的式子:
v
∗
(
s
)
=
max
a
(
R
s
a
+
γ
∑
s
′
∈
S
P
s
s
′
a
v
∗
(
s
′
)
)
v_{*}(s)=\max_{a}(R_{s}^{a}+γ\sum_{s'∈S}P_{ss'}^{a}v_{*}(s'))
v∗(s)=amax(Rsa+γs′∈S∑Pss′av∗(s′))
q
∗
(
s
,
a
)
=
R
s
a
+
γ
∑
s
′
∈
S
P
s
s
′
a
max
a
′
q
∗
(
s
′
,
a
′
)
q_{*}(s,a)=R_{s}^{a}+γ\sum_{s'∈S}P_{ss'}^{a}\max_{a'}q_{*}(s',a')
q∗(s,a)=Rsa+γs′∈S∑Pss′aa′maxq∗(s′,a′)
5.MDP实例
这是一个例子,图中左下那个圆圈位置是七点,方框位置是终点。上面动作有study,pub,facebook,quit,sleep,每个状态对应的及时奖励R已经标出来了。我们的目标是找到最优的动作价值函数或者状态价值函数,进而找出最优策略。
为了方便,我们假设衰减因子γ=1,
π
(
a
∣
s
)
=
0.5
π(a|s)=0.5
π(a∣s)=0.5.
对于终点方框位置,由于没有下一个状态,也没有当前状态的动作,因此状态价值函数为0。其余四个状态,我们一次定义其价值为
v
1
,
v
2
,
v
3
,
v
4
v_{1},v_{2},v_{3},v_{4}
v1,v2,v3,v4,分别对应左上,左下,中下,右上位置的圆圈,我们基于
v
∗
(
s
)
=
max
a
(
R
s
a
+
γ
∑
s
′
∈
S
P
s
s
′
a
v
∗
(
s
′
)
)
v_{*}(s)=\max_{a}(R_{s}^{a}+γ\sum_{s'∈S}P_{ss'}^{a}v_{*}(s'))
v∗(s)=maxa(Rsa+γ∑s′∈SPss′av∗(s′))计算所有状态价值函数,可以得到一个方程组:
对于位置
v
1
v_{1}
v1,我们有:
v
1
=
0.5
∗
(
−
1
+
v
1
)
+
0.5
∗
(
0
+
v
2
)
v_{1}=0.5*(-1+v_{1})+0.5*(0+v_{2})
v1=0.5∗(−1+v1)+0.5∗(0+v2)
对于位置
v
2
v_{2}
v2,我们有:
v
2
=
0.5
∗
(
−
1
+
v
1
)
+
0.5
∗
(
−
2
+
v
3
)
v_{2}=0.5*(-1+v_{1})+0.5*(-2+v_{3})
v2=0.5∗(−1+v1)+0.5∗(−2+v3)
对于位置
v
3
v_{3}
v3,我们有:
v
3
=
0.5
∗
(
0
+
0
)
+
0.5
∗
(
−
2
+
v
4
)
v_{3}=0.5*(0+0)+0.5*(-2+v_{4})
v3=0.5∗(0+0)+0.5∗(−2+v4)
对于位置
v
4
v_{4}
v4,我们有:
v
4
=
0.5
∗
(
10
+
0
)
+
0.5
∗
(
1
+
0.2
∗
v
2
+
0.4
∗
v
3
+
0.4
∗
v
4
)
v_{4}=0.5*(10+0)+0.5*(1+0.2*v_{2}+0.4*v_{3}+0.4*v_{4})
v4=0.5∗(10+0)+0.5∗(1+0.2∗v2+0.4∗v3+0.4∗v4)
求得
v
1
=
−
2.3
,
v
2
=
−
1.3
,
v
3
=
2.7
,
v
4
=
7.4
v_{1}=-2.3,v_{2}=-1.3,v_{3}=2.7,v_{4}=7.4
v1=−2.3,v2=−1.3,v3=2.7,v4=7.4每个状态的价值函数如下所示:
上面我们固定了策略
π
(
a
∣
s
)
π(a|s)
π(a∣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)为例求解,首先终点方框处的好求。
q
∗
(
s
3
,
s
l
e
e
p
)
=
0
,
q
∗
(
s
4
,
s
t
u
d
y
)
=
10
q_{*}(s_{3},sleep)=0,q_{*}(s_{4},study)=10
q∗(s3,sleep)=0,q∗(s4,study)=10
接着利用
q
∗
(
s
,
a
)
=
R
s
a
+
γ
∑
s
′
∈
S
P
s
s
′
a
max
a
′
q
∗
(
s
′
,
a
′
)
q_{*}(s,a)=R_{s}^{a}+γ\sum_{s'∈S}P_{ss'}^{a}\max_{a'}q_{*}(s',a')
q∗(s,a)=Rsa+γs′∈S∑Pss′aa′maxq∗(s′,a′)
列方程组求出所有的
q
∗
(
s
,
a
)
q_{*}(s,a)
q∗(s,a)。有了所有的
q
∗
(
s
,
a
)
q_{*}(s,a)
q∗(s,a),利用
v
∗
(
s
)
=
max
a
q
∗
(
s
,
a
)
v_{*}(s)=\max_{a}q_{*}(s,a)
v∗(s)=amaxq∗(s,a)
就可以求出所有的
v
∗
(
s
)
v_{*}(s)
v∗(s)。最终求出所有
v
∗
(
s
)
v_{*}(s)
v∗(s)和
q
∗
(
s
,
a
)
q_{*}(s,a)
q∗(s,a)如下图所示:
从而我们的最优决策路径是走6->6->8->10->结束
6. MDP小结
MDP是强化学习入门的关键一步,如果这部分研究的比较清楚,后面的学习就会容易很多。因此值得多些时间在这里。虽然MDP可以直接用方程组来直接求解简单的问题,但是更复杂的问题却没有办法求解,因此我们还需要寻找其他有效的求解强化学习的方法。