文章目录
- 参考资料
- 前言
- 1. Markov Process(MP)
- 2. Markov Reward Process(MRP)
- 3. Markov Decision Process(MDP)
- 3.1 MDP
- 3.2 Policy in MDP
- 3.3 Comparison of MP/MRP and MDP
- 3.4 Value function for MDP
- 3.5 Bellman Expectation Equation
- 3.6 Backup Diagram
- 3.7 Policy Evaluation(Prediction)
- 3.8 Prediction and Control
- 3.9 Dynamic Programming
- 3.10 Policy Evaluation on MDP
- 3.11 MDP Control
- 3.12 Policy Iteration
- 3.13 Value Iteration
- 3.14 policy iteration VS value iteration
- 3.15 Summary for Prediction and Control in MDP
参考资料
EasyRL 书本
前言
- 在介绍马尔可夫决策过程之前,先介绍它的简化版本:马尔可夫链以及马尔可夫奖励过程,通过跟这两种过程的比较,我们可以更容易理解马尔可夫决策过程。
- 第二部分会介绍马尔可夫决策过程中的
policy evaluation
,就是当给定一个决策过后,怎么去计算它的价值函数。 - 第三部分会介绍马尔可夫决策过程的控制,具体有两种算法:
policy iteration
和value iteration
。
1. Markov Process(MP)
1.1 Markov Property
-
如果一个状态转移是符合马尔可夫的,那就是说一个状态的下一个状态只取决于它当前状态,而跟它当前状态之前的状态都没有关系。
-
我们设状态的历史为 h t = { s 1 , s 2 , s 3 , … , s t } h_{t}=\left\{s_{1}, s_{2}, s_{3}, \ldots, s_{t}\right\} ht={s1,s2,s3,…,st}( h t h_t ht 包含了之前的所有状态),如果一个状态转移是符合马尔可夫的,也就是满足如下条件:
p ( s t + 1 ∣ s t ) = p ( s t + 1 ∣ h t ) (1) p\left(s_{t+1} \mid s_{t}\right) =p\left(s_{t+1} \mid h_{t}\right) \tag{1} p(st+1∣st)=p(st+1∣ht)(1)
p ( s t + 1 ∣ s t , a t ) = p ( s t + 1 ∣ h t , a t ) (2) p\left(s_{t+1} \mid s_{t}, a_{t}\right) =p\left(s_{t+1} \mid h_{t}, a_{t}\right) \tag{2} p(st+1∣st,at)=p(st+1∣ht,at)(2)
从当前 s t s_t st 转移到 s t + 1 s_{t+1} st+1 这个状态,它是直接就等于它之前所有的状态转移到 s t + 1 s_{t+1} st+1。如果某一个过程满足马尔可夫性质(Markov Property),就是说未来的转移跟过去是独立的,它只取决于现在。马尔可夫性质是所有马尔可夫过程的基础。
1.2 Markov Process/Markov Chain
-
举个例子,上图里面有四个状态,这四个状态从 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 。
-
如果 s 4 s_4 s4是当前状态,它有 0.3 的概率转移到 s 2 s_2 s2 , 有 0.2 的概率转移到 s 3 s_3 s3 , 有 0.5 的概率留在 s 4 s_4 s4。
-
用状态转移矩阵(State Transition Matrix) P P P 来描述状态转移 p ( s t + 1 = s ′ ∣ s t = s ) p\left(s_{t+1}=s^{\prime} \mid s_{t}=s\right) 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=\left[\begin{array}{cccc} P\left(s_{1} \mid s_{1}\right) & P\left(s_{2} \mid s_{1}\right) & \ldots & P\left(s_{N} \mid s_{1}\right) \\ P\left(s_{1} \mid s_{2}\right) & P\left(s_{2} \mid s_{2}\right) & \ldots & P\left(s_{N} \mid s_{2}\right) \\ \vdots & \vdots & \ddots & \vdots \\ P\left(s_{1} \mid s_{N}\right) & P\left(s_{2} \mid s_{N}\right) & \ldots & P\left(s_{N} \mid s_{N}\right) \end{array}\right] 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
,它每一行其实描述了从一个节点到达所有其它节点的概率。
1.3 Example of MP
- 上图是一个马尔可夫链的例子,这里有七个状态。比如说从 s 1 s_1 s1 开始到 s 2 s_2 s2 ,有 0.4 的概率,然后它有 0.6 的概率继续存活在 s 1 s_1 s1 。 给定了这个状态转移的马尔可夫链后,我们可以对这个链进行采样,这样就会得到一串的轨迹。
2. Markov Reward Process(MRP)
马尔可夫奖励过程(Markov Reward Process, MRP) 是马尔可夫链再加上了一个奖励函数。在 MRP 中,转移矩阵和状态都是跟马尔可夫链一样的,只是多了一个奖励函数(reward function)。奖励函数 R R R 是一个期望,就是说当你到达某一个状态的时候,可以获得多大的奖励。这里另外定义了一个 discount factor γ \gamma γ 。如果状态数是有限的, R R R 可以是一个向量。
2.1 Example of MRP
- 这里是我们刚才看的马尔可夫链,如果把奖励也放上去的话,就是说到达每一个状态,都会获得一个奖励。我们可以设置对应的奖励,比如说到达 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] 来表示这个奖励函数,这个向量表示了每个点的奖励大小。
2.2 Return and Value function
这里我们进一步定义一些概念。
-
Horizon
是指一个回合的长度(每个回合最大的时间步数),它是由有限个步数决定的。 -
Return
(回报) 说的是把奖励进行折扣后所获得的收益。Return
可以定义为奖励的逐步叠加,如下式所示:
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}+\gamma R_{t+2}+\gamma^{2} R_{t+3}+\gamma^{3} R_{t+4}+\ldots+\gamma^{T-t-1} R_{T} Gt=Rt+1+γRt+2+γ2Rt+3+γ3Rt+4+…+γT−t−1RT
这里有一个叠加系数,越往后得到的奖励,折扣得越多。这说明我们其实更希望得到现有的奖励。
- 当我们有了
return
过后,就可以定义一个状态的价值了,就是state value function
。对于 MRP,state value function
被定义成是return
的期望,如下式所示:
V t ( s ) = E [ G t ∣ s t = s ] = E [ R t + 1 + γ R t + 2 + γ 2 R t + 3 + … + γ T − t − 1 R T ∣ s t = s ] \begin{aligned} V_{t}(s) &=\mathbb{E}\left[G_{t} \mid s_{t}=s\right] \\ &=\mathbb{E}\left[R_{t+1}+\gamma R_{t+2}+\gamma^{2} R_{t+3}+\ldots+\gamma^{T-t-1} R_{T} \mid s_{t}=s\right] \end{aligned} Vt(s)=E[Gt∣st=s]=E[Rt+1+γRt+2+γ2Rt+3+…+γT−t−1RT∣st=s]
G
t
G_t
Gt是之前定义的 discounted return
,这里取了期望,期望就是说从这个状态开始,你有可能获得多大的价值。所以这个期望也可以看成是对未来可能获得奖励的当前价值的一个表现。
2.3 Why Discount Factor
-
有些马尔可夫过程是带环的,它并没有终结,我们想避免这个无穷的奖励。
-
我们并没有建立一个完美的模拟环境的模型,也就是说,我们对未来的评估不一定是准确的,我们不一定完全信任我们的模型,因为这种不确定性,所以我们对未来的预估增加一个折扣。我们想把这个不确定性表示出来,希望尽可能快地得到奖励,而不是在未来某一个点得到奖励。
-
如果这个奖励是有实际价值的,我们可能是更希望立刻就得到奖励,而不是后面再得到奖励(现在的钱比以后的钱更有价值)。
-
在人的行为里面来说的话,大家也是想得到即时奖励。
-
有些时候可以把这个系数设为 0, γ = 0 \gamma=0 γ=0:我们就只关注了它当前的奖励。我们也可以把它设为 1, γ = 1 \gamma=1 γ=1:对未来并没有折扣,未来获得的奖励跟当前获得的奖励是一样的。
-
Discount factor 可以作为强化学习 agent 的一个超参数来进行调整,然后就会得到不同行为的 agent。
2.3.1 示例
-
在这个 MRP 里面,如何计算它的价值。这个 MRP 依旧是这个状态转移。它的奖励函数是定义成这样,它在进入第一个状态的时候会得到 5 的奖励,进入第七个状态的时候会得到 10 的奖励,其它状态都没有奖励。
-
我们现在可以计算每一个轨迹得到的奖励,比如我们对于这个 s 4 , s 5 , s 6 , s 7 s_4,s_5,s_6,s_7 s4,s5,s6,s7 轨迹的奖励进行计算,这里折扣系数是 0.5。
0 + 0.5 ∗ 0 + 0. 5 2 ∗ 0 + 0. 5 3 ∗ 10 = 1.25 0+0.5*0+0.5^2*0+0.5^3*10=1.25 0+0.5∗0+0.52∗0+0.53∗10=1.25
所以对于这个轨迹,它的 return 就是一个 1.25,类似地,我们可以得到其它轨迹的 return 。 -
这里就引出了一个问题,当我们有了一些轨迹的实际 return,怎么计算它的价值函数。比如说我们想知道 s 4 s_4 s4 状态的价值,就是当你进入 s 4 s_4 s4后,它的价值到底如何。一个可行的做法就是把所有的轨迹都叠加起来。比如我们可以从 s 4 s_4 s4 开始,采样生成很多轨迹,都把它的 return 计算出来,然后可以直接把它取一个平均作为 s 4 s_4 s4的价值。这其实是一种计算价值函数的办法,通过这个蒙特卡罗采样的办法计算 s 4 s_4 s4 的状态。接下来会进一步介绍蒙特卡罗算法。
2.4 Bellman Equation
之前提到,Value function
为
V
t
(
s
)
=
E
[
G
t
∣
s
t
=
s
]
=
E
[
R
t
+
1
+
γ
R
t
+
2
+
γ
2
R
t
+
3
+
…
+
γ
T
−
t
−
1
R
T
∣
s
t
=
s
]
\begin{aligned} V_{t}(s) &=\mathbb{E}\left[G_{t} \mid s_{t}=s\right] \\ &=\mathbb{E}\left[R_{t+1}+\gamma R_{t+2}+\gamma^{2} R_{t+3}+\ldots+\gamma^{T-t-1} R_{T} \mid s_{t}=s\right] \end{aligned}
Vt(s)=E[Gt∣st=s]=E[Rt+1+γRt+2+γ2Rt+3+…+γT−t−1RT∣st=s]
MRP value function
满足以下的贝尔曼方程:
V
(
s
)
=
R
(
s
)
⏟
Immediate reward
+
γ
∑
s
′
∈
S
P
(
s
′
∣
s
)
V
(
s
′
)
⏟
Discounted sum of future reward
V(s)=\underbrace{R(s)}_{\text {Immediate reward }}+\underbrace{\gamma \sum_{s^{\prime} \in S} P\left(s^{\prime} \mid s\right) V\left(s^{\prime}\right)}_{\text {Discounted sum of future reward }}
V(s)=Immediate reward
R(s)+Discounted sum of future reward
γ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′) 代表的是未来某一个状态的价值。我们从当前这个位置开始,有一定的概率去到未来的所有状态,所以我们要把这个概率也写上去,这个转移矩阵也写上去,然后我们就得到了未来状态,然后再乘以一个 γ \gamma γ,这样就可以把未来的奖励打折扣。
-
式子的第二部分可以看成是未来奖励的折扣总和(Discounted sum of future reward)。
-
Bellman Equation 定义了当前状态跟未来状态之间的这个关系.
2.4.1 Law of Total Expectation
在推导 Bellman equation 之前,我们可以仿照Law of Total Expectation
(全期望公式)的证明过程来证明下面的式子:
E
[
V
(
s
t
+
1
)
∣
s
t
]
=
E
[
E
[
G
t
+
1
∣
s
t
+
1
]
∣
s
t
]
=
E
[
G
t
+
1
∣
s
t
]
\mathbb{E}[V(s_{t+1})|s_t]=\mathbb{E}[\mathbb{E}[G_{t+1}|s_{t+1}]|s_t]=E[G_{t+1}|s_t]
E[V(st+1)∣st]=E[E[Gt+1∣st+1]∣st]=E[Gt+1∣st]
证明:为了记号简洁并且易读,我们丢掉了下标,令
s
=
s
t
,
g
′
=
G
t
+
1
,
s
′
=
s
t
+
1
s=s_t,g'=G_{t+1},s'=s_{t+1}
s=st,g′=Gt+1,s′=st+1。我们可以根据条件期望的定义来重写这个回报的期望为:
E
[
G
t
+
1
∣
s
t
+
1
]
=
E
[
g
′
∣
s
′
]
=
∑
g
′
g
′
p
(
g
′
∣
s
′
)
\begin{aligned} \mathbb{E}\left[G_{t+1} \mid s_{t+1}\right] &=\mathbb{E}\left[g^{\prime} \mid s^{\prime}\right] \\ &=\sum_{g^{\prime}} g^{\prime}~p\left(g^{\prime} \mid s^{\prime}\right) \end{aligned}
E[Gt+1∣st+1]=E[g′∣s′]=g′∑g′ p(g′∣s′)
令
s
t
=
s
s_t=s
st=s,我们对
E
[
G
t
+
1
∣
s
t
+
1
]
\mathbb{E}\left[G_{t+1} \mid s_{t+1}\right]
E[Gt+1∣st+1]求期望可得:
E
[
E
[
G
t
+
1
∣
s
t
+
1
]
∣
s
t
]
=
E
[
E
[
g
′
∣
s
′
]
∣
s
]
=
E
[
∑
g
′
g
′
p
(
g
′
∣
s
′
)
∣
s
]
=
∑
s
′
∑
g
′
g
′
p
(
g
′
∣
s
′
,
s
)
p
(
s
′
∣
s
)
=
∑
s
′
∑
g
′
g
′
p
(
g
′
∣
s
′
,
s
)
p
(
s
′
∣
s
)
p
(
s
)
p
(
s
)
=
∑
s
′
∑
g
′
g
′
p
(
g
′
∣
s
′
,
s
)
p
(
s
′
,
s
)
p
(
s
)
=
∑
s
′
∑
g
′
g
′
p
(
g
′
,
s
′
,
s
)
p
(
s
)
=
∑
s
′
∑
g
′
g
′
p
(
g
′
,
s
′
∣
s
)
=
∑
g
′
∑
s
′
g
′
p
(
g
′
,
s
′
∣
s
)
=
∑
g
′
g
′
p
(
g
′
∣
s
)
=
E
[
g
′
∣
s
]
=
E
[
G
t
+
1
∣
s
t
]
\begin{aligned} \mathbb{E}\left[\mathbb{E}\left[G_{t+1} \mid s_{t+1}\right] \mid s_{t}\right] &=\mathbb{E} \left[\mathbb{E}\left[g^{\prime} \mid s^{\prime}\right] \mid s\right]\\ &=\mathbb{E} \left[\sum_{g^{\prime}} g^{\prime}~p\left(g^{\prime} \mid s^{\prime}\right)\mid s\right]\\ &= \sum_{s^{\prime}}\sum_{g^{\prime}} g^{\prime}~p\left(g^{\prime} \mid s^{\prime},s\right)p(s^{\prime} \mid s)\\ &=\sum_{s^{\prime}} \sum_{g^{\prime}} \frac{g^{\prime} p\left(g^{\prime} \mid s^{\prime}, s\right) p\left(s^{\prime} \mid s\right) p(s)}{p(s)} \\ &=\sum_{s^{\prime}} \sum_{g^{\prime}} \frac{g^{\prime} p\left(g^{\prime} \mid s^{\prime}, s\right) p\left(s^{\prime}, s\right)}{p(s)} \\ &=\sum_{s^{\prime}} \sum_{g^{\prime}} \frac{g^{\prime} p\left(g^{\prime}, s^{\prime}, s\right)}{p(s)} \\ &=\sum_{s^{\prime}} \sum_{g^{\prime}} g^{\prime} p\left(g^{\prime}, s^{\prime} \mid s\right) \\ &=\sum_{g^{\prime}} \sum_{s^{\prime}} g^{\prime} p\left(g^{\prime}, s^{\prime} \mid s\right) \\ &=\sum_{g^{\prime}} g^{\prime} p\left(g^{\prime} \mid s\right) \\ &=\mathbb{E}\left[g^{\prime} \mid s\right]=\mathbb{E}\left[G_{t+1} \mid s_{t}\right] \end{aligned}
E[E[Gt+1∣st+1]∣st]=E[E[g′∣s′]∣s]=E⎣⎡g′∑g′ p(g′∣s′)∣s⎦⎤=s′∑g′∑g′ p(g′∣s′,s)p(s′∣s)=s′∑g′∑p(s)g′p(g′∣s′,s)p(s′∣s)p(s)=s′∑g′∑p(s)g′p(g′∣s′,s)p(s′,s)=s′∑g′∑p(s)g′p(g′,s′,s)=s′∑g′∑g′p(g′,s′∣s)=g′∑s′∑g′p(g′,s′∣s)=g′∑g′p(g′∣s)=E[g′∣s]=E[Gt+1∣st]
2.4.2 Bellman Equation Derivation
Bellman equation 的推导过程如下:
V
(
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(s)&=\mathbb{E}\left[G_{t} \mid s_{t}=s\right]\\ &=\mathbb{E}\left[R_{t+1}+\gamma R_{t+2}+\gamma^{2} R_{t+3}+\ldots \mid s_{t}=s\right] \\ &=\mathbb{E}\left[R_{t+1}|s_t=s\right] +\gamma \mathbb{E}\left[R_{t+2}+\gamma R_{t+3}+\gamma^{2} R_{t+4}+\ldots \mid s_{t}=s\right]\\ &=R(s)+\gamma \mathbb{E}[G_{t+1}|s_t=s] \\ &=R(s)+\gamma \mathbb{E}[V(s_{t+1})|s_t=s]\\ &=R(s)+\gamma \sum_{s^{\prime} \in S} P\left(s^{\prime} \mid s\right) V\left(s^{\prime}\right) \end{aligned}
V(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′)
2.4.3 举例
-
假设有一个马尔可夫转移矩阵是右边这个样子,
Bellman Equation
描述的就是当前状态到未来状态的一个转移。假设我们当前是在 s 1 s_1 s1, 那么它只可能去到三个未来的状态:有 0.1 的概率留在它当前这个位置,有 0.2 的概率去到 s 2 s_2 s2 状态,有 0.7 的概率去到 s 4 s_4 s4 的状态,所以我们要把这个转移乘以它未来的状态的价值,再加上它的immediate reward
就会得到它当前状态的价值。所以Bellman Equation
定义的就是当前状态跟未来状态的一个迭代的关系。 -
把 Bellman Equation 写成一种矩阵的形式,如下式所示。
[ 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 ) ] \left[\begin{array}{c} V\left(s_{1}\right) \\ V\left(s_{2}\right) \\ \vdots \\ V\left(s_{N}\right) \end{array}\right]=\left[\begin{array}{c} R\left(s_{1}\right) \\ R\left(s_{2}\right) \\ \vdots \\ R\left(s_{N}\right) \end{array}\right]+\gamma\left[\begin{array}{cccc} P\left(s_{1} \mid s_{1}\right) & P\left(s_{2} \mid s_{1}\right) & \ldots & P\left(s_{N} \mid s_{1}\right) \\ P\left(s_{1} \mid s_{2}\right) & P\left(s_{2} \mid s_{2}\right) & \ldots & P\left(s_{N} \mid s_{2}\right) \\ \vdots & \vdots & \ddots & \vdots \\ P\left(s_{1} \mid s_{N}\right) & P\left(s_{2} \mid s_{N}\right) & \ldots & P\left(s_{N} \mid s_{N}\right) \end{array}\right]\left[\begin{array}{c} V\left(s_{1}\right) \\ V\left(s_{2}\right) \\ \vdots \\ V\left(s_{N}\right) \end{array}\right] ⎣⎢⎢⎢⎡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 这个向量乘以了转移矩阵里面的某一行,再加上它当前可以得到的reward,就会得到它当前的价值。
-
当我们把
Bellman Equation
写成矩阵形式后,可以直接求解:
V = R + γ P V I V = R + γ P V ( I − γ P ) V = R V = ( I − γ P ) − 1 R \begin{aligned} V &= R+ \gamma PV \\ IV &= R+ \gamma PV \\ (I-\gamma P)V &=R \\ V&=(I-\gamma P)^{-1}R \end{aligned} VIV(I−γP)VV=R+γPV=R+γPV=R=(I−γP)−1R我们可以通过矩阵求逆把 V V V 直接求出来。但是一个问题是这个矩阵求逆的过程的复杂度是 O ( N 3 ) O(N^3) O(N3)。所以当状态非常多的时候,比如说从十个状态到一千个状态,到一百万个状态。那么当我们有一百万个状态的时候,这个转移矩阵就会是个一百万乘以一百万的矩阵,这样一个大矩阵的话求逆是非常困难的,所以这种通过解析解去求解的方法只适用于很小量的 MRP。
2.5 Iterative Algorithm for Computing Value of a MRP
接下来我们来求解这个价值函数。我们可以通过迭代的方法来解这种状态非常多的 MRP(large MRPs),比如说:
- 动态规划的方法,
- 蒙特卡罗的办法(通过采样的办法去计算它),
- 时序差分学习(Temporal-Difference Learning)的办法。 Temporal-Difference Learning是动态规划和蒙特卡罗的一个结合。
2.5.1 蒙特卡洛方法求解
- 蒙特卡罗算法就是当得到一个 MRP后,我们从某一个状态开始,就会产生一个轨迹。相应地,就会得到一个奖励,那么就直接把它的折扣的奖励 g g g 算出来。算出来过后就可以把它积累起来,得到 return G t G_t Gt。 当积累到一定的轨迹数量过后,直接用 G t G_t Gt除以轨迹数量,就会得到它的价值。
-
比如说我们要算 s 4 s_4 s4 状态的价值。
我们就可以从 s 4 s_4 s4 状态开始,随机产生很多轨迹。每个轨迹都会得到一个
return
,我们得到大量的return
,比如说一百个、一千个return
,然后直接取一个平均,那么就可以等价于现在 s 4 s_4 s4这个价值。这就是蒙特卡罗采样的方法。
2.5.2 动态规划方法求解
-
动态规划的办法,一直去迭代它的 Bellman equation,让它最后收敛,我们就可以得到它的一个状态。所以在这里就是一个迭代的算法,通过
bootstrapping
(自举)的办法,然后去不停地迭代这个 Bellman Equation。当这个最后更新的状态跟你上一个状态变化并不大的时候,更新就可以停止,我们就可以输出最新的 V ′ ( s ) V'(s) V′(s)作为它当前的状态。所以这里就是把 Bellman Equation 变成一个 Bellman Update,这样就可以得到它的一个价值。 -
动态规划的方法基于后继状态值的估计来更新状态值的估计(算法2中的第 3 行用 V ′ V' V′ 来更新 V V V )。我们称这种基本思想为
bootstrapping
。
3. Markov Decision Process(MDP)
3.1 MDP
相对于 MRP,马尔可夫决策过程(Markov Decision Process
)多了一个 decision,其它的定义跟 MRP 都是类似的:
- 这里多了一个决策,即多了一个动作。
- 状态转移也多了一个条件,变成了 P ( s t + 1 = s ′ ∣ s t = s , a t = a ) P\left(s_{t+1}=s^{\prime} \mid s_{t}=s, a_{t}=a\right) P(st+1=s′∣st=s,at=a)。当采取某一种动作时,未来的状态会不同。未来的状态不仅是依赖于当前的状态,也依赖于 agent 在当前状态采取的这个动作。
- 对于价值函数,它也是多了一个条件,多了一个当前的动作,变成了 R ( s t = s , a t = a ) = E [ r t ∣ s t = s , a t = a ] R\left(s_{t}=s, a_{t}=a\right)=\mathbb{E}\left[r_{t} \mid s_{t}=s, a_{t}=a\right] R(st=s,at=a)=E[rt∣st=s,at=a]。当前的状态以及采取的动作会决定agent在当前可能得到的奖励多少。
- MDP is a tuple: ( S , A , P , R , γ ) (S, A, P, R, \gamma) (S,A,P,R,γ)
3.2 Policy in MDP
-
Policy 定义了在某一个状态应该采取什么样的动作。
-
知道当前状态后,我们可以把当前状态带入 policy function,然后就会得到一个概率,即
π ( a ∣ s ) = P ( a t = a ∣ s t = s ) \pi(a \mid s)=P\left(a_{t}=a \mid s_{t}=s\right) π(a∣s)=P(at=a∣st=s) -
概率就代表了在所有可能的动作里面怎样采取行动,比如可能有 0.7 的概率往左走,有 0.3 的概率往右走,这是一个概率的表示。
-
另外这个策略也可能是确定的,它有可能是直接输出一个值。或者就直接告诉你当前应该采取什么样的动作,而不是一个动作的概率。
-
假设这个概率函数应该是稳定的(stationary),在不同时间点下采取的动作其实都是对这个 policy function 进行采样。
3.2.1 MDP转换成MRP
-
已知一个 MDP 和一个 π \pi π 的时候,我们可以把 MDP 转换成 MRP。
-
在 MDP 里面,转移函数 P ( s ′ ∣ s , a ) P(s'|s,a) P(s′∣s,a) 是基于它当前状态以及它当前的 action。因为我们现在已知 policy function,就是说在每一个状态,我们知道它可能采取的动作的概率,那么就可以直接把这个 action 进行加和,从而把 a a a 去掉,我们就可以得到对于 MRP 的一个转移:
P π ( s ′ ∣ s ) = ∑ a ∈ A π ( a ∣ s ) P ( s ′ ∣ s , a ) P^{\pi}\left(s^{\prime} \mid s\right)=\sum_{a \in A} \pi(a \mid s) P\left(s^{\prime} \mid s, a\right) Pπ(s′∣s)=a∈A∑π(a∣s)P(s′∣s,a) -
对于奖励函数,我们也可以把 action 拿掉,这样就会得到一个类似于 MRP 的奖励函数。
R π ( s ) = ∑ a ∈ A π ( a ∣ s ) R ( s , a ) R^{\pi}(s)=\sum_{a \in A} \pi(a \mid s) R(s, a) Rπ(s)=a∈A∑π(a∣s)R(s,a)
3.3 Comparison of MP/MRP and MDP
- 马尔可夫过程的转移是直接就决定。如上图左边,比如当前状态是 s,那么就直接通过这个转移概率决定了下一个状态是什么。
- 但对于 MDP,它的中间多了一层动作 a ,当前这个状态的时候,首先要决定的是采取某一种动作,即图中的某一个黑色的节点。到了黑色的节点,因为有一定的不确定性,agent当前状态决定后以及当前采取的动作后,agent到未来的状态其实也是一个概率分布。所以在这个当前状态跟未来状态转移过程中这里多了一层决策,这是 MDP 跟之前的马尔可夫过程很不同的一个地方。
- 在马尔可夫决策过程中,动作是由 agent 决定,所以多了一个 component,agent 会采取动作来决定未来的状态转移。
3.4 Value function for MDP
- 顺着 MDP 的定义,我们可以把
状态-价值函数(state-value function
)也进行一个定义,它的定义是跟 MRP 是类似的,如式 (3) 所示:
v π ( s ) = E π [ G t ∣ s t = s ] (3) v^{\pi}(s)=\mathbb{E}_{\pi}\left[G_{t} \mid s_{t}=s\right] \tag{3} vπ(s)=Eπ[Gt∣st=s](3)
这个期望是基于agent采取的policy ,当 policy 决定过后,通过对这个 policy 进行采样来得到一个期望,那么就可以计算出它的这个价值函数。 - 这里另外引入了一个
Q 函数(Q-function)
。Q 函数也被称为action-value function
。Q 函数定义的是在某一个状态采取某一个动作,它有可能得到的 return 的期望,如式 (4) 所示:
q π ( s , a ) = E π [ G t ∣ s t = s , A t = a ] (4) q^{\pi}(s, a)=\mathbb{E}_{\pi}\left[G_{t} \mid s_{t}=s, A_{t}=a\right] \tag{4} qπ(s,a)=Eπ[Gt∣st=s,At=a](4)
这里需要对policy function 进行一个加和,然后得到它的价值。 对 Q 函数中的动作函数进行加和,就可以得到价值函数,如式 (5) 所示:
v π ( s ) = ∑ a ∈ A π ( a ∣ s ) q π ( s , a ) (5) v^{\pi}(s)=\sum_{a \in A} \pi(a \mid s) q^{\pi}(s, a) \tag{5} vπ(s)=a∈A∑π(a∣s)qπ(s,a)(5)
3.4.1 Q-function Bellman Equation
此处我们给出 Q 函数的 Bellman equation
:
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)&=\mathbb{E}\left[G_{t} \mid s_{t}=s,a_{t}=a\right]\\ &=\mathbb{E}\left[R_{t+1}+\gamma R_{t+2}+\gamma^{2} R_{t+3}+\ldots \mid s_{t}=s,a_{t}=a\right] \\ &=\mathbb{E}\left[R_{t+1}|s_{t}=s,a_{t}=a\right] +\gamma \mathbb{E}\left[R_{t+2}+\gamma R_{t+3}+\gamma^{2} R_{t+4}+\ldots \mid s_{t}=s,a_{t}=a\right]\\ &=R(s,a)+\gamma \mathbb{E}[G_{t+1}|s_{t}=s,a_{t}=a] \\ &=R(s,a)+\gamma \mathbb{E}[V(s_{t+1})|s_{t}=s,a_{t}=a]\\ &=R(s,a)+\gamma \sum_{s^{\prime} \in S} P\left(s^{\prime} \mid s,a\right) V\left(s^{\prime}\right) \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′)
3.5 Bellman Expectation Equation
我们可以把状态-价值函数
和 Q 函数
拆解成两个部分:即时奖励(immediate reward) 和后续状态的折扣价值(discounted value of successor state)。
3.5.1 表示形式1
-
通过对
状态-价值函数
进行一个分解,可以得到类似于之前 MRP 的Bellman Equation
,这里叫Bellman Expectation Equation
,如式 (6) 所示:
v π ( s ) = E π [ R t + 1 + γ v π ( s t + 1 ) ∣ s t = s ] (6) v^{\pi}(s)=E_{\pi}\left[R_{t+1}+\gamma v^{\pi}\left(s_{t+1}\right) \mid s_{t}=s\right] \tag{6} vπ(s)=Eπ[Rt+1+γvπ(st+1)∣st=s](6) -
对于
Q 函数
,我们也可以做类似的分解,也可以得到Q 函数
的Bellman Expectation Equation
,如式 (7) 所示:
q π ( s , a ) = E π [ R t + 1 + γ q π ( s t + 1 , A t + 1 ) ∣ s t = s , A t = a ] (7) q^{\pi}(s, a)=E_{\pi}\left[R_{t+1}+\gamma q^{\pi}\left(s_{t+1}, A_{t+1}\right) \mid s_{t}=s, A_{t}=a\right] \tag{7} qπ(s,a)=Eπ[Rt+1+γqπ(st+1,At+1)∣st=s,At=a](7) -
Bellman expectation equation 定义了agent当前状态跟未来状态之间的一个关联。
3.5.2 表示形式2
进一步地进行一个简单的分解。
先给出等式 (8):
v
π
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
q
π
(
s
,
a
)
(8)
v^{\pi}(s)=\sum_{a \in A} \pi(a \mid s) q^{\pi}(s, a) \tag{8}
vπ(s)=a∈A∑π(a∣s)qπ(s,a)(8)
再给出等式 (9):
q
π
(
s
,
a
)
=
R
s
a
+
γ
∑
s
′
∈
S
P
(
s
′
∣
s
,
a
)
v
π
(
s
′
)
(9)
q^{\pi}(s, a)=R_{s}^{a}+\gamma \sum_{s^{\prime} \in S} P\left(s^{\prime} \mid s, a\right) v^{\pi}\left(s^{\prime}\right) \tag{9}
qπ(s,a)=Rsa+γs′∈S∑P(s′∣s,a)vπ(s′)(9)
等式 (8) 和等式 (9) 代表了价值函数
跟Q 函数
之间的一个关联。
也可以把等式 (9) 插入等式 (8) 中,得到等式 (10):
v
π
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
(
R
(
s
,
a
)
+
γ
∑
s
′
∈
S
P
(
s
′
∣
s
,
a
)
v
π
(
s
′
)
)
(10)
v^{\pi}(s)=\sum_{a \in A} \pi(a \mid s)\left(R(s, a)+\gamma \sum_{s^{\prime} \in S} P\left(s^{\prime} \mid s, a\right) v^{\pi}\left(s^{\prime}\right)\right) \tag{10}
vπ(s)=a∈A∑π(a∣s)(R(s,a)+γs′∈S∑P(s′∣s,a)vπ(s′))(10)
等式 (10) 代表了当前状态的价值跟未来状态价值之间的一个关联。
我们把等式 (8) 插入到等式 (9),就可以得到等式 (11):
q
π
(
s
,
a
)
=
R
(
s
,
a
)
+
γ
∑
s
′
∈
S
P
(
s
′
∣
s
,
a
)
∑
a
′
∈
A
π
(
a
′
∣
s
′
)
q
π
(
s
′
,
a
′
)
(11)
q^{\pi}(s, a)=R(s, a)+\gamma \sum_{s^{\prime} \in S} P\left(s^{\prime} \mid s, a\right) \sum_{a^{\prime} \in A} \pi\left(a^{\prime} \mid s^{\prime}\right) q^{\pi}\left(s^{\prime}, a^{\prime}\right) \tag{11}
qπ(s,a)=R(s,a)+γs′∈S∑P(s′∣s,a)a′∈A∑π(a′∣s′)qπ(s′,a′)(11)
等式 (11) 代表了当前时刻的 Q 函数跟未来时刻的 Q 函数之间的一个关联。
等式 (10) 和等式 (11) 是 Bellman expectation equation 的另一种形式。
3.6 Backup Diagram
这里有一个概念叫backup
。Backup
类似于 bootstrapping
之间的迭代关系,就对于某一个状态,它的当前价值是跟它的未来价值线性相关的。
3.6.1 Backup Diagram for state-value function
如图所示,每一个空心圆圈代表一个状态,每一个实心圆圈代表一个状态-动作对。
v
π
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
(
R
(
s
,
a
)
+
γ
∑
s
′
∈
S
P
(
s
′
∣
s
,
a
)
v
π
(
s
′
)
)
(12)
v^{\pi}(s)=\sum_{a \in A} \pi(a \mid s)\left(R(s, a)+\gamma \sum_{s^{\prime} \in S} P\left(s^{\prime} \mid s, a\right) v^{\pi}\left(s^{\prime}\right)\right) \tag{12}
vπ(s)=a∈A∑π(a∣s)(R(s,a)+γs′∈S∑P(s′∣s,a)vπ(s′))(12)
式 (12) 有两层加和:
- 第一层加和就是叶子节点,往上走一层的话,我们就可以把未来的价值( s ′ s' s′的价值) backup 到黑色的节点。
- 第二层加和是对 action 进行加和。得到黑色节点的价值过后,再往上 backup 一层,就会推到根节点的价值,即当前状态的价值。
上图是状态-价值函数的计算分解图,上图 B 计算公式为
v
π
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
q
π
(
s
,
a
)
(i)
v^{\pi}(s)=\sum_{a \in A} \pi(a \mid s) q^{\pi}(s, a) \tag{i}
vπ(s)=a∈A∑π(a∣s)qπ(s,a)(i)
上图 B 给出了状态-价值函数与 Q 函数之间的关系。上图 C 计算 Q 函数为
q
π
(
s
,
a
)
=
R
(
s
,
a
)
+
γ
∑
s
′
∈
S
P
(
s
′
∣
s
,
a
)
v
π
(
s
′
)
(ii)
q^{\pi}(s,a)=R(s, a)+\gamma \sum_{s^{\prime} \in S} P\left(s^{\prime} \mid s, a\right) v^{\pi}\left(s^{\prime}\right) \tag{ii}
qπ(s,a)=R(s,a)+γs′∈S∑P(s′∣s,a)vπ(s′)(ii)
将式 (ii) 代入式 (i) 可得:
v
π
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
(
R
(
s
,
a
)
+
γ
∑
s
′
∈
S
P
(
s
′
∣
s
,
a
)
v
π
(
s
′
)
)
v^{\pi}(s)=\sum_{a \in A} \pi(a \mid s)\left(R(s, a)+\gamma \sum_{s^{\prime} \in S} P\left(s^{\prime} \mid s, a\right) v^{\pi}\left(s^{\prime}\right)\right)
vπ(s)=a∈A∑π(a∣s)(R(s,a)+γs′∈S∑P(s′∣s,a)vπ(s′))
所以backup diagram
定义了未来下一时刻的状态-价值函数跟上一时刻的状态-价值函数之间的关联。
3.6.2 Backup Diagram for Q function
对于 Q 函数
,也可以进行这样的一个推导。现在的根节点是Q 函数
的一个节点。Q 函数对应于黑色的节点。下一时刻的 Q 函数是叶子节点,有四个黑色节点。
q
π
(
s
,
a
)
=
R
(
s
,
a
)
+
γ
∑
s
′
∈
S
P
(
s
′
∣
s
,
a
)
∑
a
′
∈
A
π
(
a
′
∣
s
′
)
q
π
(
s
′
,
a
′
)
(13)
q^{\pi}(s, a)=R(s, a)+\gamma \sum_{s^{\prime} \in S} P\left(s^{\prime} \mid s, a\right) \sum_{a^{\prime} \in A} \pi\left(a^{\prime} \mid s^{\prime}\right) q^{\pi}\left(s^{\prime}, a^{\prime}\right) \tag{13}
qπ(s,a)=R(s,a)+γs′∈S∑P(s′∣s,a)a′∈A∑π(a′∣s′)qπ(s′,a′)(13)
如式 (13) 所示,这里也有两个加和:
- 第一层加和是先把这个叶子节点从黑色节点
backup
到白色的节点,进了它的这个状态。 - 当到达某一个状态过后,再对这个白色节点进行一个加和,这样就把它重新
backup
到当前时刻的一个 Q 函数。
在上图 C 中,
v
π
(
s
′
)
=
∑
a
′
∈
A
π
(
a
′
∣
s
′
)
q
π
(
s
′
,
a
′
)
(iii)
v^{\pi}\left(s^{\prime}\right)=\sum_{a^{\prime} \in A} \pi\left(a^{\prime} \mid s^{\prime}\right) q^{\pi}\left(s^{\prime}, a^{\prime}\right) \tag{iii}
vπ(s′)=a′∈A∑π(a′∣s′)qπ(s′,a′)(iii)
将式 (iii) 代入式 (ii) 可得到 Q 函数:
q
π
(
s
,
a
)
=
R
(
s
,
a
)
+
γ
∑
s
′
∈
S
P
(
s
′
∣
s
,
a
)
∑
a
′
∈
A
π
(
a
′
∣
s
′
)
q
π
(
s
′
,
a
′
)
q^{\pi}(s, a)=R(s, a)+\gamma \sum_{s^{\prime} \in S} P\left(s^{\prime} \mid s, a\right) \sum_{a^{\prime} \in A} \pi\left(a^{\prime} \mid s^{\prime}\right) q^{\pi}\left(s^{\prime}, a^{\prime}\right)
qπ(s,a)=R(s,a)+γs′∈S∑P(s′∣s,a)a′∈A∑π(a′∣s′)qπ(s′,a′)
所以这个等式就决定了未来 Q 函数跟当前 Q 函数之间的这个关联。
3.7 Policy Evaluation(Prediction)
-
当知道一个 MDP 以及要采取的策略 π \pi π ,计算价值函数 v π ( s ) v^{\pi}(s) vπ(s)的过程就是
policy evaluation
。即评估这个策略下,agent会得到多大的奖励。 -
Policy evaluation
在有些地方也被叫做(value) prediction
,也就是预测agent当前采取的这个策略最终会产生多少的价值。
-
MDP,可以把它想象成一个摆渡的人,她可以控制这个船的移动,这样就避免了这个船随波逐流。因为在每一个时刻,这个人会决定采取什么样的一个动作,这样会把这个船进行导向。
-
MRP 跟 MP 的话,这个纸的小船会随波逐流,然后产生轨迹。
-
MDP 的不同就是有一个 agent 去控制这个船,这样就可以尽可能多地获得奖励。
再看下 policy evaluation 的例子,怎么在决策过程里面计算它每一个状态的价值。
-
假设环境里面有两种动作:往左走和往右走。现在的奖励函数有两个变量:动作和状态。但我们这里规定,不管你采取什么动作,只要到达状态 s 1 s_1 s1,就有 5 的奖励。只要你到达状态 s 7 s_7 s7 了,就有 10 的奖励,中间没有任何奖励。假设我们现在采取的一个策略,这个策略是说不管在任何状态,我们采取的策略都是往左走。假设价值折扣因子是零,那么对于确定性策略(deterministic policy),最后估算出的价值函数是一致的,即
V π = [ 5 , 0 , 0 , 0 , 0 , 0 , 10 ] V^{\pi}=[5,0,0,0,0,0,10] Vπ=[5,0,0,0,0,0,10] -
Q: 怎么得到这个结果?
我们可以直接在去 run 下面这个 iterative equation:
v k π ( s ) = r ( s , π ( s ) ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , π ( s ) ) v k − 1 π ( s ′ ) v_{k}^{\pi}(s)=r(s, \pi(s))+\gamma \sum_{s^{\prime} \in S} P\left(s^{\prime} \mid s, \pi(s)\right) v_{k-1}^{\pi}\left(s^{\prime}\right) vkπ(s)=r(s,π(s))+γs′∈S∑P(s′∣s,π(s))vk−1π(s′)
就把 Bellman expectation equation 拿到这边来,然后不停地迭代,最后它会收敛。收敛过后,它的值就是它每一个状态的价值。 -
再来看一个例子(practice 1),如果折扣因子是 0.5,我们可以通过下面这个等式进行迭代:
v t π ( s ) = ∑ a P ( π ( s ) = a ) ( r ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) v t − 1 π ( s ′ ) ) v_{t}^{\pi}(s)=\sum_{a} P(\pi(s)=a)\left(r(s, a)+\gamma \sum_{s^{\prime} \in S} P\left(s^{\prime} \mid s, a\right) v_{t-1}^{\pi}\left(s^{\prime}\right)\right) vtπ(s)=a∑P(π(s)=a)(r(s,a)+γs′∈S∑P(s′∣s,a)vt−1π(s′))
然后就会得到它的状态价值。 -
另外一个例子(practice 2),就是说我们现在采取的 policy 在每个状态下,有 0.5 的概率往左走,有 0.5 的概率往右走,那么放到这个状态里面去如何计算。其实也是把这个
Bellman expectation equation
拿出来,然后进行迭代就可以算出来了。一开始的时候,我们可以初始化,将 v ( s ′ ) v(s') v(s′) 放到Bellman expectation equation
里面去迭代,然后就可以算出它的状态价值。
3.8 Prediction and Control
MDP 的prediction
和 control
是 MDP 里面的核心问题。
-
预测问题:
- 输入:MDP < S , A , P , R , γ > <S,A,P,R,\gamma> <S,A,P,R,γ> 和 π \pi π 或者 MRP < S , P π , R π , γ > <S,P^{\pi},R^{\pi},\gamma> <S,Pπ,Rπ,γ>。
- 输出:value function v π v^{\pi} vπ。-
Prediction
是说给定一个 MDP 以及一个 policy π \pi π ,去计算它的 value function,即对于每个状态,它的价值函数是多少。 -
控制问题:
- 输入:MDP < S , A , P , R , γ > <S,A,P,R,\gamma> <S,A,P,R,γ>。
- 输出:最优价值函数(optimal value function) v ∗ v^* v∗ 和最佳策略(optimal policy) π ∗ \pi^* π∗。
- Control 就是去寻找一个最佳的策略,然后同时输出它的最佳价值函数以及最佳策略。
-
-
在 MDP 里面,
prediction
和control
都可以通过动态规划去解决。 -
要强调的是,这两者的区别就在于,
- 预测问题是给定一个 policy,我们要确定它的 value function 是多少。
- 而控制问题是在没有 policy 的前提下,我们要确定最优的 value function 以及对应的决策方案。
-
实际上,这两者是递进的关系,在强化学习中,我们通过解决预测问题,进而解决控制问题。
3.8.1 Grid World example
- 首先是预测问题:
- 在上图的方格中,我们规定从 A → \to → A’ 可以得到 +10 的奖励,从 B → \to → B’ 可以得到 +5 的奖励,其它步骤的奖励为 -1。
- 现在,我们给定一个 policy:在任何状态中,它的行为模式都是随机的,也就是上下左右的概率各 25%。
- 预测问题要做的就是,在这种决策模式下,我们的 value function 是什么。上图 b 是对应的 value function。
- 接着是控制问题:
- 在控制问题中,问题背景与预测问题相同,唯一的区别就是:不再限制 policy。也就是说行为模式是未知的,我们要自己确定。
- 所以我们通过解决控制问题,求得每一个状态的最优的 value function(如上图 b 所示),也得到了最优的 policy(如上图 c 所示)。
- 控制问题要做的就是,给定同样的条件,在所有可能的策略下最优的价值函数是什么?最优策略是什么?
3.9 Dynamic Programming
动态规划(Dynamic Programming,DP)适合解决满足如下两个性质的问题:
- 最优子结构(
optimal substructure
)。最优子结构意味着,我们的问题可以拆分成一个个的小问题,通过解决这个小问题,最后,我们能够通过组合小问题的答案,得到大问题的答案,即最优的解。 - 重叠子问题(
Overlapping subproblems
)。重叠子问题意味着,子问题出现多次,并且子问题的解决方案能够被重复使用。
MDP 是满足动态规划的要求的:
- 在
Bellman equation
里面,我们可以把它分解成一个递归的结构。当我们把它分解成一个递归的结构的时候,如果我们的子问题子状态能得到一个值,那么它的未来状态因为跟子状态是直接相连的,那我们也可以继续推算出来。 - 价值函数就可以储存并重用它的最佳的解。
动态规划应用于 MDP 的规划问题(planning)而不是学习问题(learning),我们必须对环境是完全已知的(Model-Based),才能做动态规划,直观的说,就是要知道状态转移概率和对应的奖励才行.
动态规划能够完成预测问题和控制问题的求解,是解 MDP prediction 和 control 一个非常有效的方式。
3.10 Policy Evaluation on MDP
-
Policy evaluation 就是给定一个 MDP 和一个 policy,我们可以获得多少的价值。就对于当前这个策略,我们可以得到多大的 value function。
-
我们可以直接把这个 Bellman Expectation Backup 拿过来,变成一个迭代的过程,这样反复迭代直到收敛。这个迭代过程可以看作是
synchronous backup
的过程。
v t + 1 ( s ) = ∑ a ∈ A π ( a ∣ s ) ( R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) v t ( s ′ ) ) (14) v_{t+1}(s)=\sum_{a \in \mathcal{A}} \pi(a \mid s)\left(R(s, a)+\gamma \sum_{s^{\prime} \in \mathcal{S}} P\left(s^{\prime} \mid s, a\right) v_{t}\left(s^{\prime}\right)\right) \tag{14} vt+1(s)=a∈A∑π(a∣s)(R(s,a)+γs′∈S∑P(s′∣s,a)vt(s′))(14)
- 等式 (14) 说的是可以把
Bellman Expectation Backup
转换成一个动态规划的迭代。 当我们得到 v t v_t vt 的时候,就可以通过这个递推的关系来推出下一时刻的值。反复去迭代它,最后它的值就是从 v 1 , v 2 v_1,v_2 v1,v2 到最后收敛过后的这个值。这个值就是当前给定的 policy 对应的价值函数。
3.10.1 Policy evaluation 的核心思想
Policy evaluation 的核心思想就是把如下式所示的 Bellman expectation backup
拿出来反复迭代,然后就会得到一个收敛的价值函数的值。
v
t
+
1
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
(
R
(
s
,
a
)
+
γ
∑
s
′
∈
S
P
(
s
′
∣
s
,
a
)
v
t
(
s
′
)
)
(15)
v_{t+1}(s)=\sum_{a \in \mathcal{A}} \pi(a \mid s)\left(R(s, a)+\gamma \sum_{s^{\prime} \in \mathcal{S}} P\left(s^{\prime} \mid s, a\right) v_{t}\left(s^{\prime}\right)\right) \tag{15}
vt+1(s)=a∈A∑π(a∣s)(R(s,a)+γs′∈S∑P(s′∣s,a)vt(s′))(15)
因为已经给定了这个函数的 policy function,那我们可以直接把它简化成一个 MRP 的表达形式,这样的话,就相当于我们把这个
a
a
a 去掉,如下式所示:
v
t
+
1
(
s
)
=
R
π
(
s
)
+
γ
P
π
(
s
′
∣
s
)
v
t
(
s
′
)
(16)
v_{t+1}(s)=R^{\pi}(s)+\gamma P^{\pi}\left(s^{\prime} \mid s\right) v_{t}\left(s^{\prime}\right) \tag{16}
vt+1(s)=Rπ(s)+γPπ(s′∣s)vt(s′)(16)
这样它就只有价值函数跟转移函数了。通过迭代这个更简化的函数,我们也可以得到它每个状态的价值。因为不管是在 MRP 以及 MDP,它的价值函数包含的这个变量都是只跟这个状态有关。
3.10.2 Evaluating a Random Policy in the Small Gridworld
-
比如现在的环境是一个 small gridworld。这个 agent 的目的是从某一个状态开始,然后到达终点状态。它的终止状态就是左上角跟右下角,这里总共有 14 个状态,每个位置用一个状态来表示。
-
这个 agent 采取的动作,它的 policy function 直接先给定,它在每一个状态都是随机游走,即在每一个状态下都是上下左右行走。它在边缘状态的时候,比如说在第四号状态的时候,它往左走的话,依然存于第四号状态。
-
这里给的奖励函数是agent每走一步,就会得到 -1 的奖励,所以 agent 需要尽快地到达终止状态。
-
状态之间的转移也是确定的。比如从第六号状态往上走,它会直接到达第二号状态。
-
因为我们已经知道每一个概率以及它的这个概率转移,那么就直接可以进行一个简短的迭代,就可以算出它每一个状态的价值。
-
另外参见斯坦福大学的一个动态例子
3.11 MDP Control
-
Optimal Value Function 的定义如下式所示:
v ∗ ( s ) = max π v π ( s ) v^{*}(s)=\max _{\pi} v^{\pi}(s) v∗(s)=πmaxvπ(s) -
Optimal Value Function 表示去寻找一种策略 π \pi π 来让每个状态的价值最大。 v ∗ v^* v∗ 就是到达每一个状态,它的值的极大化情况。
-
在这种极大化情况下得到的策略就是最佳策略(optimal policy),如下式所示:
π ∗ ( s ) = arg max π v π ( s ) \pi^{*}(s)=\underset{\pi}{\arg \max }~ v^{\pi}(s) π∗(s)=πargmax vπ(s) -
Optimal policy 使得每个状态的价值函数都取得最大值。在这种情况下,它的最佳的价值函数是一致的,但这里可能有多个最佳的 policy,也就是说多个 policy 可以取得相同的最佳价值。
3.11.1 如何去寻找这个最佳的 policy ?
-
当取得最佳的价值函数过后,我们可以通过对 Q 函数进行极大化得到最佳策略。如果能优化出一个 Q 函数,就可以直接在这个 Q 函数上面取一个让 Q 函数最大化的 action 的值,就可以提取出它的最佳策略。
-
最简单的策略搜索办法就是穷举。假设状态和动作都是有限的,每个状态我们可以采取 A 种动作的策略,那么总共就是 ∣ ∣ A ∣ ∣ S ∣ |A|^{|S|} ∣A∣∣S∣ 个可能的 policy。算出每种策略的 value function,对比一下就可以得到最佳策略。
-
穷举非常没有效率,所以我们要采取其他方法。搜索最佳策略有两种常用的方法:
policy iteration
和value iteration
。 -
寻找这个最佳策略的过程就是 MDP control 过程。MDP control 就是怎么去寻找一个最佳的策略来让我们得到一个最大的价值函数,如下式所示:
π ∗ ( s ) = arg max π v π ( s ) \pi^{*}(s)=\underset{\pi}{\arg \max } ~ v^{\pi}(s) π∗(s)=πargmax vπ(s)对于一个事先定好的 MDP 过程,当 agent 去采取最佳策略的时候,最佳策略一般都是确定的,而且是稳定的(它不会随着时间的变化)。但是不一定是唯一的,多种动作可能会取得相同的这个价值。
3.12 Policy Iteration
Policy iteration 由两个步骤组成:policy evaluation
和 policy improvement
。
-
第一个步骤是
policy evaluation
,在优化 policy π \pi π过程中会得到一个最新的 policy。我们先保证这个 policy 不变,然后去估计它出来的这个价值。给定当前的policy function
来估计这个 价值函数。 -
第二个步骤是
policy improvement
,得到 价值 函数过后,可以进一步推算出它的 Q 函数,然后直接在 Q 函数上面取极大化,通过在Q 函数上面做贪心的搜索来进一步改进它的策略。 -
这两个步骤一直在迭代进行,所以在
policy iteration
里面,在初始化的时候,有一个初始化的 V V V 和 π \pi π 在evaluation
和improvement
之间迭代。 -
左边这幅图上面的线就是我们当前 v 的值,下面的线是 policy 的值。
- 先给定当前已有的 policy function,去算它的 v。
- 算出 v 过后,可以得到一个 Q 函数。Q 函数采取 greedy 的策略。
- 然后进一步改进 policy ,得到一个改进的 policy 过后,它还不是最佳的,我们再进行 policy evaluation,然后又会得到一个新的 value function。基于这个新的 value function 再进行 Q 函数的极大化,这样就逐渐迭代,然后就会得到收敛。
-
再来看一下第二个步骤:
policy improvement
,我们是如何改进它的这个策略。得到 v 值后,通过 reward function 以及状态转移把Q-function 算出来,如下式所示:
q π i ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) v π i ( s ′ ) q^{\pi_{i}}(s, a)=R(s, a)+\gamma \sum_{s^{\prime} \in S} P\left(s^{\prime} \mid s, a\right) v^{\pi_{i}}\left(s^{\prime}\right) qπi(s,a)=R(s,a)+γs′∈S∑P(s′∣s,a)vπi(s′) -
对于每一个状态,第二个步骤会得到它的新一轮的 policy ,在每一个状态,去取使它得到最大值的 action,如下式所示:
π i + 1 ( s ) = arg max a q π i ( s , a ) \pi_{i+1}(s)=\underset{a}{\arg \max } ~q^{\pi_{i}}(s, a) πi+1(s)=aargmax qπi(s,a) -
可以把 Q 函数看成一个 Q-table:横轴是它的所有状态,纵轴是它的可能的 action。
-
那么对于某一个状态,每一列里面我们会取最大的那个值,最大值对应的 action 就是agent现在应该采取的 action。
3.12.1 Bellman Optimality Equation
-
当一直采取 a r g m a x arg max argmax 操作的时候,我们会得到一个单调的递增。通过采取greedy,即 a r g m a x arg max argmax 操作,我们会得到更好的或者不变的 policy,而不会使它的价值函数变差。所以当这个改进停止过后,我们就会得到一个最佳策略。
-
当改进停止过后,我们取它最大化的action, q f u n c t i o n q function qfunction直接就会变成它的价值函数,如下式所示:
q π ( s , π ′ ( s ) ) = max a ∈ A q π ( s , a ) = q π ( s , π ( s ) ) = v π ( s ) q^{\pi}\left(s, \pi^{\prime}(s)\right)=\max _{a \in \mathcal{A}} q^{\pi}(s, a)=q^{\pi}(s, \pi(s))=v^{\pi}(s) qπ(s,π′(s))=a∈Amaxqπ(s,a)=qπ(s,π(s))=vπ(s)
即
v π ( s ) = max a ∈ A q π ( s , a ) v^{\pi}(s)=\max _{a \in \mathcal{A}} q^{\pi}(s, a) vπ(s)=a∈Amaxqπ(s,a) -
上式被称为
Bellman optimality equation
。Bellman optimality equation 表达了这样一个事实:最佳策略下的一个状态的价值必须等于在这个状态下采取最佳动作得到的回报的期望。 -
当 MDP 满足 Bellman optimality equation 的时候,整个 MDP 已经到达最佳的状态。
-
最佳的价值函数到达过后,
Bellman optimlity equation
就会满足。
v ∗ ( s ) = max a q ∗ ( s , a ) v^{*}(s)=\max _{a} q^{*}(s, a) v∗(s)=amaxq∗(s,a) -
另外,我们给出第二个等式,即 Q 函数的
Bellman equation
:
q ∗ ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) v ∗ ( s ′ ) q^{*}(s, a)=R(s, a)+\gamma \sum_{s^{\prime} \in S} P\left(s^{\prime} \mid s, a\right) v^{*}\left(s^{\prime}\right) q∗(s,a)=R(s,a)+γs′∈S∑P(s′∣s,a)v∗(s′) -
我们可以把第一个等式插入到第二个等式里面去,如下式所示:
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)+\gamma \sum_{s^{\prime} \in S} P\left(s^{\prime} \mid s, a\right) v^{*}\left(s^{\prime}\right) \\ &=R(s,a)+\gamma \sum_{s^{\prime} \in S} P\left(s^{\prime} \mid s, a\right) \max _{a} q^{*}(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 函数之间的转移。agent下一步的状态,取了 max 这个值过后,就会跟它最佳的状态等价。 -
Q-learning
是基于Bellman Optimality Equation
来进行的,当它取 max a ′ q ∗ ( s ′ , a ′ ) \underset{a'}{\max} q^{*}\left(s^{\prime}, a^{\prime}\right) a′maxq∗(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)+\gamma \sum_{s^{\prime} \in S} P\left(s^{\prime} \mid s, a\right) \max _{a^{\prime}} q^{*}\left(s^{\prime}, a^{\prime}\right) q∗(s,a)=R(s,a)+γs′∈S∑P(s′∣s,a)a′maxq∗(s′,a′) -
我们还可以把第二个等式插入到第一个等式,就可以得到状态-价值函数的转移。
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 _{a} q^{*}(s, a) \\ &=\max_{a} \mathbb{E}[G_t|s_t=s,a_t=a]\\ &=\max_{a}\mathbb{E}[R_{t+1}+\gamma G_{t+1}|s_t=s,a_t=a]\\ &=\max_{a}\mathbb{E}[R_{t+1}+\gamma v^*(s_{t+1})|s_t=s,a_t=a]\\ &=\max_{a}\mathbb{E}[R_{t+1}]+ \max_a \mathbb{E}[\gamma v^*(s_{t+1})|s_t=s,a_t=a]\\ &=\max_{a} R(s,a) + \max_a\gamma \sum_{s^{\prime} \in S} P\left(s^{\prime} \mid s, a\right) v^{*}\left(s^{\prime}\right)\\ &=\max_{a} \left(R(s,a) + \gamma \sum_{s^{\prime} \in S} P\left(s^{\prime} \mid s, a\right) v^{*}\left(s^{\prime}\right)\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′))
3.13 Value Iteration
3.13.1 Principle of Optimality
我们从另一个角度思考问题,动态规划的方法将优化问题分成两个部分:
第一步执行的是最优的 action;之后后继的状态每一步都按照最优的 policy 去做,那么最后的结果就是最优的。
3.13.2 Deterministic Value Iteration
-
Value iteration
就是把Bellman Optimality Equation
当成一个update rule
来进行,如下式所示:
v ( s ) ← max a ∈ A ( R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) v ( s ′ ) ) v(s) \leftarrow \max _{a \in \mathcal{A}}\left(R(s, a)+\gamma \sum_{s^{\prime} \in \mathcal{S}} P\left(s^{\prime} \mid s, a\right) v\left(s^{\prime}\right)\right) v(s)←a∈Amax(R(s,a)+γs′∈S∑P(s′∣s,a)v(s′))上面这个等式只有当整个 MDP 已经到达最佳的状态时才满足。但这里可以把它转换成backup 的等式。我们不停地去迭代
Bellman Optimality Equation
,到了最后,它能逐渐趋向于最佳的策略,这是 value iteration 算法的精髓。 -
为了得到最佳的 v ∗ v^* v∗ ,对于每个状态的 v ∗ v^* v∗,通过
Bellman Optimality Equation
进行迭代,迭代了很多次之后,它就会收敛。
-
算法开始的时候,先把所有值初始化。有了等式 (22) 和等式 (23) 后,然后进行不停地迭代,迭代过后,然后收敛,收敛后就会得到这个 v ∗ v^* v∗ 。当我们有了 v ∗ v^* v∗ 后,一个问题是如何进一步推算出它的最佳策略。
提取最佳策略时直接用 a r g m a x arg max argmax。
3.13.3
value function
做的工作类似于 value 的反向传播,每次迭代做一步传播,所以中间过程的policy
和value function
是没有意义的。不像是 policy iteration,它每一次迭代的结果都是有意义的,都是一个完整的 policy。- 上图是一个可视化的过程,在一个 gridworld 中,我们设定了一个终点(goal),也就是左上角的点。不管你在哪一个位置开始,我们都希望能够到终点(实际上这个终点是在迭代过程中不必要的,只是为了更好的演示)。
Value iteration
的迭代过程像是一个从某一个状态(这里是我们的 goal)反向传播其他各个状态的过程。因为每次迭代只能影响到与之直接相关的状态。 - 以上图为例,实际上,对于每一个状态,我们都可以看成一个终点。迭代由每一个终点开始,每次都根据
Bellman optimality equation
重新计算value
。如果它的相邻节点value
发生变化,变得更好,那么它也会变得更好,一直到相邻节点都不变。因此,在我们迭代到 v 7 v_7 v7 之前,也就是还没将每个终点的最优的 value 传递给其他的所有状态之前,中间的几个value function
只是一种暂存的不完整的数据,它不能代表每一个 state 的value function
,所以生成的 policy 是一个没有意义的 policy。 - 上图可视化了从 v 1 v_1 v1 到 v 7 v_7 v7 每一个状态的值的变化。而且因为它每走一步,就会得到一个负的值,所以它需要尽快地到达左上角,可以发现离它越远的,那个值就越小。
- v 7 v_7 v7 收敛过后,右下角那个值是 -6,相当于它要走六步,才能到达最上面那个值。而且离目的地越近,它的价值越大。
3.14 policy iteration VS value iteration
Policy Iteration
分两步,首先进行policy evaluation
,即对当前已经搜索到的策略函数进行一个估值。得到估值过后,进行policy improvement
,即把 Q 函数算出来,我们进一步进行改进。不断重复这两步,直到策略收敛。Value iteration
直接把Bellman Optimality Equation
拿进来,然后去寻找最佳的value function
,在这里没有policy function
。当算出optimal value function
过后,我们再来提取最佳策略。
3.15 Summary for Prediction and Control in MDP
总结如上表所示,对于 MDP 里面的prediction
和control
都是用动态规划来解,我们其实采取了不同的 Bellman Equation。
- 如果是一个
prediction
的问题,即policy evaluation
的问题,直接就是不停地run
这个Bellman Expectation Equation
,这样我们就可以去估计出给定的这个策略,然后得到价值函数。 - 对于
control
,- 如果采取的算法是
policy iteration
,那这里用的是Bellman Expectation Equation
。把它分成两步,先上它的这个价值函数,再去优化它的策略,然后不停迭代。这里用到的只是Bellman Expectation Equation
。 - 如果采取的算法是
value iteration
,那这里用到的Bellman Equation
就是Bellman Optimality Equation
,通过arg max
这个过程,不停地去arg max
它,最后它就会达到最优的状态。
- 如果采取的算法是