fix some typos

This commit is contained in:
qiwang067
2020-08-15 21:48:25 +08:00
parent bdb0cf5881
commit 7de1839ba6
2 changed files with 42 additions and 34 deletions

View File

@@ -16,27 +16,33 @@
在介绍马尔可夫决策过程之前,我会给大家首先梳理一下马尔可夫、马尔可夫奖励过程。这两个过程是马尔可夫决策过程的一个基础。
## Markov Process
## Markov Process(MP)
![](img/2.4.png)如果一个状态转移是符合马尔可夫的,那就是说一个状态的下一个状态只取决于它当前状态,而跟它当前状态之前的状态都没有关系。比如说我们这里有一个 $h_t$,它包含了之前的所有状态。但是这里的转移从当前 $s_t$ 转到 $s_{t+1}$ 这个状态,它是直接就等于它之前所有的状态。我们说某一个过程,它是满足马尔可夫特征的,就是说未来的转移跟过去是独立的,它只取决于现在。这个马尔可夫特征其实是所有马尔可夫过程的一个基础。
![](img/2.4.png)如果一个状态转移是符合马尔可夫的,那就是说一个状态的下一个状态只取决于它当前状态,而跟它当前状态之前的状态都没有关系。比如说我们这里有一个 $h_t$,它包含了之前的所有状态。但是这里的转移从当前 $s_t$ 转到 $s_{t+1}$ 这个状态,它是直接就等于它之前所有的状态。如果某一个过程满足`马尔可夫性质(Markov Property)`,就是说未来的转移跟过去是独立的,它只取决于现在。马尔可夫性质是所有马尔可夫过程的基础。
![](img/2.5.png)
首先看一看马尔可夫链。举个例子,这个图里面有四个状态,这四个状态从 $s_1,s_2,s_3,s_4$ 之间互相转移。比如说从 $s_1$ 开始, $s_1$ 有 0.1 的概率继续存活在 $s_1$ 状态。另外,它有 0.2 的概率转移到 $s_2$ ,有 0.7 的概率转移到 $s_4$ 。如果 $s_4$ 是我们当前状态的话,那么它有 0.3 的概率转移到 $s_2$ ,有 0.2 的概率转移到 $s_3$ ,另外有 0.5 的概率留在这里,所以描述这样的状态转移,我们可以用这一个状态转移矩阵。状态转移矩阵类似于一个 conditional probability。当我们知道当前我们在 $s_t$ 这个状态过后,到达下面所有状态的一个概念。所以它每一行其实描述了是从一个节点到达所有其它节点的概率
首先看一看`马尔可夫链(Markov Chain)`。举个例子,这个图里面有四个状态,这四个状态从 $s_1,s_2,s_3,s_4$ 之间互相转移。比如说从 $s_1$ 开始, $s_1$ 有 0.1 的概率继续存活在 $s_1$ 状态。另外,它有 0.2 的概率转移到 $s_2$ ,有 0.7 的概率转移到 $s_4$ 。如果 $s_4$ 是我们当前状态的话,那么它有 0.3 的概率转移到 $s_2$ ,有 0.2 的概率转移到 $s_3$ ,另外有 0.5 的概率留在这里。
我们可以用`状态转移矩阵(State Transition Matrix)`来描述这样的状态转移。状态转移矩阵类似于一个 conditional probability当我们知道当前我们在 $s_t$ 这个状态过后,到达下面所有状态的一个概念。所以它每一行其实描述了是从一个节点到达所有其它节点的概率。
![](img/2.6.png)
上图是一个马尔可夫链的例子,我们这里有七个状态。比如说从 $s_1$ 开始到 $s_2$ ,它有 0.4 的概率,然后它有 0.6 的概率继续存活在它当前的状态。 $s_2$ 有 0.4 的概率到左边,另外有 0.4 的概率到 $s_3$ ,另外有 0.2 的概率存活在它现在的状态,所以当我们给定了这个状态转移的马尔可夫链后,我们可以对这个链进行采样,这样就会得到一串的轨迹。下面我们这里有三个轨迹,都是从同一个起始点开始。假设我们还是从 $s_3$ 这个状态开始。比如说第一条链,它先到了 $s_4$ ,然后又到了 $s_5$,然后又往右到了 $s_6$ ,然后继续存活在 $s_6$ 状态。另外,第二条链说的是它从 $s_3$ 开始,先往左走到了 $s_2$ 。然后它又往右走,又回到了$s_3$ ,然后它又往左走,然后再往左走到了 $s_1$ 。通过对这个状态的采样,我们就可以生成了很多这样的轨迹。
上图是一个马尔可夫链的例子,我们这里有七个状态。比如说从 $s_1$ 开始到 $s_2$ ,它有 0.4 的概率,然后它有 0.6 的概率继续存活在它当前的状态。 $s_2$ 有 0.4 的概率到左边,另外有 0.4 的概率到 $s_3$ ,另外有 0.2 的概率存活在它现在的状态,所以当我们给定了这个状态转移的马尔可夫链后,我们可以对这个链进行采样,这样就会得到一串的轨迹。
下面我们有三个轨迹,都是从同一个起始点开始。假设还是从 $s_3$ 这个状态开始。比如说第一条链,它先到了 $s_4$ 又到了 $s_5$,又往右到了 $s_6$ ,然后继续存活在 $s_6$ 状态。另外,第二条链说的是它从 $s_3$ 开始,先往左走到了 $s_2$ 。然后它又往右走,又回到了$s_3$ ,然后它又往左走,然后再往左走到了 $s_1$ 。通过对这个状态的采样,我们就可以生成了很多这样的轨迹。
## Markov Reward Process(MRP)
![](img/2.7.png)
我们再来看一看马尔可夫奖励过程,马尔可夫奖励过程是马尔可夫链再加上了一个奖励函数。我们在定义马尔可夫奖励过程之中,这个转移矩阵跟它的这个状态都是跟马尔可夫链一样的,这里多了一个奖励函数。奖励函数是一个期望,它说当你当到达某一个状态的时候,可以获得多大的奖励,然后这里另外定义了一个 discount factor $\gamma$ 。
我们再来看一看`马尔可夫奖励过程(Markov Reward Process, MRP)`。MRP 是马尔可夫链再加上了一个奖励函数。在 MRP之中,转移矩阵跟它的这个状态都是跟马尔可夫链一样的,多了一个`奖励函数(reward function)`。奖励函数是一个期望,它说当你当到达某一个状态的时候,可以获得多大的奖励,然后这里另外定义了一个 discount factor $\gamma$ 。
![](img/2.8.png)
这里是我们刚才看的马尔可夫链,如果把奖励也放上去的话,就是说到达每一个状态,我们都会获得一个奖励。这里我们可以定义比如说它 $s_1$ 状态的时候可以获得 5 的奖励,到达 $s_7$ 的时候,它有 10 的奖励,其它状态没有任何奖励。因为这里状态是有限的,所以我们可以用一个向量来表示这个奖励函数,这个向量就是表示了每个点的奖励的大小。我们可以通过一个形象的例子来理解马尔可夫奖励过程,你其实可以把它看成一个纸船,就是当我们把一个纸船放到一个河流之中,那么它就会随着这个河流而流动,它自身是没有动力的,所以你可以把这个马尔可夫奖励过程看成是一个随波逐流的例子,当我们从某一个点开始的时候,这个纸船它就会随着这个我们事先定义好的状态转移进行流动,然后它到达每个状态过后,我们就有可能获得一些奖励。
这里是我们刚才看的马尔可夫链,如果把奖励也放上去的话,就是说到达每一个状态,我们都会获得一个奖励。这里我们可以定义比如说它 $s_1$ 状态的时候可以获得 5 的奖励,到达 $s_7$ 的时候,它有 10 的奖励,其它状态没有任何奖励。因为这里状态是有限的,所以我们可以用一个向量来表示这个奖励函数,这个向量就是表示了每个点的奖励的大小。
我们可以通过一个形象的例子来理解 MRP你其实可以把它看成一个纸船我们把一个纸船放到河流之中那么它就会随着这个河流而流动它自身是没有动力的所以你可以把 MRP 看成是一个随波逐流的例子,当我们从某一个点开始的时候,这个纸船就会随着事先定义好的状态转移进行流动,它到达每个状态过后,我们就有可能获得一些奖励。
![](img/2.9.png)
@@ -44,7 +50,7 @@
* 第一个是 `horizon` 的概念,它说明了同一个 episode 或者是整个一个轨迹的长度,它是由有限个步数决定的。
* 这里我们再定义一个 `return`。Return 说的是我们把奖励进行折扣然后获得的这个收益。Return 可以定义为奖励的逐步叠加,然后这里有一个叠加系数,就是越往后得到的奖励,折扣得越多。这说明我们其实更希望得到现有的奖励,未来的奖励就要把它打折扣。
* 当我们有了这个 return 过后,就可以正式定义一个状态的价值了,就是 `state value function`。然后对于这个马尔可夫奖励过程,它里面定义成是关于这个 return 的期望, $G_t$ 是我们之前定义的 discounted return。然后我们这里取了一个期望期望就是说从这个状态开始你有可能获得多大的价值。所以这个期望也可以看成是一个对未来可能获得奖励的它的当前价值的一个表现。就是当你进入某一个状态过后你现在就有多大的价值。
* 当我们有了这个 return 过后,就可以正式定义一个状态的价值了,就是 `state value function`。然后对于这个MRP,它里面定义成是关于这个 return 的期望, $G_t$ 是我们之前定义的 discounted return。然后我们这里取了一个期望期望就是说从这个状态开始你有可能获得多大的价值。所以这个期望也可以看成是一个对未来可能获得奖励的它的当前价值的一个表现。就是当你进入某一个状态过后你现在就有多大的价值。
![](img/2.10.png)这里我们简短地解释一下为什么需要 discounted factor。
@@ -56,7 +62,7 @@
![](img/2.11.png)
这里我们再来看一看,在这个马尔可夫奖励过程里面,如何计算它的价值。这个马尔可夫奖励过程依旧是这个状态转移。它的奖励函数是定义成这样,它在进入第一个状态的时候,它会得到 5 的奖励,进入第七个状态的时候会得到 10 的奖励,其它状态都没有奖励。我们现在可以计算每一个轨迹得到的奖励,比如我们这里对于这个 $s_4,s_5,s_6,s_7$ 轨迹的奖励进行计算,我们这里折扣系数是 0.5。我们在 $s_4$ 的时候,并没有任何奖励,所以这里是零。下一个状态 $s_5$ 的时候,因为我们已经到了下一步了,所以我们要把 $s_5$ 进行一个折扣,$s_5$ 本身也是没有奖励的。然后是到$s_6$ ,然后也没有任何奖励。折扣系数应该是下两步,所以我们要再乘以 $\frac{1}{2}$ 。然后这里终于我们到达$s_7$ ,然后我们获得了一个奖励。但是因为 $s_7$ 这个状态是未来才获得的奖励,所以我们要进行三次折扣。所以对于这个轨迹,它的 return 就是一个 1.25,类似地,我们可以得到其它轨迹的 return 。
这里我们再来看一看,在这个 MRP 里面,如何计算它的价值。这个 MRP 依旧是这个状态转移。它的奖励函数是定义成这样,它在进入第一个状态的时候,它会得到 5 的奖励,进入第七个状态的时候会得到 10 的奖励,其它状态都没有奖励。我们现在可以计算每一个轨迹得到的奖励,比如我们这里对于这个 $s_4,s_5,s_6,s_7$ 轨迹的奖励进行计算,我们这里折扣系数是 0.5。我们在 $s_4$ 的时候,并没有任何奖励,所以这里是零。下一个状态 $s_5$ 的时候,因为我们已经到了下一步了,所以我们要把 $s_5$ 进行一个折扣,$s_5$ 本身也是没有奖励的。然后是到$s_6$ ,然后也没有任何奖励。折扣系数应该是下两步,所以我们要再乘以 $\frac{1}{2}$ 。然后这里终于我们到达$s_7$ ,然后我们获得了一个奖励。但是因为 $s_7$ 这个状态是未来才获得的奖励,所以我们要进行三次折扣。所以对于这个轨迹,它的 return 就是一个 1.25,类似地,我们可以得到其它轨迹的 return 。
这里就引出了一个问题,当我们有了一些轨迹的实际 return怎么计算它的价值函数。比如说我们想知道 $s_4$ 状态的价值,就是当你进入 $s_4$ 后,它的价值到底如何。
@@ -64,7 +70,7 @@
![](img/2.12.png)
但是这里我们采取了另外一种计算方法,我们通过一定的推导就可以从这个价值函数里面推导出 `Bellman Equation贝尔曼等式`。Bellman Equation 定义了当前状态跟未来状态之间的这个关系。比如 $s'$ 我们可以把它看成未来的所有状态。然后这里有一个转移 $P(s'|s)$ ,就是我们从当前状态转移到未来状态,那么它之间是满足于这个关系。然后我们可以把第二部分看成是一个 Discounted sum of future reward。$V(s')$ 代表的是未来某一个状态的价值,那么我们从当前这个位置开始有一定的概率去到未来的所有状态,所以我们要把这个概率也写上去,这个转移矩阵也写上去,然后我们就得到了未来状态。然后再乘以一个 $\gamma$。这样就可以把未来打折扣,然后再加上当前立刻可以得到的这个奖励,这样就组成了这个 Bellman Equation。这个推导过程大家其实可以去练习练习就从这个定义出发然后把它分解开我们就可以得到 Bellman Equation。
但是这里我们采取了另外一种计算方法,我们通过一定的推导就可以从这个价值函数里面推导出 `Bellman Equation贝尔曼等式`**Bellman Equation 定义了当前状态跟未来状态之间的这个关系**。比如 $s'$ 我们可以把它看成未来的所有状态。然后这里有一个转移 $P(s'|s)$ ,就是我们从当前状态转移到未来状态,那么它之间是满足于这个关系。然后我们可以把第二部分看成是一个 Discounted sum of future reward。$V(s')$ 代表的是未来某一个状态的价值,那么我们从当前这个位置开始有一定的概率去到未来的所有状态,所以我们要把这个概率也写上去,这个转移矩阵也写上去,然后我们就得到了未来状态。然后再乘以一个 $\gamma$。这样就可以把未来打折扣,然后再加上当前立刻可以得到的这个奖励,这样就组成了这个 Bellman Equation。这个推导过程大家其实可以去练习练习就从这个定义出发然后把它分解开我们就可以得到 Bellman Equation。
>Bellman Equation 就是当前状态与未来状态的迭代关系表示当前状态的值函数可以通过下个状态的值函数来计算。Bellman Equation 因其提出者、动态规划创始人 Richard Bellman 而得名 ,也 叫作“动态规划方程”。
@@ -82,15 +88,15 @@ V = R+ \gamma PV
$$
我们可以直接得到一个`解析解(analytic solution)`,就通过矩阵求逆的过程,就可以把这个 V 的这个价值直接求出来。但是一个问题是这个矩阵求逆的过程的复杂度是 $O(N^3)$。所以就当我们状态非常多的时候,比如说从我们现在十个状态到一千个状态,到一百万个状态。那么当我们有一百万个状态的时候,这个转移矩阵就会是个一百万乘以一百万的一个矩阵。这样一个大矩阵的话求逆是非常困难的,所以这种通过解析解去解,只能对于很小量的马尔可夫奖励过程
我们可以直接得到一个`解析解(analytic solution)`,就通过矩阵求逆的过程,就可以把这个 V 的这个价值直接求出来。但是一个问题是这个矩阵求逆的过程的复杂度是 $O(N^3)$。所以就当我们状态非常多的时候,比如说从我们现在十个状态到一千个状态,到一百万个状态。那么当我们有一百万个状态的时候,这个转移矩阵就会是个一百万乘以一百万的一个矩阵。这样一个大矩阵的话求逆是非常困难的,所以这种通过解析解去解,只能对于很小量的MRP
![](img/2.15.png)
接下来我们来求解这个价值函数。我们有这个迭代的方法来解这种状态非常多的这个马尔可夫奖励过程。这里迭代的方法就有几种,比如说我们可以通过动态规划的方法,也可以通过蒙特卡罗的办法,就通过采样的办法去计算它。另外我们也可以通过 Temporal-Difference Learning 的那个办法。这个 `Temporal-Difference Learning``TD Leanring`,就是动态规划和蒙特卡罗的一个结合。
接下来我们来求解这个价值函数。我们有这个迭代的方法来解这种状态非常多的 MRP。这里迭代的方法就有几种,比如说我们可以通过动态规划的方法,也可以通过蒙特卡罗的办法,就通过采样的办法去计算它。另外我们也可以通过 Temporal-Difference Learning 的那个办法。这个 `Temporal-Difference Learning``TD Leanring`,就是动态规划和蒙特卡罗的一个结合。
![](img/2.16.png)
首先我们来看蒙特卡罗的办法来计算它的一个价值函数。蒙特卡罗就跟我们之前采用的这个方法是很类似,就说我们当得到一个马尔可夫奖励过程过后,我们可以从某一个状态开始,然后让它让把这个小船放进去,让它随波逐流,这样就会产生一个轨迹。产生了一个轨迹过后,就会得到一个奖励,那么就直接把它的 Discounted 的奖励 $g$ 直接算出来。算出来过后就可以把它积累起来,当积累到一定的轨迹数量过后,然后直接除以这个轨迹,然后就会得到它的这个价值。
首先我们来看蒙特卡罗的办法来计算它的一个价值函数。蒙特卡罗就跟我们之前采用的这个方法是很类似,就说我们当得到一个MRP过后,我们可以从某一个状态开始,然后让它让把这个小船放进去,让它随波逐流,这样就会产生一个轨迹。产生了一个轨迹过后,就会得到一个奖励,那么就直接把它的 Discounted 的奖励 $g$ 直接算出来。算出来过后就可以把它积累起来,当积累到一定的轨迹数量过后,然后直接除以这个轨迹,然后就会得到它的这个价值。
比如说我们要算 $s_4$ 状态的一个价值,就可以从 $s_4$ 状态开始,随机产生很多轨迹,就产生很多小船,然后扔到这个转移矩阵里面去,然后它就会随波逐流,产生轨迹。每个轨迹,我们可以算到它的这个 return 。那么每个轨迹都会得到一个 return让我们得到大量的 return 。比如说一百个、一千个的 return ,然后直接取一个平均,那么就可以等价于它现在 $s_4$ 这个价值。因为 $s_4$ 的价值 $V(s_4)$ 定义了你未来可能得到多少的奖励。这就是蒙特卡罗采样的方法。
@@ -100,37 +106,37 @@ $$
![](img/2.18.png)
相对于马尔可夫奖励过程,马尔可夫决策过程多了一个 `decision`,其它的定义跟马尔可夫奖励过程都是类似的。这里我们多了一个决策,多了一个 action ,那么这个状态转移也多了一个 condition就是你采取某一种行为然后你未来的状态会不同。它不仅是依赖于你当前的状态也依赖于在当前状态你这个 agent 它采取的这个行为会决定它未来的这个状态走向。对于这个价值函数,它也是多了一个条件,多了一个你当前的这个行为,就是说你当前的状态以及你采取的行为会决定你在当前可能得到的奖励多少。
相对于 MRP`马尔可夫决策过程(Markov Decision Process)`多了一个 `decision`,其它的定义跟 MRP 都是类似的。这里我们多了一个决策,多了一个 action ,那么这个状态转移也多了一个 condition就是你采取某一种行为然后你未来的状态会不同。它不仅是依赖于你当前的状态也依赖于在当前状态你这个 agent 它采取的这个行为会决定它未来的这个状态走向。对于这个价值函数,它也是多了一个条件,多了一个你当前的这个行为,就是说你当前的状态以及你采取的行为会决定你在当前可能得到的奖励多少。
![](img/2.19.png)
Policy 定义了在某一个状态应该采取什么样的行为,当我们知道当前状态过后,我们可以带入这个 policy function那我们会得到一个概率概率就代表了在所有可能的行为里面怎样去采取行动。就可能有 0.7 的概率往左走,有 0.3 的概率往右走,这样是一个概率的一个表示。另外这个策略也可能是确定的,它有可能是直接输出一个值,或者就直接告诉你当前应该采取什么样的行为,而不是一个行为的概率。然后这里我们有一个假设,就是这个概率函数应该是静态的(stationary),不同时间点,你采取的行为其实都是对这个 policy function 进行采样。
Policy 定义了在某一个状态应该采取什么样的行为,当我们知道当前状态过后,我们可以带入这个 policy function那我们会得到一个概率概率就代表了在所有可能的行为里面怎样去采取行动。就可能有 0.7 的概率往左走,有 0.3 的概率往右走,这样是一个概率的表示。另外这个策略也可能是确定的,它有可能是直接输出一个值,或者就直接告诉你当前应该采取什么样的行为,而不是一个行为的概率。然后这里我们有一个假设,就是这个概率函数应该是静态的(stationary),不同时间点,你采取的行为其实都是对这个 policy function 进行采样。
![](img/2.20.png)
这里说明了马尔可夫决策过程跟马尔可夫奖励过程的之间的一个转换,就是当我们已知一个马尔可夫决策过程以及一个 policy $\pi$ 的时候,我们可以把马尔可夫决策过程转换成马尔可夫奖励过程。在马尔可夫决策过程里面,转移函数 $P(s'|s,a)$ 是基于它当前状态以及它当前的 action因为我们现在已知它 policy function就是说在每一个状态我们知道它可能采取的行为的概率那么就可以直接把这个 action 进行加和,直接把这个 a 去掉,那我们就可以得到对于马尔可夫奖励过程的一个转移,这里就没有 action。对于这个奖励函数我们也可以把 action 拿掉,这样就会得到一个类似于马尔可夫奖励过程的奖励函数。
这里说明了 MDP 跟 MRP 的之间的一个转换,就是已知一个 MDP 以及一个 policy $\pi$ 的时候,我们可以把 MDP 转换成MRP。在 MDP 里面,转移函数 $P(s'|s,a)$ 是基于它当前状态以及它当前的 action因为我们现在已知它 policy function就是说在每一个状态我们知道它可能采取的行为的概率那么就可以直接把这个 action 进行加和,直接把这个 a 去掉,那我们就可以得到对于 MRP 的一个转移,这里就没有 action。对于这个奖励函数我们也可以把 action 拿掉,这样就会得到一个类似于 MRP 的奖励函数。
![](img/2.21.png)
这里我们看一看,马尔可夫决策过程里面的状态转移跟之前马尔可夫奖励过程以及马尔可夫链的一个差异。
这里我们看一看,MDP 里面的状态转移跟 MRP 以及 MP 的一个差异。
* 对于之前的马尔可夫链的过程,它的转移是直接就决定,就从你当前是 s那么就直接通过这个转移概率就直接决定了你下一个状态会是什么。
* 但是对于马尔可夫决策过程,它的中间多了一层这个行为 a ,就是说在你当前这个状态的时候,你首先要决定的是采取某一种行为。那么你会到了某一个黑色的这个节点。到了这个黑色的节点,因为你有一定的不确定性,当你当前状态决定过后以及你当前采取的行为过后,你到未来的状态其实也是一个概率分布。所以你采取行为以及你决定,然后你可能有有多大的概率到达某一个未来状态,以及另外有多大概率到达另外一个状态。所以在这个当前状态跟未来状态转移过程中这里多了一层决策性,这是马尔可夫决策过程跟之前的马尔可夫过程很不同的一个地方。在马尔科夫决策过程中,行为是由 agent 决定,所以多了一个 componentagent 会采取行为来决定未来的状态转移。
* 但是对于 MDP,它的中间多了一层这个行为 a ,就是说在你当前这个状态的时候,你首先要决定的是采取某一种行为。那么你会到了某一个黑色的这个节点。到了这个黑色的节点,因为你有一定的不确定性,当你当前状态决定过后以及你当前采取的行为过后,你到未来的状态其实也是一个概率分布。所以你采取行为以及你决定,然后你可能有有多大的概率到达某一个未来状态,以及另外有多大概率到达另外一个状态。所以在这个当前状态跟未来状态转移过程中这里多了一层决策性,这是MDP跟之前的马尔可夫过程很不同的一个地方。在马尔科夫决策过程中,行为是由 agent 决定,所以多了一个 componentagent 会采取行为来决定未来的状态转移。
![](img/2.22.png)
顺着马尔可夫决策过程的定义,我们可以把 state-value function就是在马尔可夫决策过程里面的价值函数也进行一个定义,它的定义是跟马尔可夫奖励过程是类似的,但是这里 expectation over policy就是这个期望是基于这个你采取的这个 policy ,就当你的 policy 决定过后,让我们通过对这个 policy 进行采样,然后我们可以得到一个期望。那么就可以计算出它的这个价值函数。这里我们另外引入了一个 `Q 函数(action-value function)`
顺着 MDP 的定义,我们可以把 state-value function就是在 MDP 里面的价值函数也进行一个定义,它的定义是跟 MRP是类似的,但是这里 expectation over policy就是这个期望是基于你采取的这个 policy ,就当你的 policy 决定过后,让我们通过对这个 policy 进行采样,然后我们可以得到一个期望。那么就可以计算出它的这个价值函数。这里我们另外引入了一个 `Q 函数(action-value function)`
这个 Q 函数定义的是某一个状态某一个行为,然后它有可能得到的这个 return 的一个期望,这里期望其实也是 over policy function。所以你需要对这个 policy function 进行一个加和,然后最后得到它的这个价值。第三步,这里导出了价值函数跟 Q 函数之间的一个关系。价值函数跟 Q 函数的关系,就是直接对价值函数中的行为函数进行加和,就可以得到这个价值。
![](img/2.23.png)
我们这里会得到一个 `Bellman Expectation Equation`,通过对它价值函数的定义,然后我们可以对它进行一个分解,我们就可以直接又得到一个这个类似于我们之前马尔可夫奖励过程的 Bellman Equation这里叫 Bellman Expectation Equation。 因为这里期望是期望于它所有的这个 policy 所有可能的行为都把它 marginalize 掉,然后得到 return。那么对于 Q 函数,我们也可以做类似的分解,那么也可以得到对于 Q 函数的这个 Bellman Expectation Equation。
我们这里会得到一个 `Bellman Expectation Equation`,通过对它价值函数的定义,我们可以对它进行一个分解,我们就可以直接又得到一个这个类似于我们之前 MRP 的 Bellman Equation这里叫 Bellman Expectation Equation。 因为这里期望是期望于它所有的这个 policy 所有可能的行为都把它 marginalize 掉,然后得到 return。那么对于 Q 函数,我们也可以做类似的分解,那么也可以得到对于 Q 函数的这个 Bellman Expectation Equation。
Bellman Expectation Equation 定义了你当前状态跟未来状态之间的一个关联。
**Bellman Expectation Equation 定义了你当前状态跟未来状态之间的一个关联。**
![](img/2.24.png)
@@ -148,35 +154,37 @@ Bellman Expectation Equation 定义了你当前状态跟未来状态之间的一
![](img/2.27.png)
当我们知道一个马尔可夫决策过程以及要采取的策略 $\pi$ ,那我们计算价值函数的过程,就是 `policy evaluation`。就像我们在评估这个策略我们会得到多大的奖励。Policy evaluation 在有些地方也被叫做 `prediction`,也就是预测你当前采取的这个策略最终会产生多少的价值。
当我们知道一个 MDP 以及要采取的策略 $\pi$ ,那我们计算价值函数的过程,就是 `policy evaluation`。就像我们在评估这个策略我们会得到多大的奖励。Policy evaluation 在有些地方也被叫做 `prediction`,也就是预测你当前采取的这个策略最终会产生多少的价值。
![](img/2.28.png)
马尔可夫决策过程,你其实可以把它想象成一个摆渡的人,就在这个船上面,其实有一个人它可以控制这个船的移动,这样就避免了这个船随波逐流。因为在每一个时刻,这个人会决定采取什么样的一个行为,这样会把这个船进行导向。这样就相对于马尔可夫奖励过程跟马尔可夫链的过程的话,这个纸的小船只在一个随波逐流,然后产生轨迹。这里 MDP 的不同就是我们有一个主体,这个 agent 去控制这个船,然后这样我们就可以尽可能多地获得奖励。
MDP,你其实可以把它想象成一个摆渡的人在这个船上面,可以控制这个船的移动,这样就避免了这个船随波逐流。因为在每一个时刻,这个人会决定采取什么样的一个行为,这样会把这个船进行导向。MRP 跟马尔可夫链的过程的话,这个纸的小船随波逐流然后产生轨迹。MDP 的不同就是我们有一个 agent 去控制这个船,这样我们就可以尽可能多地获得奖励。
![](img/2.29.png)
这里我们看一看这个例子怎么做 policy evaluation怎么在这个决策过程里面计算它每一个状态的价值。假设环境里面有两种行为,就是往左走往右走的行为。然后我们这里 reward 的定义。因为其实这个现在的奖励函数应该是关于行为以及状态两个变量的一个函数,但我们这里就说,对于所有行为不管你采取什么行为,然后你只要是到达状态一了,然后都有 5 的奖励。只要你到达状态 $s_7$ 了,你就有 10 的奖励,然后中间没有任何奖励。那么假设我们现在采取的一个策略,这个策略我们说我们不管在任何状态,我们采取的策略都是往左走,我们也这里假设我们的价值这个折扣因子是零,那么直接就可以得到对于这样一个 deterministic policy那么最后估算出的价值函数是是一致的。怎么得到这个结果其实我们可以直接在去 run 这个 iterative Equation就把这个 Bellman Expectation Equation 拿到这个里面来,然后不停地迭代,最后它会收敛。收敛过后,然后它的值就是它每一个状态的价值
我们再看下 policy evaluation 的例子,怎么在这个决策过程里面计算它每一个状态的价值。假设环境里面有两种行为往左走往右走。
现在的奖励函数应该是关于行为以及状态两个变量的一个函数。但我们这里就说,不管你采取什么行为,只要到达状态一,就有 5 的奖励。只要你到达状态 $s_7$ 了,就有 10 的奖励,中间没有任何奖励。假设我们现在采取的一个策略,这个策略是说不管在任何状态,我们采取的策略都是往左走,这里假设价值折扣因子是零,那么对于这样一个 deterministic policy最后估算出的价值函数是一致的。怎么得到这个结果我们可以直接在去 run 这个 iterative equation就把这个 Bellman Expectation Equation 拿到这个里面来,然后不停地迭代,最后它会收敛。收敛过后,它的值就是它每一个状态的价值。
![](img/2.30.png)
我们再来看另外一个情况,就是如果我们这里有折扣了,这个折扣因子是 0.5,我们可以通过这个等式进行迭代:
再来看另外一个情况,就是如果折扣因子是 0.5,我们可以通过这个等式进行迭代:
$$
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)
$$
然后就会得到它的状态。另外一个练习的一个例子,就是说我们现在采取的 policy 在每个状态,我们有 0.5 的概率往左走。另外有 0.5 的概率往右走,那么放到这个状态里面去如何计算。其实也是把这个 Bellman Expectation Equation 拿出来,然后进行迭代就可以算出来了,就当我们开始的时候,我们可以初始化。初始化这个不同的 $v(s')$ 都会有一个值,那么放到这个里面去迭代,最后它的 $v$ ,然后就会算出来。
然后就会得到它的状态。另外一个练习的例子,就是说我们现在采取的 policy 在每个状态,我们有 0.5 的概率往左走有 0.5 的概率往右走,那么放到这个状态里面去如何计算。其实也是把这个 Bellman Expectation Equation 拿出来,然后进行迭代就可以算出来了,就当我们开始的时候,我们可以初始化。初始化这个不同的 $v(s')$ 都会有一个值,那么放到这个里面去迭代,最后它的 $v$ ,然后就会算出来。
![](img/2.31.png)
接下来给大家介绍马尔可夫决策过程`prediction``control`,这两个问题是马尔可夫决策过程里面的核心问题。
接下来给大家介绍 MDP `prediction``control`,这两个问题是 MDP 里面的核心问题。
* 对于 prediction,它的意思是说给定一个马尔可夫决策过程以及一个给定的 policy $\pi$ 那我们去计算它的 value function就等于每个状态它的价值函数是多少。
* Control 这个问题是说我们去寻找一个最佳的一个策略,它的 input 就是马尔可夫决策过程,输出是通过去寻找它的最佳策略,然后同时输出它的最佳价值函数(optimal value function)以及它的这个最佳策略(optimal policy)。
* Prediction 的意思是说给定一个 MDP 以及一个 policy $\pi$ ,去计算它的 value function就等于每个状态它的价值函数是多少。
* Control 这个问题是说我们去寻找一个最佳的一个策略,它的 input 就是MDP,输出是通过去寻找它的最佳策略,然后同时输出它的最佳价值函数(optimal value function)以及它的这个最佳策略(optimal policy)。
* 在 MDP 里面prediction 和 control 都可以通过这个动态规划去解决。
![](img/2.32.png)
首先我们来看一下`动态规划`。动态规划是说的是我们把可以把一个问题分解成一个最佳子结构,当我们可以把一些子结构都可以解决的话,那么它就可以组成一个最优的解。马尔可夫决策过程是满足动态规划的要求的,就是在 Bellman Equation 里面,我们可以把它分解成一个递归的一个结构。当我们把它分解成一个递归的结构的时候,如果我们的子问题子状态能得到一个值,那么它的未来状态因为跟子状态是直接相连的。那我们也可以继续推算出来。所以这个价值函数就可以储存它以及重用它的最佳的解。所以动态规划是解 MDP prediction 和 control 一个非常有效的方式。
首先我们来看一下`动态规划`。动态规划是说我们把可以把一个问题分解成一个最佳子结构,当我们可以把一些子结构都可以解决的话,那么它就可以组成一个最优的解。MDP是满足动态规划的要求的,就是在 Bellman Equation 里面,我们可以把它分解成一个递归的一个结构。当我们把它分解成一个递归的结构的时候,如果我们的子问题子状态能得到一个值,那么它的未来状态因为跟子状态是直接相连的。那我们也可以继续推算出来。所以这个价值函数就可以储存它以及重用它的最佳的解。所以动态规划是解 MDP prediction 和 control 一个非常有效的方式。
![](img/2.33.png)
@@ -188,7 +196,7 @@ Policy evaluation 的核心思想就是直接把这个 Bellman expectation backu
$$
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)
$$
然后反复迭代,然后就会得到一个收敛的价值函数的值,这个函数因为我们已经给定了它的这个 policy function那我们可以直接把它简化成一个马尔可夫奖励过程的一个表达形式,那么它的形式就更简洁一些,就相当于我们把这个 $a$ 去掉。然后这样它就只有价值函数跟转移函数了。那我们通过去迭代这个更简化的一个函数,这样我们也可以得到它每个状态的价值,因为不管是在马尔可夫奖励过程以及马尔可夫决策过程,它的这个价值函数包含的这个变量都是只跟这个状态有关就相当于进入某一个状态,未来可能得到多大的价值。
然后反复迭代,然后就会得到一个收敛的价值函数的值,这个函数因为我们已经给定了它的这个 policy function那我们可以直接把它简化成一个 MRP 的表达形式,那么它的形式就更简洁一些,就相当于我们把这个 $a$ 去掉。然后这样它就只有价值函数跟转移函数了。那我们通过去迭代这个更简化的一个函数,这样我们也可以得到它每个状态的价值,因为不管是在 MRP 以及 MDP,它的这个价值函数包含的这个变量都是只跟这个状态有关就相当于进入某一个状态,未来可能得到多大的价值。
![](img/2.35.png)
@@ -204,7 +212,7 @@ $$
![](img/2.38.png)
在这样的环境里面,现在我们想计算它每一个状态的价值。然后这里我们也定义了它的 reward function。你可以看到有些状态上面有一个 R 的这个值。比如我们这边有些值是为负的,然后在这个棋盘的中间这个位置,可以能看到有一个 R 1.0,为正的一个价值函数。 所以每个状态对应了一个值,然后有一些状态没有任何值,就说明它的这个 reward function它的奖励是为零的。
在这样的环境里面,我们想计算它每一个状态的价值。然后我们也定义了它的 reward function。你可以看到有些状态上面有一个 R 的这个值。比如我们这边有些值是为负的,然后在这个棋盘的中间这个位置,可以能看到有一个 R 的值是 1.0,为正的一个价值函数。 所以每个状态对应了一个值,然后有一些状态没有任何值,就说明它的这个 reward function它的奖励是为零的。
所以,当我们开始做这个 policy evaluationpolicy evaluation是一个不停迭代的过程。当我们初始化的时候所有的 $v(s)$ 都是 0。我们现在迭代一次迭代一次过后你发现有些状态上面值已经产生了变化。比如说那些有奖励的值比如有些状态的值的 R 为 -1迭代一次过后它就会得到 -1 的这个奖励。对于中间这个绿色的,因为它的奖励为正,所以它是 + 1 的状态。
@@ -292,7 +300,7 @@ Value iteration 算法的目的是为了得到一个最佳的策略。一个解
![](img/2.56.png)
现在我们进行 policy improvement按 policy update。按这个 policy update 过后,你可以发现有些格子里面的这个 policy 已经产生变化。比如说对于中间这个-1的这个状态它的最佳策略是往下走。当你到达这个状态后你应该往下这样就会得到最佳的这个值。让旁边这个绿色旁边的这个方块它的策略也改变了它现在选取的最佳策略是往左走在当前状态的时候最佳策略应该是往左走才对。
现在进行 policy improvement按 policy update。按这个 policy update 过后,你可以发现有些格子里面的这个 policy 已经产生变化。比如说对于中间这个-1的这个状态它的最佳策略是往下走。当你到达这个状态后你应该往下这样就会得到最佳的这个值。让旁边这个绿色旁边的这个方块它的策略也改变了它现在选取的最佳策略是往左走在当前状态的时候最佳策略应该是往左走才对。
![](img/2.57.png)
@@ -321,7 +329,7 @@ Value iteration 算法的目的是为了得到一个最佳的策略。一个解
![](img/2.63.png)
这个 Demo 里面是一个代码,就是为了解一个叫 `FrozenLake` 的一个例子,这个例子是 OpenAI Gym里的一个环境跟 gridworld 很像,不过它每一个状态转移是一个 probability。
这个 Demo 里面是一个代码,就是为了解一个叫 `FrozenLake` 的一个例子,这个例子是 OpenAI Gym 里的一个环境,跟 gridworld 很像,不过它每一个状态转移是一个 probability。
![](img/2.64.png)

View File

@@ -14,7 +14,7 @@
当然在输出每一个动作之前,其实你都是可以选择不同的动作。比如说在 $t$ 时刻,我选择跑路的时候,熊已经追上来了,如果说 $t$ 时刻,我没有选择装死,而我是选择跑路的话,这个时候熊已经追上了,那这个时候,其实我有两种情况转移到不同的状态去,就我有一定的概率可以逃跑成功,也有很大的概率我会逃跑失败。那我们就用状态转移概率 $p\left[s_{t+1}, r_{t} \mid s_{t}, a_{t}\right]$ 来表述说在 $s_t$ 的状态选择了 $a_t$ 的动作的时候,转移到 $s_{t+1}$ ,而且拿到 $r_t$ 的概率是多少。
这样子的一个状态转移概率是具有`马尔可夫性质(Markov Property)`的(系统下一时刻的状态仅由当前时刻的状态决定,不依赖于以往任何状态)。因为这个状态转移概率,它是下一时刻的状态是取决于当前的状态,它和之前的 $s_{t-1}$ 和 $s_{t-2}$ 都没有什么关系。然后再加上说这个过程也取决于智能体跟环境交互的这个$a_t$ ,所以有一个决策的一个过程在里面。我们就称这样的一个过程为`马尔可夫决策过程(Markov Decision Process, MDP)`
这样子的一个状态转移概率是具有`马尔可夫性质`的(系统下一时刻的状态仅由当前时刻的状态决定,不依赖于以往任何状态)。因为这个状态转移概率,它是下一时刻的状态是取决于当前的状态,它和之前的 $s_{t-1}$ 和 $s_{t-2}$ 都没有什么关系。然后再加上说这个过程也取决于智能体跟环境交互的这个$a_t$ ,所以有一个决策的一个过程在里面。我们就称这样的一个过程为`马尔可夫决策过程(Markov Decision Process, MDP)`
MDP 就是序列决策这样一个经典的表达方式。MDP 也是强化学习里面一个非常基本的学习框架。状态、动作、状态转移概率和奖励 $(S,A,P,R)$,这四个合集就构成了强化学习 MDP 的四元组,后面也可能会再加个衰减因子构成五元组。