fix some typos

This commit is contained in:
qiwang067
2020-08-09 19:09:58 +08:00
parent e73b33e101
commit 17dba58b52
2 changed files with 19 additions and 23 deletions

View File

@@ -14,7 +14,7 @@
## 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)
@@ -44,7 +44,7 @@
![](img/2.10.png)这里我们简短地解释一下为什么需要 discounted factor。
* 第一点是有些马尔可夫过程,它是自己是带环的,就像它没有并没有终结,然后我们想避免这个无穷的奖励。
* 第一点是有些马尔可夫过程是带环的,它并没有终结,然后我们想避免这个无穷的奖励。
* 另外,我们是想把这个不确定性也表示出来,希望尽可能快地得到奖励,而不是在未来某一个点得到奖励。
* 另外如果这个奖励是它是有实际价值的了,我们可能是更希望立刻就得到奖励,而不是我们后面再得到奖励。
* 在人的行为里面来说的话,其实也是大家也是想得到立刻奖励了。
@@ -62,13 +62,15 @@
但是这里我们采取了另外一种计算方法,我们通过一定的推导就可以从这个价值函数里面推导出 `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 而得名 ,也 叫作“动态规划方程”。
![](img/2.13.png)
Bellman Equation 定义了状态之间迭代关系。假设我们现在有一个马尔可夫转移矩阵是右边这个样子。然后 Bellman Equation 描述的就是当前状态到未来状态的一个转移。你可以发现,假设我们当前是在 $s_1$ 那么它只可能去到三个未来的状态。一个是它有 0.1 的概率留在它当前这个位置,另外有 0.2 的概率,它去到才 $s_2$ 状态。另外 0.7 的概率去到 $s_4$ 的状态,所以我们要把这个转移乘以它的这个未来的状态,再加上它的 immediate reward 就会得到它当前状态的价值。所以 Bellman Equation 定义的就是当前状态跟未来状态的一个迭代的关系。
![](img/2.14.png)
另外我们可以把 Bellman Equation 写成一种矩阵的形式,这下面就是矩阵的一个具体形式。我们首先有这个转移矩阵。我们当前这个状态是一个向量 $[V(s_1),V(s_2),\cdots,V(s_N)]^T$。我们可以写成迭代的形式。我们每一行来看的话V 这个向量乘以了转移矩阵里面的某一行,然后再加上它当前的这个可以得到的 reward然后就会回到它当前的这个价值。
我们可以把 Bellman Equation 写成一种矩阵的形式首先有这个转移矩阵。我们当前这个状态是一个向量 $[V(s_1),V(s_2),\cdots,V(s_N)]^T$。我们可以写成迭代的形式。我们每一行来看的话V 这个向量乘以了转移矩阵里面的某一行,然后再加上它当前的这个可以得到的 reward然后就会回到它当前的这个价值。
当我们写成如下的矩阵形式后
$$
@@ -98,7 +100,7 @@ $$
![](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)
@@ -114,7 +116,7 @@ policy 定义了我们在某一个状态应该采取什么样的行为,当我
顺着马尔可夫决策过程的定义,我们可以把 state-value function就是在马尔可夫决策过程里面的价值函数也进行一个定义它的定义是跟马尔可夫奖励过程是类似的但是这里我们的一个期望 expectation over policy就是这个期望是基于这个你采取的这个 policy ,就当你的 policy 决定过后,让我们通过对这个 policy 进行采样,然后我们可以得到一个期望。那么就可以计算出它的这个价值函数。这里我们另外引入了一个 Q 函数action-value function。
这个 Q 函数定义的是某一个状态某一个行为,然后它有可能得到的这个 return 的一个期望,这里期望其实也是 over 这个 policy function。所以你需要对这个 policy function 进行一个加和。然后最后得到它的这个价值。第三步,这里导出了价值函数跟Q函数之间的一个关系。价值函数跟 Q 函数的关系,就是直接对价值函数中的行为函数进行加和,就可以得到这个价值。
这个 Q 函数定义的是某一个状态某一个行为,然后它有可能得到的这个 return 的一个期望,这里期望其实也是 over 这个 policy function。所以你需要对这个 policy function 进行一个加和。然后最后得到它的这个价值。第三步,这里导出了价值函数跟 Q 函数之间的一个关系。价值函数跟 Q 函数的关系,就是直接对价值函数中的行为函数进行加和,就可以得到这个价值。
![](img/2.23.png)
@@ -124,23 +126,21 @@ Bellman Expectation Equation 定义了你当前状态跟未来状态之间的一
![](img/2.24.png)
那我们进一步进行一个简单的一个分解。等式 8 和等式 9 象征了价值函数跟 Q 函数之间的一个关联。我们把等式 8 插入到等式 9然后可以得到等式 11它象征了你当前时刻的 Q 函数跟未来时刻的 Q 函数之间的一个关联。也可以吧 等式9插入等式 8 中,然后我们可以得到等式 10。等式 10 象征了我们当前状态的价值跟未来状态价值之间的一个关联。
那我们进一步进行一个简单的一个分解。等式 8 和等式 9 象征了价值函数跟 Q 函数之间的一个关联。我们把等式 8 插入到等式 9然后可以得到等式 11它象征了你当前时刻的 Q 函数跟未来时刻的 Q 函数之间的一个关联。也可以吧 等式9插入等式 8 中,然后我们可以得到等式 10。等式 10 代表了当前状态的价值跟未来状态价值之间的一个关联。
![](img/2.25.png)
这里有一个概念叫 `Backup`。Backup 类似于 bootstraping(拔靴自助) 之间这个迭代关系,就对于某一个状态,它的当前这个价值是跟它未来价值线性相关的,你可以看到我们这里有两层加和。第一层加和就是这个叶子节点,然后往上走一层的话,我们就可以把未来的这个价值,$s'$ 的这个价值 backup 到黑色的节点。然后再有一层加和,第二层加和,这个加和是把 action 进行加和。得到黑色节点的价值过后,再往上 backup 一层,然后就会推到根节点的价值,根节点就是我们当前状态。所以这个 Backup Diagram 定义了你未来下一时刻的状态跟你上一时刻的状态之间的一个关联。
![](img/2.26.png)
同样对于 Q 函数我们也可以进行这样的一个推导就我们现在的根节点是这个Q函数的一个节点。这个 Q 函数是对于黑色的这个节点。我们下一时刻的这个Q函数是叶子节点有四个黑色结点。那么我们这里也有两个加和。
第一层加和是我们先把这个叶子节点从黑节点推到这个白色的这个节点,进了它的这个状态,就当我们到达某一个状态过后,这个白色极点,然后再进行一个加和,这样就把它重新推回到当前节点的一个Q函数,所以这个等式就决定了未来 Q 函数跟当前 Q 函数之间的这个关联。
第一层加和是我们先把这个叶子节点从黑节点推到这个白色的这个节点,进了它的这个状态,就当我们到达某一个状态过后,这个白色极点,然后再进行一个加和,这样就把它重新推回到当前节点的一个 Q 函数,所以这个等式就决定了未来 Q 函数跟当前 Q 函数之间的这个关联。
![](img/2.27.png)
这里一个概念是 policy evaluation。Policy evaluation 的概念是说当我们知道一个马尔可夫决策过程以及我们要采取的策略 $\pi$ ,那我们计算价值函数的过程。这个就是叫 policy evaluation就像我们在评估这个策略我们会得到多大的这个奖励。这个 policy evaluation 在有些地方也是被 叫做 prediction也就是在预测你当前采取的这个策略最终会产生多少的价值。
这里一个概念是 `policy evaluation`。Policy evaluation 的概念是说当我们知道一个马尔可夫决策过程以及我们要采取的策略 $\pi$ ,那我们计算价值函数的过程。这个就是叫 policy evaluation就像我们在评估这个策略我们会得到多大的这个奖励。这个 policy evaluation 在有些地方也是被 叫做 prediction也就是在预测你当前采取的这个策略最终会产生多少的价值。
![](img/2.28.png)
@@ -160,11 +160,15 @@ $$
![](img/2.31.png)
接下来我会给大家介绍马尔可夫决策过程的预测跟控制。这两个问题是马尔可夫决策过程里面的核心问题。对于 prediction它的意思是说当我们给定一个马尔可夫决策过程以及一个给定的 policy $\pi$ ,那我们去计算它的 value function就等于每个状态它的价值函数是多少。control 这个问题是说我们去寻找一个最佳的一个策略,它的 input 就是马尔可夫决策过程,输出是通过去寻找它的最佳策略,然后同时输出它的最佳价值函数(optimal value function)以及它的这个最佳策略(optimal policy)。在 MDP 里面Prediction 和 control 都可以通过这个动态规划去解决
接下来给大家介绍马尔可夫决策过程的 `prediction``control`,这两个问题是马尔可夫决策过程里面的核心问题
* 对于 prediction它的意思是说给定一个马尔可夫决策过程以及一个给定的 policy $\pi$ ,那我们去计算它的 value function就等于每个状态它的价值函数是多少。
* control 这个问题是说我们去寻找一个最佳的一个策略,它的 input 就是马尔可夫决策过程,输出是通过去寻找它的最佳策略,然后同时输出它的最佳价值函数(optimal value function)以及它的这个最佳策略(optimal policy)。
* 在 MDP 里面prediction 和 control 都可以通过这个动态规划去解决。
![](img/2.32.png)
首先我们来看一下这个动态规划。动态规划是说的是我们把可以把一个问题分解成一个最佳的一个子结构,当我们可以把一些子结构都可以解决的话,那么它总共就可以组成一个最优的一个解。马尔可夫决策过程是满足这个动态规划的要求的。就是在 Bellman Equation 里面,大家都看到了,我们其实把它分解成一个递归的一个结构,当我们把它分解成一个递归的结构的时候,如果我们的子问题子状态,然后能得到一个值,那么它的未来状态因为跟子状态是直接相连的。那我们也可以继续推算出来。所以这个价值函数就可以储存它以及重用它的最佳的解。所以动态规划是解 MDP prediction 和 control 一个非常有效的一个方式。
首先我们来看一下`动态规划`。动态规划是说的是我们把可以把一个问题分解成一个最佳的一个子结构,当我们可以把一些子结构都可以解决的话,那么它总共就可以组成一个最优的一个解。马尔可夫决策过程是满足这个动态规划的要求的。就是在 Bellman Equation 里面,大家都看到了,我们其实把它分解成一个递归的一个结构,当我们把它分解成一个递归的结构的时候,如果我们的子问题子状态,然后能得到一个值,那么它的未来状态因为跟子状态是直接相连的。那我们也可以继续推算出来。所以这个价值函数就可以储存它以及重用它的最佳的解。所以动态规划是解 MDP prediction 和 control 一个非常有效的一个方式。
![](img/2.33.png)
@@ -266,17 +270,11 @@ Value iteration 说的是我们把 Bellman Optimality Equation 当成一个 upd
![](img/2.51.png)
value iteration 这个算法目的是为了得到一个最佳的一个策略。一个解法是直接把这个 Bellman Optimallity backup
它这个等式拿进来进行迭代,迭代很多次,然后收敛过后得到的那个值就是它的最佳的那个值。所以你看这个算法,开始的时候,它是先把所有值初始化,通过每一个状态,然后它会进行这个迭代。把等式 22 插到 等式 23 里面那就是Bellman Optimallity backup 的那个等式。有了这个等式过后,然后进行不停的迭代,迭代过后,然后收敛。然后就会得到这个 $V^*$ 。当我们有这个 $V^*$ 过后一个问题是如何进一步推算出它的最佳策略。最佳策略的话我们可以直接用这个arg max就先把它的 Q 函数重构出来,重构出来过后,我们可以对每一个列对应的最大的那个 action 就是应该它现在的最佳策略,这样我们可以就可以把这个最佳策略从这个这个最佳价值函数里面推导出来。
Value iteration 这个算法目的是为了得到一个最佳的一个策略。一个解法是直接把这个 `Bellman Optimality backup`,把它这个等式拿进来进行迭代,迭代很多次,然后收敛过后得到的那个值就是它的最佳的那个值。所以你看这个算法,开始的时候,它是先把所有值初始化,通过每一个状态,然后它会进行这个迭代。把等式 22 插到 等式 23 里面那就是Bellman Optimallity backup 的那个等式。有了这个等式过后,然后进行不停的迭代,迭代过后,然后收敛。然后就会得到这个 $V^*$ 。当我们有这个 $V^*$ 过后一个问题是如何进一步推算出它的最佳策略。最佳策略的话我们可以直接用这个arg max就先把它的 Q 函数重构出来,重构出来过后,我们可以对每一个列对应的最大的那个 action 就是应该它现在的最佳策略,这样我们可以就可以把这个最佳策略从这个这个最佳价值函数里面推导出来。
![](img/2.52.png)
这里是一个可视化的一个过程,其实也是一个 grid world ,我们希望能在这个棋盘里面,不管你在哪一个位置开始,我们都希望能够到 goal 的这个点,左上角的那个点。因为它是一个迭代过程,然后我这里可视化了从 $v_1$ 到 $v_7$ 上面每一个状态。它的这个值的变化,你发现它的这个值逐渐在变化,而且现在是因为它每走一步,让它会得到一个负的一个值,所以它需要尽快的到达左上角,可以发现离它越远的那个值就就越大。
$v_7$ 收敛过后,右下角那个值是-6也就相当于它要走六步才能到达最上面那个值。而且离这个目的地越近了它的价值越大。
上图是一个可视化的一个过程,其实也是一个 grid world ,我们希望能在这个棋盘里面,不管你在哪一个位置开始,我们都希望能够到 goal 的这个点,左上角的那个点。因为它是一个迭代过程,然后我这里可视化了从 $v_1$ 到 $v_7$ 上面每一个状态。它的这个值的变化,你发现它的这个值逐渐在变化,而且现在是因为它每走一步,让它会得到一个负的一个值,所以它需要尽快的到达左上角,可以发现离它越远的那个值就就越大。$v_7$ 收敛过后,右下角那个值是-6也就相当于它要走六步才能到达最上面那个值。而且离这个目的地越近了它的价值越大。
![](img/2.53.png)