马尔可夫决策过程
- 马尔可夫过程
- 马尔可夫性值
- 马尔科夫过程
- 马尔可夫奖励过程
- 回报与价值函数
- 贝尔曼方程
- 马尔可夫决策过程
- 策略
- 马尔科夫决策过程中的价值函数
- 状态价值函数和动作价值函数的 关系
- 贝尔曼期望方程
- 最优价值函数
- 最优策略
- 寻找最优策略
- 贝尔曼最优方程
马尔可夫过程
马尔可夫性值
在随机过程中,马尔可夫性质(Markov property)是指一个随机过程在给定现在状态及所有过去状态情况下,其未来状态的条件概率分布仅依赖于当前状态。即
P
(
s
t
+
1
∣
s
t
)
=
P
(
s
t
+
1
∣
s
1
,
⋯
,
s
t
)
P(s_{t+1}|s_t)=P(s_{t+1}|s_1,\cdots,s_t)
P(st+1∣st)=P(st+1∣s1,⋯,st)
马尔科夫过程
马尔可夫过程是一组具有马尔可夫性质的随机变量序列
s
1
,
⋯
,
s
t
s_1,\cdots,s_t
s1,⋯,st,其中下一个时刻的状态
s
t
+
1
s_{t+1}
st+1只取决于当前状态
s
t
s_t
st。我们设状态的历史为
h
t
=
{
s
1
,
s
2
,
.
.
.
.
.
.
,
s
t
}
h_t=\{s_1,s_2,......,s_t\}
ht={s1,s2,......,st}(
h
t
h_t
ht包含了之前的所有状态),则马尔可夫过程满足条件:
p
(
s
t
+
1
∣
s
t
)
=
p
(
s
t
+
1
∣
h
t
)
(1)
p(s_{t+1}|s_t)=p(s_{t+1}|h_t) \tag{1}
p(st+1∣st)=p(st+1∣ht)(1)
从当前
s
t
s_t
st转移到
s
t
+
1
s_{t+1}
st+1,它是直接就等于它之前所有的状态转移到
s
t
+
1
s_{t+1}
st+1。
离散时间的马尔可夫过程也称为马尔可夫链(Markov chain)。马尔可夫链是最简单的马尔可夫过程,其状态是有限的。例如,下图里面有4个状态,这4个状态在
s
1
,
s
2
,
s
3
,
s
4
s_1,s_2,s_3,s_4
s1,s2,s3,s4之间相互转移。比如从
s
1
s_1
s1开始,
s
1
s_1
s1有 0.1 的概率继续存留在
s
1
s_1
s1状态,有 0.2 的概率转移到
s
2
s_2
s2,有 0.7 的概率转移到
s
4
s_4
s4。
我们可以用状态转移矩阵(state transition matrix)
P
P
P 来描述状态转移
p
(
s
t
+
1
=
s
′
∣
s
t
=
s
)
p(s_{t+1}=s^{′} | s_t=s)
p(st+1=s′∣st=s)
P
=
(
p
(
s
1
∣
s
1
)
p
(
s
2
∣
s
1
)
.
.
.
p
(
s
N
∣
s
1
)
p
(
s
1
∣
s
2
)
p
(
s
2
∣
s
2
)
.
.
.
p
(
s
N
∣
s
2
)
⋮
⋮
⋱
⋮
p
(
s
1
∣
s
N
)
p
(
s
2
∣
s
N
)
.
.
.
p
(
s
N
∣
s
N
)
)
P=\begin{pmatrix} p(s_1|s_1)&p(s_2|s_1)&...&p(s_N|s_1)\\ p(s_1|s_2)&p(s_2|s_2)&...&p(s_N|s_2)\\ ⋮&⋮&⋱&⋮\\ p(s_1|s_N)&p(s_2|s_N)&...&p(s_N|s_N)\\ \end{pmatrix}
P=
p(s1∣s1)p(s1∣s2)⋮p(s1∣sN)p(s2∣s1)p(s2∣s2)⋮p(s2∣sN)......⋱...p(sN∣s1)p(sN∣s2)⋮p(sN∣sN)
状态转移矩阵类似于条件概率(conditional probability),它表示当我们知道当前我们在状态
s
1
s_1
s1时,到达下面所有状态的概率。所以它的每一行描述的是从一个节点到达所有其他节点的概率。
马尔可夫奖励过程
马尔可夫奖励过程(Markov reward process, MRP)是马尔可夫链加上奖励函数。在马尔可夫奖励过程中,状态转移矩阵和状态都与马尔可夫链一样,只是多了奖励函数(reward function)。奖励函数
R
R
R是一个 期望,表示当我们到达某一个状态的时候,可以获得多大的奖励。
R
(
s
)
=
E
[
R
t
+
1
∣
s
t
=
s
]
R(s)=E[R_{t+1}|s_t=s]
R(s)=E[Rt+1∣st=s]
回报与价值函数
回报(return)可以定义为奖励的逐步叠加,假设时刻
t
t
t后的奖励序列为
r
t
+
1
,
r
t
+
2
,
r
t
+
3
,
⋯
,
r_{t+1},r_{t+2},r_{t+3},\cdots,
rt+1,rt+2,rt+3,⋯,则回报为
G
t
=
r
t
+
1
+
γ
r
t
+
2
+
γ
2
r
t
+
3
+
γ
3
r
t
+
4
+
⋯
+
γ
T
−
t
−
1
r
T
G_t=r_{t+1}+γr_{t+2}+γ^2r_{t+3}+γ^3r_{t+4}+\cdots+γ^{T-t-1}r_{T}
Gt=rt+1+γrt+2+γ2rt+3+γ3rt+4+⋯+γT−t−1rT
其中,
T
T
T是最终时刻,
γ
γ
γ是折扣因子,越往后得到的奖励折扣越多。这说明我们更希望得到现有的奖励,对未来的奖励要打折扣。当我们有了回报之后,就可以定义状态的价值了,就是状态价值函数(state-value function)。对于马尔可夫奖励过程,状态价值函数被定义成回报的期望,即
V
t
(
s
)
=
E
[
G
t
∣
s
t
=
s
]
=
E
[
r
t
+
1
+
γ
r
t
+
2
+
γ
2
r
t
+
3
+
γ
3
r
t
+
4
+
.
.
.
+
γ
T
−
t
−
1
r
T
∣
s
t
=
s
]
\begin{aligned} V^t(s)&=E[G_t|s_t=s] \\ &=E[r_{t+1}+γr_{t+2}+γ^2r_{t+3}+γ^3r_{t+4}+...+γ^{T-t-1}r_{T}|s_t=s] \end{aligned}
Vt(s)=E[Gt∣st=s]=E[rt+1+γrt+2+γ2rt+3+γ3rt+4+...+γT−t−1rT∣st=s]
其中,
G
t
G_t
Gt是之前定义的折扣回报(discounted return)。我们对
G
t
G_t
Gt取了一个期望,期望就是从这个状态开始,我们可能获得多大的价值。
我们使用折扣因子的原因如下。第一,有些马尔可夫过程是带环的,它并不会终结,我们想避免无穷的奖励。第二,我们并不能建立完美的模拟环境的模型,我们对未来的评估不一定是准确的,我们不一定完全信任模型,因为这种不确定性,所以我们对未来的评估增加一个折扣。我们想把这个不确定性表示出来,希望尽可能快地得到奖励,而不是在未来某一个点得到奖励。第三,如果奖励是有实际价值的,我们可能更希望立刻就得到奖励,而不是后面再得到奖励(现在的钱比以后的钱更有价值)。最后,我们也更想得到即时奖励。有些时候可以把折扣因子设为 0,我们就只关注当前的奖励。我们也可以把折扣因子设为 1,对未来的奖励并没有打折扣,未来获得的奖励与当前获得的奖励是一样的。折扣因子可以作为强化学习智能体的一个超参数(hyperparameter)来进行调整,通过调整折扣因子,我们可以得到不同动作的智能体。
下面是一个计算回报的例子。如图所示,智能体进入第一个状态
s
1
s_1
s1的时候会得到 5 的奖励,进入第七个状态
s
7
s_7
s7的时候会得到 10 的奖励,进入其他状态都没有奖励。我们可以用向量来表示奖励函数,即
R
=
[
5
,
0
,
0
,
0
,
0
,
0
,
10
]
R=[5,0,0,0,0,0,10]
R=[5,0,0,0,0,0,10]
我们对 4 步的** 回合 **(episode)(
γ
=
0.5
γ=0.5
γ=0.5)来采样回报
G
G
G。
( 1 ) s 4 , s 5 , s 6 , s 7 的回报 : 0 + 0.5 × 0 + 0.25 × 0 + 0.125 × 10 = 1.25 (1) s_4,s_5,s_6,s_7的回报:0+0.5×0+0.25×0+0.125×10=1.25 (1)s4,s5,s6,s7的回报:0+0.5×0+0.25×0+0.125×10=1.25
( 2 ) s 4 , s 3 , s 2 , s 1 的回报 : 0 + 0.5 × 0 + 0.25 × 0 + 0.125 × 5 = 0.625 (2) s_4,s_3,s_2,s_1的回报:0+0.5×0+0.25×0+0.125×5=0.625 (2)s4,s3,s2,s1的回报:0+0.5×0+0.25×0+0.125×5=0.625
( 3 ) s 4 , s 5 , s 6 , s 6 的回报 : 0 + 0.5 × 0 + 0.25 × 0 + 0.125 × 0 = 0 (3) s_4,s_5,s_6,s_6的回报:0+0.5×0+0.25×0+0.125×0=0 (3)s4,s5,s6,s6的回报:0+0.5×0+0.25×0+0.125×0=0
我们现在可以计算每一个回合得到的奖励,比如我们对轨迹 s 4 , s 5 , s 6 , s 7 s_4,s_5,s_6,s_7 s4,s5,s6,s7的奖励进行计算,这里折扣因子是 0.5。在 s 4 s_4 s4的时候,奖励为0。下一个状态 s 5 s_5 s5的时候,因为我们已经到了下一步,所以要把 s 5 s_5 s5进行折扣, s 5 s_5 s5的奖励也是0。然后是 s 6 s_6 s6,奖励也是0,折扣因子应该是0.25。到达 s 7 s_7 s7后,我们获得了一个奖励,但是因为状态 s 7 s_7 s7的奖励是未来才获得的奖励,所以我们要对之进行3次折扣。最终这个轨迹的回报就是 1.25。类似地,我们可以得到其他轨迹的回报。
当我们有了一些轨迹的实际回报时,怎么计算它的价值函数呢?比如我们想知道 s 4 s_4 s4的价值,即当我们进入 s 4 s_4 s4后,它的价值到底如何?一个可行的做法就是我们可以生成很多轨迹,然后把轨迹都叠加起来。比如我们可以从 s 4 s_4 s4开始,采样生成很多轨迹,把这些轨迹的回报都计算出来,然后将其取平均值作为我们进入 s 4 s_4 s4的价值。这其实是一种计算价值函数的办法,也就是通过蒙特卡洛(Monte Carlo,MC)采样的方法计算 s 4 s_4 s4的价值。
贝尔曼方程
此外,我们可以使用贝尔曼方程求解价值函数。贝尔曼方程就是当前状态与未来状态的迭代关系,表示当前状态的价值函数可以通过下个状态的价值函数来计算。贝尔曼方程(Bellman equation)如下:
V
(
s
)
=
R
(
s
)
⏟
及时奖励
+
γ
∑
s
′
∈
S
p
(
s
′
∣
s
)
V
(
s
′
)
⏟
未来奖励的折扣总和
V(s)=\underbrace{R(s)}_{\text{及时奖励}}+\underbrace{γ\sum_{s^{'}∈S}p(s^{'}|s)V(s^{'})}_{\text{未来奖励的折扣总和}}
V(s)=及时奖励
R(s)+未来奖励的折扣总和
γs′∈S∑p(s′∣s)V(s′)
其中,
- s ′ s^{'} s′可以看成未来的所有状态
- p ( s ′ ∣ s ) p(s^{'}|s) p(s′∣s)是指从当前状态转移到未来状态的概率
- V ( s ′ ) V(s^{'}) V(s′)代表的是未来某一个状态的价值。我们从当前状态开始,有一定的概率去到未来的所有状态,所以我们要把 p ( s ′ ∣ s ) p(s^{'}|s) p(s′∣s)写上去。我们得到了未来状态后,乘一个 γ γ γ,这样就可以把未来的奖励打折扣。
- γ ∑ s ′ ∈ S p ( s ′ ∣ s ) V ( s ′ ) γ\sum_{s^{'}∈S}p(s^{'}|s)V(s^{'}) γ∑s′∈Sp(s′∣s)V(s′)可以看成未来奖励的折扣总和(discounted sum of future reward)。
贝尔曼方程的推导过程如下:
V t ( s ) = E [ G t ∣ s t = s ] = E [ r t + 1 + γ r t + 2 + γ 2 r t + 3 + . . . ∣ s t = s ] = E [ r t + 1 ∣ s t = s ] + γ E [ r t + 2 + γ r t + 3 + γ 2 r t + 4 + . . . ∣ s t = s ] = R ( s ) + γ E [ G t + 1 ∣ s t = s ] = R ( s ) + γ E [ V ( s t + 1 ∣ s t = s ) ] = R ( s ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s ) V ( s ′ ) \begin{aligned} V^t(s)&=E[G_t|s_t=s] \\ &=E[r_{t+1}+γr_{t+2}+γ^2r_{t+3}+...|s_t=s]\\ &=E[r_{t+1}|s_t=s]+γE[r_{t+2}+γr_{t+3}+γ^2r_{t+4}+...|s_t=s]\\ &=R(s)+γE[G_{t+1}|s_t=s]\\ &=R(s)+γE[V(s_{t+1}|s_t=s)]\\ &=R(s)+γ\sum_{s^{'}∈S}p(s^{'}|s)V(s^{'}) \end{aligned} Vt(s)=E[Gt∣st=s]=E[rt+1+γrt+2+γ2rt+3+...∣st=s]=E[rt+1∣st=s]+γE[rt+2+γrt+3+γ2rt+4+...∣st=s]=R(s)+γE[Gt+1∣st=s]=R(s)+γE[V(st+1∣st=s)]=R(s)+γs′∈S∑p(s′∣s)V(s′)
例子:假设有一个马尔可夫链如下图所示,计算红色框的 价值 ?
我们可以把贝尔曼方程写成矩阵的形式:
(
V
(
s
1
)
V
(
s
2
)
⋮
V
(
s
N
)
)
=
(
R
(
s
1
)
R
(
s
2
)
⋮
R
(
s
N
)
)
+
γ
(
p
(
s
1
∣
s
1
)
p
(
s
2
∣
s
1
)
…
p
(
s
N
∣
s
1
)
p
(
s
1
∣
s
2
)
p
(
s
2
∣
s
2
)
…
p
(
s
N
∣
s
2
)
⋮
⋮
⋱
⋮
p
(
s
1
∣
s
N
)
p
(
s
2
∣
s
N
)
…
p
(
s
N
∣
s
N
)
)
(
V
(
s
1
)
V
(
s
2
)
⋮
V
(
s
N
)
)
\begin{pmatrix} V(s_1) \\ V(s_2) \\ \vdots\\ V(s_N) \end{pmatrix}= \begin{pmatrix} R(s_1) \\ R(s_2) \\ \vdots\\ R(s_N) \end{pmatrix}+γ \begin{pmatrix} p(s_1|s_1)&p(s_2|s_1)&\dots&p(s_N|s_1)\\ p(s_1|s_2)&p(s_2|s_2)&\dots&p(s_N|s_2)\\ \vdots&\vdots&\ddots&\vdots\\ p(s_1|s_N)&p(s_2|s_N)&\dots&p(s_N|s_N) \end{pmatrix} \begin{pmatrix} V(s_1)\\ V(s_2)\\ \vdots\\ V(s_N) \end{pmatrix}
V(s1)V(s2)⋮V(sN)
=
R(s1)R(s2)⋮R(sN)
+γ
p(s1∣s1)p(s1∣s2)⋮p(s1∣sN)p(s2∣s1)p(s2∣s2)⋮p(s2∣sN)……⋱…p(sN∣s1)p(sN∣s2)⋮p(sN∣sN)
V(s1)V(s2)⋮V(sN)
我们当前的状态是向量 [ V ( s 1 ) , V ( s 2 ) , ⋯ , V ( s N ) ] T [V(s_1),V(s_2),\cdots,V(s_N)]^{T} [V(s1),V(s2),⋯,V(sN)]T。每一行来看,向量 V V V乘状态转移矩阵里面的某一行,再加上它当前可以得到的奖励,就会得到它当前的价值。
当我们把贝尔曼方程写成矩阵形式后,可以直接求解:
V
=
R
+
γ
P
V
I
V
=
R
+
γ
P
V
(
I
−
γ
P
)
V
=
R
V
=
(
I
−
γ
P
)
−
1
R
\begin{aligned} &V=R+γPV\\ &IV=R+γPV\\ &(I-γP)V=R\\ &V=(I-γP)^{-1}R \end{aligned}
V=R+γPVIV=R+γPV(I−γP)V=RV=(I−γP)−1R
我们可以通过矩阵求逆把
V
V
V的价值直接求出来。但是一个问题是这个矩阵求逆的过程的复杂度是
O
(
N
3
)
O(N^3)
O(N3)。所以当状态非常多的时候,比如从10个状态到1000个状态,或者到100万个状态,当我们有100万个状态的时候,状态转移矩阵就会是一个100万乘100万的矩阵,对这样一个大矩阵求逆是非常困难的。所以这种方法只适用于很小量的马尔可夫奖励过程。
马尔可夫决策过程
相对于马尔可夫奖励过程,马尔可夫决策过程(Markov decision process, MDP)多了决策(决策是指动作),其他的定义与马尔可夫奖励过程的是类似的。此外,状态转移也多了一个条件,变成了
p
(
s
t
+
1
=
s
′
∣
s
t
=
s
,
a
t
=
a
)
p(s_{t+1}=s^{'}|s_t=s,a_t=a)
p(st+1=s′∣st=s,at=a),表示未来的状态不仅依赖于当前的状态,也依赖于在当前状态智能体采取的动作。马尔可夫决策过程满足条件:
p
(
s
t
+
1
∣
s
t
,
a
t
)
=
p
(
s
t
+
1
∣
h
t
,
a
t
)
p(s_{t+1}|s_t,a_t)=p(s_{t+1}|h_t,a_t)
p(st+1∣st,at)=p(st+1∣ht,at)
对于奖励函数,它也多了一个当前的动作,变成了
R
(
s
t
=
s
,
a
t
=
a
)
=
E
[
r
t
∣
s
t
=
s
,
a
t
=
a
]
R(s_t=s,a_t=a)=E[r_t|s_t=s,a_t=a]
R(st=s,at=a)=E[rt∣st=s,at=a]
当前的状态以及采取的动作会决定智能体在当前可能得到的奖励多少。
策略
策略
π
π
π是一个函数,表示输入状态为
s
s
s的情况下采取动作
a
a
a的概率。
π
(
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)
概率代表在所有可能的动作里面怎样采取行动,比如可能有 0.7 的概率往左走,有 0.3 的概率往右走,这是一个概率的表示。另外策略也可能是确定的,它有可能直接输出一个值,或者直接告诉我们当前应该采取什么样的动作,而不是一个动作的概率。
已知马尔可夫决策过程和策略
π
π
π,我们可以把马尔可夫决策过程转换成马尔可夫奖励过程。在马尔可夫决策过程里面,状态转移函数
P
(
s
′
∣
s
,
a
)
P(s^{'}|s,a)
P(s′∣s,a)基于它当前的状态以及它当前的动作。因为我们现在已知策略函数,也就是已知在每一个状态下,可能采取的动作的概率,所以我们就可以直接把动作进行加和,去掉
a
a
a,这样我们就可以得到对于马尔可夫奖励过程的转移,这里就没有动作,即
P
π
(
s
′
∣
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
p
(
s
′
∣
s
,
a
)
P_π(s^{'}|s)=\sum_{a∈A}π(a|s)p(s^{'}|s,a)
Pπ(s′∣s)=a∈A∑π(a∣s)p(s′∣s,a)
对于奖励函数,我们也可以把动作去掉,这样就会得到类似于马尔可夫奖励过程的奖励函数,即
R
π
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
R
(
s
,
a
)
R_π(s)=\sum_{a∈A}π(a|s)R(s,a)
Rπ(s)=a∈A∑π(a∣s)R(s,a)
马尔科夫决策过程中的价值函数
马尔可夫决策过程中的状态价值函数定义
V
π
(
s
)
=
E
π
[
G
t
∣
s
t
=
s
]
(2)
V_π(s)=E_π[G_t|s_t=s] \tag{2}
Vπ(s)=Eπ[Gt∣st=s](2)
状态价值函数
V
π
(
s
)
V_π(s)
Vπ(s)是从状态
s
s
s出发,遵循策略
π
π
π得到的期望回报。
马尔可夫决策过程中的动作价值函数定义
Q
π
(
s
,
a
)
=
E
π
[
G
t
∣
s
t
=
s
,
a
t
=
a
]
(3)
Q_π(s,a)=E_π[G_t|s_t=s,a_t=a] \tag{3}
Qπ(s,a)=Eπ[Gt∣st=s,at=a](3)
动作价值函数
Q
π
(
s
,
a
)
Q_π(s,a)
Qπ(s,a)是从状态
s
s
s开始,遵循策略
π
π
π,对当前状态
s
s
s执行动作
a
a
a得到的期望回报。
状态价值函数和动作价值函数的 关系
状态价值函数的期望是基于策略函数的,所以对策略函数进行一个加和,然后得到它的价值。对动作价值函数中的动作进行加和,就可以得到状态价值函数:
V
π
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
Q
π
(
s
,
a
)
(4)
V_π(s)=\sum_{a∈A}π(a|s)Q_π(s,a) \tag{4}
Vπ(s)=a∈A∑π(a∣s)Qπ(s,a)(4)
对动作价值函数而言:
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
]
=
E
[
r
t
+
1
∣
s
t
=
s
,
a
t
=
a
]
+
γ
E
[
r
t
+
2
+
γ
r
t
+
3
+
γ
2
r
t
+
4
+
⋯
∣
s
t
=
s
,
a
t
=
a
]
=
R
(
s
,
a
)
+
γ
E
[
G
t
+
1
∣
s
t
=
s
,
a
t
=
a
]
=
R
(
s
,
a
)
+
γ
E
[
V
(
s
t
+
1
∣
s
t
=
s
,
a
t
=
a
)
]
=
R
(
s
,
a
)
+
γ
∑
s
′
∈
S
p
(
s
′
∣
s
,
a
)
V
(
s
′
)
\begin{aligned} Q(s,a)&=E[G_t|s_t=s,a_t=a]\\ &=E[r_{t+1}+γr_{t+2}+γ^2r_{t+3}+\cdots|s_t=s,a_t=a]\\ &=E[r_{t+1}|s_t=s,a_t=a]+γE[r_{t+2}+γr_{t+3}+γ^2r_{t+4}+\cdots|s_t=s,a_t=a]\\ &=R(s,a)+γE[G_{t+1}|s_t=s,a_t=a]\\ &=R(s,a)+γE[V(s_{t+1}|s_t=s,a_t=a)]\\ &=R(s,a)+γ\sum_{s^{'}∈S}p(s^{'}|s,a)V(s^{'}) \end{aligned}
Q(s,a)=E[Gt∣st=s,at=a]=E[rt+1+γrt+2+γ2rt+3+⋯∣st=s,at=a]=E[rt+1∣st=s,at=a]+γE[rt+2+γrt+3+γ2rt+4+⋯∣st=s,at=a]=R(s,a)+γE[Gt+1∣st=s,at=a]=R(s,a)+γE[V(st+1∣st=s,at=a)]=R(s,a)+γs′∈S∑p(s′∣s,a)V(s′)
贝尔曼期望方程
我们可以把状态价值函数和动作价值函数拆解成两个部分:即时奖励和后续状态的折扣价值(discounted value of successor state)。通过对状态价值函数进行分解,我们就可以得到一个类似于之前马尔可夫奖励过程的贝尔曼方程————贝尔曼期望方程(Bellman expectation equation):
V
π
(
s
)
=
E
π
[
r
t
+
1
+
γ
V
π
(
s
t
+
1
)
∣
s
t
=
s
]
(5)
V_π(s)=E_π[r_{t+1}+γV_π(s_{t+1})|s_t=s] \tag{5}
Vπ(s)=Eπ[rt+1+γVπ(st+1)∣st=s](5)
对于动作价值函数,我们也可以做类似的分解,得到动作价值函数的贝尔曼期望方程:
Q
π
(
s
,
a
)
=
E
π
[
r
t
+
1
+
γ
Q
π
(
s
t
+
1
,
a
t
+
1
)
∣
s
t
=
s
,
a
t
=
a
]
(6)
Q_π(s,a)=E_π[r_{t+1}+γQ_π(s_{t+1},a_{t+1})|s_t=s,a_t=a] \tag{6}
Qπ(s,a)=Eπ[rt+1+γQπ(st+1,at+1)∣st=s,at=a](6)
贝尔曼期望方程定义了当前状态与未来状态之间的关联。
我们进一步进行简单的分解,先给出式(7):
V
π
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
Q
π
(
s
,
a
)
(7)
V_π(s)=\sum_{a∈A}π(a|s)Q_π(s,a) \tag{7}
Vπ(s)=a∈A∑π(a∣s)Qπ(s,a)(7)
接着,我们再给出式(8):
Q
π
(
s
,
a
)
=
R
(
s
,
a
)
+
γ
∑
s
′
∈
S
p
(
s
′
∣
s
,
a
)
V
π
(
s
′
)
(8)
Q_π(s,a)=R(s,a)+γ\sum_{s^{'}∈S}p(s^{'}|s,a)V_ π(s^{'}) \tag{8}
Qπ(s,a)=R(s,a)+γs′∈S∑p(s′∣s,a)Vπ(s′)(8)
式(7)和式(8)代表状态价值函数与动作价值函数之间的关系。
我们把式(8)代入式(7)可得
V
π
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
(
R
(
s
,
a
)
+
γ
∑
s
′
∈
S
p
(
s
′
∣
s
,
a
)
V
π
(
s
′
)
)
(9)
V_π(s)=\sum_{a∈A}π(a|s)\left( R(s,a)+γ\sum_{s^{'}∈S}p(s^{'}|s,a)V_π(s^{'}) \right ) \tag{9}
Vπ(s)=a∈A∑π(a∣s)
R(s,a)+γs′∈S∑p(s′∣s,a)Vπ(s′)
(9)
式(9)代表当前状态的价值与未来状态价值之间的关联。
我们把式(7)代入式(8)可得
Q
π
(
s
,
a
)
=
R
(
s
,
a
)
+
γ
∑
s
′
∈
S
p
(
s
′
∣
s
,
a
)
∑
a
′
∈
A
π
(
a
′
∣
s
′
)
Q
π
(
s
′
,
a
′
)
(10)
Q_π(s,a)=R(s,a)+γ\sum_{s^{'}∈S}p(s^{'}|s,a)\sum_{a^{'}∈A}π(a^{'}|s^{'})Q_π(s^{'},a^{'}) \tag{10}
Qπ(s,a)=R(s,a)+γs′∈S∑p(s′∣s,a)a′∈A∑π(a′∣s′)Qπ(s′,a′)(10)
式(10)代表当前时刻的动作价值函数与未来时刻的动作价值函数之间的关联。
式(9)和式(10)是贝尔曼期望方程的另一种形式。
例子,如下图所示,求红色框的 价值?
再比如,左边的-1.3这个状态是 怎么来的 ?
最优价值函数
在马尔可夫决策过程中,最优价值函数分为两种:最优状态值函数和最优动作值函数。
最优状态价值函数是所有策略产生的状态价值函数中,使状态
s
s
s价值最大的函数:
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)
最优价值函数明确了MDP的最优可能表现。一旦最优价值函数知晓,则认为MDP已完成求解。
最优策略
最优价值函数是指我们搜索一种策略
π
π
π让每个状态的价值最大,在这种最大化情况中,我们得到的策略就是最优策略,即
π
∗
(
s
)
=
arg
max
π
V
π
(
s
)
π^*(s)=\arg\max_πV_π(s)
π∗(s)=argπmaxVπ(s)
寻找最优策略
最优策略使得每个状态的价值函数都取得最大值。所以如果我们可以得到一个最优价值函数,就可以认为某个马尔可夫决策过程的环境可解。在这种情况下,最优价值函数是一致的,环境中可达到的上限的值是一致的,但这里可能有多个最优策略,多个最优策略可以取得相同的最优价值。
当取得最优动作价值函数后,我们可以通过对动作价值函数进行最大化来得到最优策略:
π
∗
(
a
∣
s
)
=
{
1
,
a
=
arg
max
a
∈
A
Q
∗
(
s
,
a
)
0
,
其他
π^*(a|s)=\left\{ \begin{aligned} 1,&a=\arg\max_{a∈A}Q^*(s,a)\\ 0,&其他 \end{aligned} \right.
π∗(a∣s)=⎩
⎨
⎧1,0,a=arga∈AmaxQ∗(s,a)其他
当动作价值函数收敛后,因为动作价值函数是关于状态与动作的函数,所以如果在某个状态采取某个动作,可以使得动作价值函数最大化,那么这个动作就是最佳的动作。如果我们能优化出一个动作价值函数
Q
∗
(
s
,
a
)
Q^*(s,a)
Q∗(s,a),就可以直接在动作价值函数中取一个让动作价值函数值最大化的动作的值,就可以提取出最佳策略。
怎样进行策略搜索?最简单的策略搜索方法就是穷举。假设状态和动作都是有限的,那么每个状态我们可以采取 A A A种动作的策略,总共就是 ∣ A ∣ ∣ S ∣ |A|^{|S|} ∣A∣∣S∣个可能的策略。我们可以把策略穷举一遍,算出每种策略的价值函数,对比一下就可以得到最佳策略。
但是穷举非常没有效率,所以我们要采取其他方法。
贝尔曼最优方程
贝尔曼最优方程(Bellman optimality equation)如下
V
π
(
s
)
=
max
a
∈
A
Q
π
(
s
,
a
)
V_π(s)=\max_{a∈A}Q_π(s,a)
Vπ(s)=a∈AmaxQπ(s,a)
贝尔曼最优方程表明:最佳策略下的一个状态的价值必须等于在这个状态下采取最好动作得到的回报的期望。当马尔可夫决策过程满足贝尔曼最优方程的时候,整个马尔可夫决策过程已经达到最佳的状态。
只有当整个状态已经收敛后,我们得到最佳价值函数后,贝尔曼最优方程才会满足。满足贝尔曼最优方程后,我们可以采用最大化操作,即
V
∗
(
s
)
=
max
a
Q
∗
(
s
,
a
)
(12)
V^*(s)=\max_{a}Q^*(s,a) \tag{12}
V∗(s)=amaxQ∗(s,a)(12)
当我们取让 Q 函数值最大化的动作对应的值就是当前状态的最佳的价值函数的值。另外,我们给出 Q 函数的贝尔曼方程
Q
∗
(
s
,
a
)
=
R
(
s
,
a
)
+
γ
∑
s
′
∈
S
p
(
s
′
∣
s
,
a
)
V
∗
(
s
′
)
(13)
Q^*(s,a)=R(s,a)+γ\sum_{s^{'}∈S}p(s^{'}|s,a)V^*(s^{'}) \tag{13}
Q∗(s,a)=R(s,a)+γs′∈S∑p(s′∣s,a)V∗(s′)(13)
我们把式(12)代入式(13)可得
Q
∗
(
s
,
a
)
=
R
(
s
,
a
)
+
γ
∑
s
′
∈
S
p
(
s
′
∣
s
,
a
)
V
∗
(
s
′
)
=
R
(
s
,
a
)
+
γ
∑
s
′
∈
S
p
(
s
′
∣
s
,
a
)
max
a
Q
∗
(
s
′
,
a
′
)
\begin{aligned} Q^*(s,a)&=R(s,a)+γ\sum_{s^{'}∈S}p(s^{'}|s,a)V^*(s^{'}) \\ &=R(s,a)+γ\sum_{s^{'}∈S}p(s^{'}|s,a)\max_aQ^*(s^{'},a^{'}) \end{aligned}
Q∗(s,a)=R(s,a)+γs′∈S∑p(s′∣s,a)V∗(s′)=R(s,a)+γs′∈S∑p(s′∣s,a)amaxQ∗(s′,a′)
我们就可以得到 Q 函数之间的转移。Q学习是基于贝尔曼最优方程来进行的,当取Q函数值最大的状态(
max
a
′
Q
∗
(
s
′
,
a
′
)
\max_{a^{'}}Q^*(s^{'},a^{'})
maxa′Q∗(s′,a′))的时候可得
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(s^{'}|s,a)\max_{a^{'}}Q^*(s^{'},a^{'})
Q∗(s,a)=R(s,a)+γs′∈S∑p(s′∣s,a)a′maxQ∗(s′,a′)
我们还可以把式(13)代入式(12)可得
V
∗
(
s
)
=
max
a
Q
∗
(
s
,
a
)
=
max
a
E
[
G
t
∣
s
t
=
s
,
a
t
=
a
]
=
max
a
E
[
r
t
+
1
+
γ
G
t
+
1
∣
s
t
=
s
,
a
t
=
a
]
=
max
a
E
[
r
t
+
1
+
γ
V
∗
(
s
t
+
1
)
∣
s
t
=
s
,
a
t
=
a
]
=
max
a
E
[
r
t
+
1
]
+
max
a
E
[
γ
V
∗
(
s
t
+
1
)
∣
s
t
=
s
,
a
t
=
a
]
=
max
a
R
(
s
,
a
)
+
max
a
γ
∑
s
′
∈
S
p
(
s
′
∣
s
,
a
)
V
∗
(
s
′
)
=
max
a
(
R
(
s
,
a
)
+
γ
∑
s
′
∈
S
p
(
s
′
∣
s
,
a
)
V
∗
(
s
′
)
)
\begin{aligned} V^*(s)&=\max_aQ^*(s,a)\\ &=\max_aE[G_t|s_t=s,a_t=a]\\ &=\max_aE[r_{t+1}+γG_{t+1}|s_t=s,a_t=a]\\ &=\max_aE[r_{t+1}+γV^*(s_{t+1})|s_t=s,a_t=a]\\ &=\max_aE[r_{t+1}]+\max_aE[γV^*(s_{t+1})|s_t=s,a_t=a]\\ &=\max_aR(s,a)+\max_aγ\sum_{s^{'}∈S}p(s^{'}|s,a)V^*(s^{'})\\ &=\max_a\left( R(s,a)+γ\sum_{s^{'}∈S}p(s^{'}|s,a)V^*(s^{'}) \right) \end{aligned}
V∗(s)=amaxQ∗(s,a)=amaxE[Gt∣st=s,at=a]=amaxE[rt+1+γGt+1∣st=s,at=a]=amaxE[rt+1+γV∗(st+1)∣st=s,at=a]=amaxE[rt+1]+amaxE[γV∗(st+1)∣st=s,at=a]=amaxR(s,a)+amaxγs′∈S∑p(s′∣s,a)V∗(s′)=amax
R(s,a)+γs′∈S∑p(s′∣s,a)V∗(s′)
例子,使用贝尔曼最优方程求下面 ?的价值
贝尔曼最优方程是非线性的,不能使用与策略优化相同的直接矩阵解决方案,可以通过一些其他迭代方法来求解。
- 价值迭代
- 策略迭代
- Q-learning
- Sarsa