fix some typos

This commit is contained in:
qiwang067
2020-08-09 09:32:28 +08:00
parent 5659776d4b
commit e73b33e101

View File

@@ -2,61 +2,69 @@
![](img/2.1.png) ![](img/2.1.png)
这节课我会给大家介绍马尔可夫决策过程。在介绍马尔可夫决策过程之前,我会给大家介绍它的简化版本:马尔可夫链以及马尔可夫奖励过程,通过跟这两种过程的比较,我们可以更生动地理解马尔可夫决策过程。第二部分我会给大家介绍马尔可夫决策过程中的 policy evaluation就是当给定一个决策过后我们怎么去计算它的价值函数。第三部分我会给大家介绍马尔可夫决策过程的控制具体有两种算法`policy iteration``value iteration` 这节课我会给大家介绍马尔可夫决策过程。在介绍马尔可夫决策过程之前,介绍它的简化版本:马尔可夫链以及马尔可夫奖励过程,通过跟这两种过程的比较,我们可以更生动地理解马尔可夫决策过程。第二部分我会给大家介绍马尔可夫决策过程中的 policy evaluation就是当给定一个决策过后我们怎么去计算它的价值函数。第三部分我会给大家介绍马尔可夫决策过程的控制具体有两种算法`policy iteration``value iteration`
![](img/2.2.png) ![](img/2.2.png)
上图介绍了在强化学习里面 agent 跟 environment 之间的交互agent 在得到环境的状态过后,它会采取行为,它会把这个采取的行为返还给环境。环境在得到 agent 的行为过后,它会进入下一个状态,把下一个状态传回 agent。在强化学习中agent 跟环境就是这样进行交互的,这个交互过程其实是可以通过马尔可夫决策过程来表示,所以马尔可夫决策过程是强化学习里面的一个基本框架。在马尔可夫决策过程中,它的环境是 fully observable ,就是全部可以观测的,但是很多时候环境里面有些量是不可观测的,但是这个部分观测的问题也可以转换成一个 MDP 的问题。 上图介绍了在强化学习里面 agent 跟 environment 之间的交互agent 在得到环境的状态过后,它会采取行为,它会把这个采取的行为返还给环境。环境在得到 agent 的行为过后,它会进入下一个状态,把下一个状态传回 agent。在强化学习中agent 跟环境就是这样进行交互的,这个交互过程是可以通过马尔可夫决策过程来表示,所以马尔可夫决策过程是强化学习里面的一个基本框架。在马尔可夫决策过程中,它的环境是 fully observable ,就是全部可以观测的,但是很多时候环境里面有些量是不可观测的,但是这个部分观测的问题也可以转换成一个 MDP 的问题。
![](img/2.3.png) ![](img/2.3.png)
在介绍马尔可夫决策过程之前,我会给大家首先梳理一下马尔可夫、马尔可夫奖励过程。这两个过程是马尔可夫决策过程的一个基础。 在介绍马尔可夫决策过程之前,我会给大家首先梳理一下马尔可夫、马尔可夫奖励过程。这两个过程是马尔可夫决策过程的一个基础。
## Markov Processes ## Markov Process
![](img/2.4.png)如果一个状态转移是符合马尔可夫的,那我们就是说一个状态的下一个状态只取决于它当前状态,而跟它当前状态之前的状态都没有关系。比如说我们这里有一个 $h_t$,它包含了之前的所有状态但是我们这里的转移从当前 $s_t$ 转到 $s_{t+1}$ 这个状态,是直接就等于它之前所有的状态,这一个我们说某一个过程,它是满足马尔可夫特征的,就是说未来的转移跟过去是独立的,它只取决于现在。这个马尔可夫特征其实是所有马尔可夫过程的一个基础。 ![](img/2.4.png)如果一个状态转移是符合马尔可夫的,那我们就是说一个状态的下一个状态只取决于它当前状态,而跟它当前状态之前的状态都没有关系。比如说我们这里有一个 $h_t$,它包含了之前的所有状态但是这里的转移从当前 $s_t$ 转到 $s_{t+1}$ 这个状态,是直接就等于它之前所有的状态我们说某一个过程,它是满足马尔可夫特征的,就是说未来的转移跟过去是独立的,它只取决于现在。这个马尔可夫特征其实是所有马尔可夫过程的一个基础。
![](img/2.5.png) ![](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$ 这个状态过后,到达下面所有状态的一个概念。所以它每一行其实描述了是从一个节点到达所有其它节点的这个概念。 首先来看一看马尔可夫链。举个例子,这个图里面有四个状态,这四个状态从 $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$ 这个状态过后,到达下面所有状态的一个概念。所以它每一行其实描述了是从一个节点到达所有其它节点的这个概念。
![](img/2.6.png) ![](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) ## Markov Reward Process(MRP)
![](img/2.7.png) ![](img/2.7.png)
这里我们再来看一看马尔可夫奖励过程,马尔可夫奖励过程是马尔可夫链再加上了一个奖励函数。我们在定义马尔可夫奖励过程之中,这个转移矩阵跟它的这个状态都是跟马尔可夫链一样的,这里多了一个是这个奖励函数。奖励函数是一个期望,它说当你当到达某一个状态的时候,可以获得多大的奖励,然后这里另外定义了一个这个 discount factor $\gamma$ 。 我们再来看一看马尔可夫奖励过程,马尔可夫奖励过程是马尔可夫链再加上了一个奖励函数。我们在定义马尔可夫奖励过程之中,这个转移矩阵跟它的这个状态都是跟马尔可夫链一样的,这里多了一个奖励函数。奖励函数是一个期望,它说当你当到达某一个状态的时候,可以获得多大的奖励,然后这里另外定义了一个 discount factor $\gamma$ 。
![](img/2.8.png) ![](img/2.8.png)
这里是我们刚才看的马尔可夫链,如果把奖励也放上去的话,就是说到达每一个状态,我们都会获得一个奖励。这里我们可以定义比如说它 $s_1$ 状态的时候可以获得 5 的奖励,到达 $s_7$ 的时候,它有 10 的奖励,其它状态没有任何奖励。因为我们这里状态是有限的,所以我们可以用一个向量来表示这个奖励函数这个向量就是表示了每个点的奖励的大小。我们可以通过一个形象的例子来理解马尔夫奖励过程,你其实可以把它看成一个纸船,就是当我们把一个纸船放到一个河流之中,那么它就会随着这个河流而流动,它自身其实是没有动力,所以你可以把这个马尔可夫奖励过程看成是一个随波逐流的例子,当我们从某一个点开始的时候,这个纸船它就会随着这个我们事先定义好的状态转移进行流动,然后它到达每个状态过后,我们就有可能获得一些奖励。 这里是我们刚才看的马尔可夫链,如果把奖励也放上去的话,就是说到达每一个状态,我们都会获得一个奖励。这里我们可以定义比如说它 $s_1$ 状态的时候可以获得 5 的奖励,到达 $s_7$ 的时候,它有 10 的奖励,其它状态没有任何奖励。因为这里状态是有限的,所以我们可以用一个向量来表示这个奖励函数这个向量就是表示了每个点的奖励的大小。我们可以通过一个形象的例子来理解马尔夫奖励过程,你其实可以把它看成一个纸船,就是当我们把一个纸船放到一个河流之中,那么它就会随着这个河流而流动,它自身是没有动力,所以你可以把这个马尔可夫奖励过程看成是一个随波逐流的例子,当我们从某一个点开始的时候,这个纸船它就会随着这个我们事先定义好的状态转移进行流动,然后它到达每个状态过后,我们就有可能获得一些奖励。
![](img/2.9.png) ![](img/2.9.png)
这里我们进一步定义一些概念,第一个是这个 Horizon 的概念,它说明了我们同一个 episode 或者是整个一个轨迹的长度。然后它是由有限个步数决定的。另外,这里我们再定一个 return。Return 说的是我们把奖励进行折扣,然后获得的这个收益。这个 return 的定义你可以看到它是从你后面得到的 return 逐步叠加起来,然后这里有一个叠加系数,就是越往后的得到的奖励,我们折扣的越多,就说明我们其实更希望得到现有的奖励,未来我们的奖励的话就要把它打折扣。当我们有了这个 return 过后,我们就可以正式定义一个状态的价值了,就是 state value function。然后对于这个马尔可夫奖励过程它里面定义成是关于这个 return 的期望, $G_t$ 是我们之前定义的 discounted return。然后我们这里取了一个期望期望就是说从这个状态开始你有可能获得多大的价值所以这个期望也可以看成是一个对未来可能获得奖励的一个它的当前价值的一个表现。就是当你进入某一个状态过后你现在就有多大的价值 这里我们进一步定义一些概念。
![](img/2.10.png) * 第一个是这个 `Horizon` 的概念,它说明了同一个 episode 或者是整个一个轨迹的长度,它是由有限个步数决定的。
* 另外,这里我们再定义一个 `return`。Return 说的是我们把奖励进行折扣然后获得的这个收益。Return 可以定义为奖励的逐步叠加,然后这里有一个叠加系数,就是越往后得到的奖励,折扣得越多。这说明我们其实更希望得到现有的奖励,未来的奖励就要把它打折扣。
* 当我们有了这个 return 过后,我们就可以正式定义一个状态的价值了,就是 `state value function`。然后对于这个马尔可夫奖励过程,它里面定义成是关于这个 return 的期望, $G_t$ 是我们之前定义的 discounted return。然后我们这里取了一个期望期望就是说从这个状态开始你有可能获得多大的价值。所以这个期望也可以看成是一个对未来可能获得奖励的它的当前价值的一个表现。就是当你进入某一个状态过后你现在就有多大的价值。
这里我们简短地解释一下为什么需要 discounted factor。这第一点是我们是想避免在有些马尔可夫过程,它是自己是带环的,就像它没有并没有终结,然后我们想避免这个无穷的奖励。另外,我们是想把这个不确定性也表示出来,希望尽可能快地得到奖励,而不是在未来某一个点得到奖励。然后另外如果这个奖励是它是有实际价值的了,我们可能是更希望立刻就得到奖励,而不是我们后面再得到奖励。在人的行为里面来说的话,其实也是大家也是想得到立刻奖励了。另外,在有些状态的时候,我们这个系数也可以把它设为 0。比如说当我们设为 0 过后,然后我们就只关注了它当前的奖励。另外,我们也可以把它设为 1设为 1 的话就是对未来并没有折扣,未来获得的奖励跟我们当前获得的奖励是一样的。价值是一样的,这个系数其实是应该可以作为强化学习 agent 的一个 hyper parameter 来进行调整,然后就会得到不同行为的 agent。 ![](img/2.10.png)这里我们简短地解释一下为什么需要 discounted factor。
* 第一点是有些马尔可夫过程,它是自己是带环的,就像它没有并没有终结,然后我们想避免这个无穷的奖励。
* 另外,我们是想把这个不确定性也表示出来,希望尽可能快地得到奖励,而不是在未来某一个点得到奖励。
* 另外如果这个奖励是它是有实际价值的了,我们可能是更希望立刻就得到奖励,而不是我们后面再得到奖励。
* 在人的行为里面来说的话,其实也是大家也是想得到立刻奖励了。
* 另外,在有些状态的时候,我们这个系数也可以把它设为 0。比如说当我们设为 0 过后,然后我们就只关注了它当前的奖励。我们也可以把它设为 1设为 1 的话就是对未来并没有折扣,未来获得的奖励跟我们当前获得的奖励是一样的。这个系数其实是应该可以作为强化学习 agent 的一个 hyper parameter 来进行调整,然后就会得到不同行为的 agent。
![](img/2.11.png) ![](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 。 这里我们再来看一看,在这个马尔可夫奖励过程里面,如何计算它的价值。这个马尔可夫奖励过程依旧是这个状态转移。它的奖励函数是定义成这样,它在进入第一个状态的时候,会得到 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$ 后,它的价值到底如何。 这里就自然而然引出了一个问题,当我们有了一些轨迹的实际 return怎么计算它的价值函数。比如说我们现在想知道 $s_4$ 状态的价值就是当你进入 $s_4$ 后,它的价值到底如何。
那么一个可行的做法,就是说我们可以产生很多轨迹,然后把这里的轨迹都叠加起来。比如我们现在可以从 $s_4$ 开始,然后采样生成很多轨迹,然后我们都把它的 return 计算出来,然后可以直接把它取一个平均,然后作为你进入 $s_4$ 它的价值,这其实是一种计算价值函数的一个办法,通过这个蒙特卡罗采样的办法计算 $s_4$ 的状态我们接下来会进一步介绍这个蒙特卡洛算法 那么一个可行的做法,就是说我们可以产生很多轨迹,然后把这里的轨迹都叠加起来。比如我们现在可以从 $s_4$ 开始,然后采样生成很多轨迹,然后都把它的 return 计算出来,然后可以直接把它取一个平均,然后作为你进入 $s_4$ 它的价值,这其实是一种计算价值函数的一个办法,通过这个蒙特卡罗采样的办法计算 $s_4$ 的状态我们接下来会进一步介绍这个蒙特卡洛算法
![](img/2.12.png) ![](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。
![](img/2.13.png) ![](img/2.13.png)
Bellman Equation 定义了状态之间迭代关系。假设我们现在有一个马尔可夫转移矩阵是右边这个样子。然后 Bellman Equation 描述的就是当前状态到未来状态的一个转移你可以发现,假设我们当前是在 $s_1$ 那么它只可能去到三个未来的状态。一个是它有 0.1 的概率留在它当前这个位置,另外有 0.2 的概率,它去到才 $s_2$ 状态。另外 0.7 的概率去到 $s_4$ 的状态,所以我们要把这个转移乘以它的这个未来的状态,再加上它的 immediate reward 就会得到它当前状态的价值。所以 Bellman Equation 定义的就是当前状态跟未来状态的一个迭代的关系。 Bellman Equation 定义了状态之间迭代关系。假设我们现在有一个马尔可夫转移矩阵是右边这个样子。然后 Bellman Equation 描述的就是当前状态到未来状态的一个转移你可以发现,假设我们当前是在 $s_1$ 那么它只可能去到三个未来的状态。一个是它有 0.1 的概率留在它当前这个位置,另外有 0.2 的概率,它去到才 $s_2$ 状态。另外 0.7 的概率去到 $s_4$ 的状态,所以我们要把这个转移乘以它的这个未来的状态,再加上它的 immediate reward 就会得到它当前状态的价值。所以 Bellman Equation 定义的就是当前状态跟未来状态的一个迭代的关系。
![](img/2.14.png) ![](img/2.14.png)
@@ -76,31 +84,31 @@ $$
![](img/2.16.png) ![](img/2.16.png)
这里首先我们来看一个蒙特卡罗的一个办法来计算它的一个价值函数,这个蒙特卡罗就跟我们之前采用的这个方法是很类似,就说我们当得到一个马尔可夫奖励过程过后,我们可以从某一个状态开始,然后让它让把这个小船放进去,让它随波逐流,这样就会产生一个轨迹。产生了一个轨迹过后,人们就会得到一个奖励,那么就直接把它的 Discounted 的奖励 $g$ 直接算出来。算出来过后就可以把它积累起来,当积累到一定的轨迹数量过后,然后直接除以这个轨迹,然后就会得到它的这个价值。 首先我们来看一个蒙特卡罗的一个办法来计算它的一个价值函数,这个蒙特卡罗就跟我们之前采用的这个方法是很类似,就说我们当得到一个马尔可夫奖励过程过后,我们可以从某一个状态开始,然后让它让把这个小船放进去,让它随波逐流,这样就会产生一个轨迹。产生了一个轨迹过后,人们就会得到一个奖励,那么就直接把它的 Discounted 的奖励 $g$ 直接算出来。算出来过后就可以把它积累起来,当积累到一定的轨迹数量过后,然后直接除以这个轨迹,然后就会得到它的这个价值。
比如说我们要算 $s_4$ 状态的一个价值,就可以从 $s_4$ 状态开始,然后随机产生很多轨迹,就产生很多小船,然后扔到这个转移矩阵里面去,然后它就会随波逐流,然后产生轨迹。每个轨迹,我们可以算到它的这个 return 。那么每个轨迹都会得到一个 return让我们得到大量的 return 。比如说一百个、一千个的 return ,然后直接取一个平均,那么就可以等价于它现在这个 $s_4$ 这个价值。因为 $s_4$ 的价值 $V(s_4)$ 就是定义了你未来可能得到多少的这个奖励。这就是蒙特卡罗采样的方法。 比如说我们要算 $s_4$ 状态的一个价值,就可以从 $s_4$ 状态开始,随机产生很多轨迹,就产生很多小船,然后扔到这个转移矩阵里面去,然后它就会随波逐流,然后产生轨迹。每个轨迹,我们可以算到它的这个 return 。那么每个轨迹都会得到一个 return让我们得到大量的 return 。比如说一百个、一千个的 return ,然后直接取一个平均,那么就可以等价于它现在 $s_4$ 这个价值。因为 $s_4$ 的价值 $V(s_4)$ 就是定义了你未来可能得到多少的这个奖励。这就是蒙特卡罗采样的方法。
![](img/2.17.png)我们也可以用这个动态规划的一个办法,就通过这种一直去迭代它的 Bellman Equation ,然后让它最后收敛,我们就可以得到它的一个状态。所以在这里算法二就是一个迭代的一个算法,通过这个 bootstraping 的一个办法,然后去不停地迭代这个 Bellman Equation。然后当这个最后更新的状态跟你上一个状态变化并不大的时候,这个更新就可以停止。那么我们就可以输出这个最新的这个 $V'(s)$ 作为它当前的状态。所以这里就是利用到了 Bellman Equation就把 Bellman Equation 变成一个 Bellman Update这样就可以得到它的一个价值。 ![](img/2.17.png)我们也可以用这个动态规划的一个办法,就通过这种一直去迭代它的 Bellman Equation ,然后让它最后收敛,我们就可以得到它的一个状态。所以在这里算法二就是一个迭代的算法,通过这个 bootstraping 的办法,然后去不停地迭代这个 Bellman Equation。当这个最后更新的状态跟你上一个状态变化并不大的时候这个更新就可以停止。那么我们就可以输出最新的这个 $V'(s)$ 作为它当前的状态。所以这里就是利用到了 Bellman Equation就把 Bellman Equation 变成一个 Bellman Update这样就可以得到它的一个价值。
## Markov Decision Process(MDP) ## Markov Decision Process(MDP)
![](img/2.18.png) ![](img/2.18.png)
相对于马尔可夫奖励过程,马尔可夫决策过程多了一个 action就是它多了一个 decision其它的定义跟马尔可夫奖励过程都是类似的。这里我们多了一个决策多了一个 action ,那么这个状态转移也多了一个 condition就是它多了一个你采取某一种行为然后你未来的状态会不同它不仅是依赖于你当前的状态也依赖于在当前状态你这个 agent 它采取的这个行为会决定它未来的这个状态走向。对于这个价值函数,它也是多了一个条件,多了一个你当前的这个行为,就说你可以得到的奖励是基于你当前的状态以及当年你采取的行为会决定你在当前可能得到的奖励多少。 相对于马尔可夫奖励过程,马尔可夫决策过程多了一个 decision其它的定义跟马尔可夫奖励过程都是类似的。这里我们多了一个决策多了一个 action ,那么这个状态转移也多了一个 condition就是它多了一个你采取某一种行为然后你未来的状态会不同它不仅是依赖于你当前的状态也依赖于在当前状态你这个 agent 它采取的这个行为会决定它未来的这个状态走向。对于这个价值函数,它也是多了一个条件,多了一个你当前的这个行为,就说你可以得到的奖励是基于你当前的状态以及你采取的行为会决定你在当前可能得到的奖励多少。
![](img/2.19.png) ![](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) ![](img/2.20.png)
这里说明了马尔可夫决策过程跟马尔可夫奖励过程的之间的一个转换,就是当我们已知一个马尔可夫决策过程以及我们已知一个 policy $\pi$ 的时候,那我们可以把马尔可夫决策过程转换成马尔可夫奖励过程。我们这里在马尔可夫决策过程里面,它的转移函数 $P(s'|s,a)$ 是基于它当前状态以及它当前的 action因为我们现在已经已知它的这个 policy function就是说在每一个状态我们知道它可能采取的行为的概率那么就可以直接把这个 action 进行加和,直接把这个 a 去掉,那我们就可以得到一个对于马尔可夫奖励过程的一个转移。这里就并没有 action 在这个里面,对于这个奖励函数,我们也可以把这个 action 拿掉,这样就会得到一个类似于马尔可夫奖励过程的一个奖励函数。 这里说明了马尔可夫决策过程跟马尔可夫奖励过程的之间的一个转换,就是当我们已知一个马尔可夫决策过程以及一个 policy $\pi$ 的时候,那我们可以把马尔可夫决策过程转换成马尔可夫奖励过程。我们这里在马尔可夫决策过程里面,它的转移函数 $P(s'|s,a)$ 是基于它当前状态以及它当前的 action因为我们现在已经已知它的这个 policy function就是说在每一个状态我们知道它可能采取的行为的概率那么就可以直接把这个 action 进行加和,直接把这个 a 去掉,那我们就可以得到一个对于马尔可夫奖励过程的一个转移。这里就并没有 action 在这个里面,对于这个奖励函数,我们也可以把这个 action 拿掉,这样就会得到一个类似于马尔可夫奖励过程的一个奖励函数。
![](img/2.21.png) ![](img/2.21.png)
这里我们再来看一看,马尔科夫决策过程里面它状态转移跟之前马尔可夫奖励过程以及马尔可夫链的一个差异。对于之前的马尔可夫链的过程,它的转移是直接就决定,就从你当前是S,那么就直接通过这个转移概率就直接决定了你下一个状态会是什么。但是对于马尔可夫决策过程,它的中间多了一层这个行为 a ,就是说在你当前这个状态的时候,你首先要决定的是采取某一种行为。那么你会到了某一个黑色的这个节点,到了这个黑色的节点,因为你有一定的不确定性,当你当前状态决定过后以及你当前采取的行为过后,你到未来的状态其实也是一个概率分布。所以你采取行为以及你决定,然后你可能有有多大的概率到达某一个未来状态,以及另外有多大概率到达另外一个状态。所以在这个当前状态跟未来状态转移过程中这里多了一层决策性,这里是马尔可夫决策过程跟之前的马尔可夫过程很不同的一个地方。这里这个行为是由 agent 决定,所以这里我们多了一个 componentagent 会采取这个行为来决定这个未来的状态转移。 这里我们再来看一看,马尔科夫决策过程里面它状态转移跟之前马尔可夫奖励过程以及马尔可夫链的一个差异。对于之前的马尔可夫链的过程,它的转移是直接就决定,就从你当前是 s,那么就直接通过这个转移概率就直接决定了你下一个状态会是什么。但是对于马尔可夫决策过程,它的中间多了一层这个行为 a ,就是说在你当前这个状态的时候,你首先要决定的是采取某一种行为。那么你会到了某一个黑色的这个节点,到了这个黑色的节点,因为你有一定的不确定性,当你当前状态决定过后以及你当前采取的行为过后,你到未来的状态其实也是一个概率分布。所以你采取行为以及你决定,然后你可能有有多大的概率到达某一个未来状态,以及另外有多大概率到达另外一个状态。所以在这个当前状态跟未来状态转移过程中这里多了一层决策性,这里是马尔可夫决策过程跟之前的马尔可夫过程很不同的一个地方。这里这个行为是由 agent 决定,所以这里我们多了一个 componentagent 会采取这个行为来决定这个未来的状态转移。
![](img/2.22.png) ![](img/2.22.png)
@@ -236,7 +244,7 @@ policy evaluation 是说我们给定一个 MDP 以及给定一个 policy
当改进停止过后,我们取它极大化的这个 action 之后,它直接就会变成它的这个价值函数。所以我们在这里有了一个新的一个等式,就叫 Bellman Optimality Equation。这个 Bellman Optimality Equation 满足的时候,是说整个 MDP 已经到达最佳的状态。 当改进停止过后,我们取它极大化的这个 action 之后,它直接就会变成它的这个价值函数。所以我们在这里有了一个新的一个等式,就叫 Bellman Optimality Equation。这个 Bellman Optimality Equation 满足的时候,是说整个 MDP 已经到达最佳的状态。
它到达最佳状态过后,对于我们这个Q函数,我们取它最大的 action 时候的那个值,就是直接等于它的最佳的这个 value function这个条件只有当整个状态已经收敛过后已经得到一个最佳的 policy 的时候,然后它是满足的。 它到达最佳状态过后,对于我们这个 Q 函数,我们取它最大的 action 时候的那个值,就是直接等于它的最佳的这个 value function这个条件只有当整个状态已经收敛过后已经得到一个最佳的 policy 的时候,然后它是满足的。
@@ -254,7 +262,7 @@ $$
![](img/2.50.png) ![](img/2.50.png)
value iteration 说的是我们把 Bellman Optimality Equation 当成一个 update rule 来进行,之前我们是说上面这个等式只有当整个状态已经到达最佳状态的时候,然后才满足。但是我们这里可以把它转换成一个 backup 的一个等式。 Backup 就是说一个迭代的一个等式,我们不停地去迭代 Bellman Optimality Equation就希望能不停的迭代到了最后它能逐渐趋向于最佳的策略所以这也是 value iteration 这个算法的精髓。就是我们去为了得到最佳的这个 $v^*$ ,对于每个状态它的 $v^*$ 这个值,我们直接把这个 Bellman Optimality Equation 进行迭代,迭代了很多次,之后它就会收敛。 Value iteration 说的是我们把 Bellman Optimality Equation 当成一个 update rule 来进行,之前我们是说上面这个等式只有当整个状态已经到达最佳状态的时候,然后才满足。但是我们这里可以把它转换成一个 backup 的一个等式。 Backup 就是说一个迭代的一个等式,我们不停地去迭代 Bellman Optimality Equation就希望能不停的迭代到了最后它能逐渐趋向于最佳的策略所以这也是 value iteration 这个算法的精髓。就是我们去为了得到最佳的这个 $v^*$ ,对于每个状态它的 $v^*$ 这个值,我们直接把这个 Bellman Optimality Equation 进行迭代,迭代了很多次,之后它就会收敛。
![](img/2.51.png) ![](img/2.51.png)