上篇文章介绍了强化学习的八个基本要素,利用这些要素,我们就可以将一个完整的强化学习过程描述出来。
强化学习基本过程与目标
大家在看其他的参考书时,在这部分其实都是把强化学习的过程描述为一个“马尔科夫决策过程”。我们首先可以回忆一下上一节中那个图,首先就是将强化学习过程离散化,分成一步一步的过程。那么这其中最重要的马尔科夫特性,其实讲的就是每一步之间的关系。简单来说,就是系统这一步的状态,只与系统前一步状态相关,而与历史状态无关。用公式表示就是:
P
[
s
t
+
1
∣
s
1
,
⋯
,
s
t
]
=
P
[
s
t
+
1
∣
s
t
]
P\left[s_{t+1}\left|s_1,\cdots,s_t\right.\right]=P\left[s_{t+1}\left|s_t\right.\right]
P[st+1∣s1,⋯,st]=P[st+1∣st]
这种简化从某种程度上来说是合理的,其实蕴含的意思就是说这一步状态
s
t
s_t
st已经蕴含了历史信息。那么大家可以想想,这对
s
t
s_t
st的要求其实挺高的,在决策中需要使用真正将能够表征蕴含历史信息的状态,而不能产生遗漏,否则就会产生问题。
那么,对于一次完整的强化学习过程,我们可以用如下参数来表示。首先,每一步环境的状态 s t s_t st可以构成一个集合,称为状态集合,用 S S S表示;相应的,每一步Agent的动作 a t a_t at也可以构成一个集合,称为动作集合,用 A A A表示;同时,每一步产生的奖励 r t r_t rt可以构成一个集合,用 R R R表示。因此,强化学习的目标,简单来说就是找到最优的策略 π ∗ \pi^\ast π∗,使得 R R R最大。
要想求得
R
R
R的最大,简单来说,就必须要在每个状态或者动作时,产生的价值都是最大,这样最终加在一起的价值才能最大。关于状态或者动作的价值评估,我们就需要使用到前面定义的概念状态价值函数
v
π
(
s
)
v_{\mathrm\pi}\left(s\right)
vπ(s)和状态-行为值函数
q
π
(
s
,
a
)
q_{\mathrm\pi}\left(s,a\right)
qπ(s,a)。
根据前面的定义,概念状态价值函数
v
π
(
s
)
v_{\mathrm\pi}\left(s\right)
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
+
γ
⋅
v
π
(
s
t
+
1
)
∣
s
t
=
s
]
v_{\mathrm\pi}\left(s\right)=E_{\mathrm\pi}\left[r_{t+1}+\gamma\cdot r_{t+2}+\gamma^2\cdot r_{t+3}\left|s_t=s\right.\right]\\\;\;\;\;\;\;\;\;\;=E_{\mathrm\pi}\left[r_{t+1}+\gamma\cdot\left(r_{t+2}+\gamma\cdot r_{t+3}\right)\left|s_t=s\right.\right]\\\;\;\;\;\;\;\;\;\;=E_{\mathrm\pi}\left[r_{t+1}+\gamma\cdot v_{\mathrm\pi}\left(s_{t+1}\right)\left|s_t=s\right.\right]
vπ(s)=Eπ[rt+1+γ⋅rt+2+γ2⋅rt+3∣st=s]=Eπ[rt+1+γ⋅(rt+2+γ⋅rt+3)∣st=s]=Eπ[rt+1+γ⋅vπ(st+1)∣st=s]
上面得到的
v
π
(
s
)
v_{\mathrm\pi}\left(s\right)
vπ(s)和
v
π
(
s
t
+
1
)
v_{\mathrm\pi}\left(s_{t+1}\right)
vπ(st+1)之间的这种关系,就称为贝尔曼方程。
同理,也可求出状态-行为值函数的贝尔曼方程为:
q
π
(
s
,
a
)
=
E
π
[
r
t
+
1
+
γ
⋅
q
π
(
s
t
+
1
,
a
t
+
1
)
∣
s
t
=
s
,
a
t
=
a
]
q_{\mathrm\pi}\left(s,a\right)=E_{\mathrm\pi}\left[r_{t+1}+\gamma\cdot q_{\mathrm\pi}\left(s_{t+1},a_{t+1}\right)\left|s_t=s,a_t=a\right.\right]
qπ(s,a)=Eπ[rt+1+γ⋅qπ(st+1,at+1)∣st=s,at=a]
上述两个贝尔曼方程,在强化学习的过程中起到了核心作用,是后续算法的基本思路,即“通过贝尔曼方程的多伦迭代,使
v
π
(
s
)
v_{\mathrm\pi}\left(s\right)
vπ(s)或
q
π
(
s
,
a
)
q_{\mathrm\pi}\left(s,a\right)
qπ(s,a)最终收敛”。
状态价值函数与状态-行为值函数关系
可能童鞋们也发现了,
v
π
(
s
)
v_{\mathrm\pi}\left(s\right)
vπ(s)和
q
π
(
s
,
a
)
q_{\mathrm\pi}\left(s,a\right)
qπ(s,a)两个式子看起来很像,那么从定义角度出发,这两者之间是什么关系呢?大家可以看看下图:
纯手工绘图,丑,大家见笑了。
由上图可以看出,状态价值函数是由状态-行为值函数组成的,用公式表示如下:
v
π
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
q
π
(
s
,
a
)
v_{\mathrm\pi}\left(s\right)=\sum_{a\in A}\mathrm\pi\left(\mathrm a\left|\mathrm s\right.\right){\mathrm q}_{\mathrm\pi}\left(\mathrm s,\mathrm a\right)
vπ(s)=∑a∈Aπ(a∣s)qπ(s,a) (1)
同理,状态-行为值函数也可以由状态价值函数表示如下:
q
π
(
s
,
a
)
=
r
s
a
+
γ
∑
s
′
∈
S
P
s
s
′
a
v
π
(
s
′
)
{\mathrm q}_{\mathrm\pi}\left(\mathrm s,\mathrm a\right)=r_s^a+\gamma\sum_{s'\in S}P_{ss'}^av_{\mathrm\pi}\left(s'\right)
qπ(s,a)=rsa+γ∑s′∈SPss′avπ(s′) (2)
将(2)代入(1)可得:
v
π
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
[
r
s
a
+
γ
∑
s
′
∈
S
P
s
s
′
a
v
π
(
s
′
)
]
v_{\mathrm\pi}\left(s\right)=\sum_{a\in A}\mathrm\pi\left(\mathrm a\left|\mathrm s\right.\right)\left[\mathrm r_{\mathrm s}^{\mathrm a}+\mathrm\gamma\sum_{\mathrm s'\in\mathrm S}\mathrm P_{\mathrm{ss}'}^{\mathrm a}{\mathrm v}_{\mathrm\pi}\left(\mathrm s'\right)\right]
vπ(s)=∑a∈Aπ(a∣s)[rsa+γ∑s′∈SPss′avπ(s′)] (3)
将(1)代入(2)可得:
q
π
(
s
,
a
)
=
r
s
a
+
γ
∑
s
′
∈
S
P
s
s
′
a
∑
a
′
∈
A
π
(
a
′
∣
s
′
)
q
π
(
s
′
,
a
′
)
{\mathrm q}_{\mathrm\pi}\left(\mathrm s,\mathrm a\right)=r_s^a+\gamma\sum_{s'\in S}P_{ss'}^a\sum_{\mathrm a'\in\mathrm A}\mathrm\pi\left(\mathrm a'\left|\mathrm s'\right.\right){\mathrm q}_{\mathrm\pi}\left(\mathrm s',\mathrm a'\right)
qπ(s,a)=rsa+γ∑s′∈SPss′a∑a′∈Aπ(a′∣s′)qπ(s′,a′) (4)
最优策略求解
我们知道了
v
π
(
s
)
v_{\mathrm\pi}\left(s\right)
vπ(s)和
q
π
(
s
,
a
)
q_{\mathrm\pi}\left(s,a\right)
qπ(s,a)两个式子的关系,下面我们来看看如何通过这两个式子找到最优的策略
π
∗
\pi^\ast
π∗。
我们可以定义最优的状态价值函数是所有策略产生的状态价值函数的最大者,用公式表示为:
v
∗
(
s
)
=
max
π
v
π
(
s
)
{\mathrm v}_\ast\left(\mathrm s\right)=\max_{\mathrm\pi}{\mathrm v}_{\mathrm\pi}\left(\mathrm s\right)
v∗(s)=maxπvπ(s)
同样可以定义最优的状态-行为值函数:
q
∗
(
s
,
a
)
=
max
π
q
π
(
s
,
a
)
q_\ast\left(\mathrm s,\mathrm a\right)=\max_{\mathrm\pi}{\mathrm q}_{\mathrm\pi}\left(\mathrm s,\mathrm a\right)
q∗(s,a)=maxπqπ(s,a)
则根据最优状态-行为值函数,可以定义最优策略为:
π
∗
(
a
∣
s
)
=
{
1
i
f
a
=
arg
max
a
∈
A
q
∗
(
s
,
a
)
0
e
l
s
e
{\mathrm\pi}_\ast\left(\mathrm a\left|\mathrm s\right.\right)=\left\{\begin{array}{l}1\;\mathrm{if}\;\mathrm a=\arg\max_{\mathrm a\in\mathrm A}{\mathrm q}_\ast\left(\mathrm s,\mathrm a\right)\\0\;\mathrm{else}\end{array}\right.
π∗(a∣s)={1ifa=argmaxa∈Aq∗(s,a)0else (5)
根据(1)和(5)可以得到下面的式子:
v
∗
(
s
)
=
max
a
∈
A
q
∗
(
s
,
a
)
{\mathrm v}_\ast\left(\mathrm s\right)=\max_{\mathrm a\in\mathrm A}{\mathrm q}_\ast\left(\mathrm s,\mathrm a\right)
v∗(s)=maxa∈Aq∗(s,a) (6)
再根据(2)和(6)可以得到下面的式子:
q
∗
(
s
,
a
)
=
r
s
a
+
γ
∑
s
′
∈
S
P
s
s
′
a
v
∗
(
s
′
)
{\mathrm q}_\ast\left(\mathrm s,\mathrm a\right)=\mathrm r_{\mathrm s}^{\mathrm a}+\mathrm\gamma\sum_{\mathrm s'\in\mathrm S}\mathrm P_{\mathrm{ss}'}^{\mathrm a}{\mathrm v}_\ast\left(\mathrm s'\right)
q∗(s,a)=rsa+γ∑s′∈SPss′av∗(s′) (7)
那么,和前面的(3)和(4)类似,最终我们可以得到下面两个式子:
v
∗
(
s
)
=
max
a
∈
A
(
r
s
a
+
γ
∑
s
′
∈
S
P
s
s
′
a
v
∗
(
s
′
)
)
{\mathrm v}_\ast\left(s\right)=\max_{a\in A}\left(\mathrm r_{\mathrm s}^{\mathrm a}+\mathrm\gamma\sum_{\mathrm s'\in\mathrm S}\mathrm P_{\mathrm{ss}'}^{\mathrm a}{\mathrm v}_\ast\left(\mathrm s'\right)\right)
v∗(s)=maxa∈A(rsa+γ∑s′∈SPss′av∗(s′)) (8)
q
∗
(
s
,
a
)
=
r
s
a
+
γ
∑
s
′
∈
S
P
s
s
′
a
max
a
′
q
∗
(
s
′
,
a
′
)
{\mathrm q}_\ast\left(\mathrm s,\mathrm a\right)=\mathrm r_{\mathrm s}^{\mathrm a}+\mathrm\gamma\sum_{\mathrm s'\in\mathrm S}\mathrm P_{\mathrm{ss}'}^{\mathrm a}\max_{\mathrm a'}{\mathrm q}_\ast\left(\mathrm s',\mathrm a'\right)
q∗(s,a)=rsa+γ∑s′∈SPss′amaxa′q∗(s′,a′) (9)
上面的式子,是我们理解后续相关算法的基础,虽然看着有点多,但其实是由相关定义推导出来的,建议大家在这里多花点时间去理解。
举个小栗子
讲了这么多公式,下面我们给大家讲一个实际的例子,首先看下图:
上图是一个典型的MDP的例子,由图上我们可以看出,每个状态下可选择的行动都是两个,那么我们这里假设
π
(
a
∣
s
)
=
0.5
\mathrm\pi\left(\mathrm a\left|\mathrm s\right.\right)=0.5
π(a∣s)=0.5,且
γ
=
1
\gamma=1
γ=1。
那么,根据我们前面的公式:
v
π
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
[
r
s
a
+
γ
∑
s
′
∈
S
P
s
s
′
a
v
π
(
s
′
)
]
v_{\mathrm\pi}\left(s\right)=\sum_{a\in A}\mathrm\pi\left(\mathrm a\left|\mathrm s\right.\right)\left[\mathrm r_{\mathrm s}^{\mathrm a}+\mathrm\gamma\sum_{\mathrm s'\in\mathrm S}\mathrm P_{\mathrm{ss}'}^{\mathrm a}{\mathrm v}_{\mathrm\pi}\left(\mathrm s'\right)\right]
vπ(s)=∑a∈Aπ(a∣s)[rsa+γ∑s′∈SPss′avπ(s′)] (3)可以列出如下方程组:
{ v 1 = 0.5 ( − 1 + v 1 ) + 0.5 ( 0 + v 2 ) v 2 = 0.5 ( − 1 + v 1 ) + 0.5 ( − 2 + v 3 ) v 3 = 0.5 ( 0 + 0 ) + 0.5 ( − 2 + v 4 ) v 4 = 0.5 ( 10 + 0 ) + 0.5 ( 1 + 0.2 ∗ v 2 + 0.4 ∗ v 3 + 0.4 ∗ v 4 ) \left\{\begin{array}{l}v_1=0.5\left(-1+v_1\right)+0.5\left(0+v_2\right)\\v_2=0.5\left(-1+v_1\right)+0.5\left(-2+v_3\right)\\v_3=0.5\left(0+0\right)+0.5\left(-2+v_4\right)\\v_4=0.5\left(10+0\right)+0.5\left(1+0.2\ast v_2+0.4\ast v_3+0.4\ast v_4\right)\end{array}\right. ⎩⎪⎪⎨⎪⎪⎧v1=0.5(−1+v1)+0.5(0+v2)v2=0.5(−1+v1)+0.5(−2+v3)v3=0.5(0+0)+0.5(−2+v4)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 \left\{\begin{array}{l}v_1=-2.3\\v_2=-1.3\\v_3=2.7\\v_4=7.4\end{array}\right. ⎩⎪⎪⎨⎪⎪⎧v1=−2.3v2=−1.3v3=2.7v4=7.4
那么,根据公式: q π ( s , a ) = r s a + γ ∑ s ′ ∈ S P s s ′ a v π ( s ′ ) {\mathrm q}_{\mathrm\pi}\left(\mathrm s,\mathrm a\right)=r_s^a+\gamma\sum_{s'\in S}P_{ss'}^av_{\mathrm\pi}\left(s'\right) qπ(s,a)=rsa+γ∑s′∈SPss′avπ(s′) (2)和上面求出的各状态价值,可以得到:
{ q ( s 1 , F a c e b o o k ) = − 1 + v 1 = − 3.3 q ( s 1 , Q u i t ) = 0 + v 2 = − 2.3 ∗ q ( s 2 , F a c e b o o k ) = − 1 + v 1 = − 3.3 q ( s 2 , S t u d y ) = − 2 + v 3 = 0.7 ∗ q ( s 3 , S t u d y ) = − 2 + v 4 = 5.4 ∗ q ( s 3 , S l e e p ) = 0 + 0 = 0 q ( s 4 , S t u d y ) = 10 + 0 = 10 ∗ q ( s 4 , P u b ) = 1 + 0.2 v 2 + 0.4 v 3 + 0.4 v 4 = 4.78 \left\{\begin{array}{l}q\left(s_1,Facebook\right)=-1+v_1=-3.3\\q\left(s_1,Quit\right)=0+v_2=-2.3\;\;\ast\\q\left(s_2,Facebook\right)=-1+v_1=-3.3\\q\left(s_2,Study\right)=-2+v_3=0.7\;\;\ast\\q\left(s_3,Study\right)=-2+v_4=5.4\;\;\ast\\q\left(s_3,Sleep\right)=0+0=0\\q\left(s_4,Study\right)=10+0=10\;\;\ast\\q\left(s_4,Pub\right)=1+0.2v_2+0.4v_3+0.4v_4=4.78\end{array}\right. ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧q(s1,Facebook)=−1+v1=−3.3q(s1,Quit)=0+v2=−2.3∗q(s2,Facebook)=−1+v1=−3.3q(s2,Study)=−2+v3=0.7∗q(s3,Study)=−2+v4=5.4∗q(s3,Sleep)=0+0=0q(s4,Study)=10+0=10∗q(s4,Pub)=1+0.2v2+0.4v3+0.4v4=4.78
由公式(5)可以得到本题的最优策略为:
{Quit, Study, Study, Study}
其实大家可以发现,根据前面的公式,最优策略的计算方法很多,有兴趣的童鞋可以使用其他公式来进行计算。