fix some typos
This commit is contained in:
@@ -2,11 +2,15 @@
|
||||
|
||||

|
||||
|
||||
这节课我会给大家介绍马尔可夫决策过程。在介绍马尔可夫决策过程之前,先介绍它的简化版本:马尔可夫链以及马尔可夫奖励过程,通过跟这两种过程的比较,我们可以更生动地理解马尔可夫决策过程。第二部分我会给大家介绍马尔可夫决策过程中的 policy evaluation,就是当给定一个决策过后我们怎么去计算它的价值函数。第三部分,我会给大家介绍马尔可夫决策过程的控制,具体有两种算法:`policy iteration` 和 `value iteration`。
|
||||
这节课我会给大家介绍马尔可夫决策过程。
|
||||
|
||||
* 在介绍马尔可夫决策过程之前,先介绍它的简化版本:马尔可夫链以及马尔可夫奖励过程,通过跟这两种过程的比较,我们可以更生动地理解马尔可夫决策过程。
|
||||
* 第二部分,我会给大家介绍马尔可夫决策过程中的 `policy evaluation`,就是当给定一个决策过后,怎么去计算它的价值函数。
|
||||
* 第三部分,我会给大家介绍马尔可夫决策过程的控制,具体有两种算法:`policy iteration` 和 `value iteration`。
|
||||
|
||||

|
||||
|
||||
上图介绍了在强化学习里面 agent 跟 environment 之间的交互,agent 在得到环境的状态过后,它会采取行为,它会把这个采取的行为返还给环境。环境在得到 agent 的行为过后,它会进入下一个状态,把下一个状态传回 agent。在强化学习中,agent 跟环境就是这样进行交互的,这个交互过程是可以通过马尔可夫决策过程来表示的,所以马尔可夫决策过程是强化学习里面的一个基本框架。在马尔可夫决策过程中,它的环境是 fully observable ,就是全部可以观测的。但是很多时候环境里面有些量是不可观测的,但是这个部分观测的问题也可以转换成一个 MDP 的问题。
|
||||
上图介绍了在强化学习里面 agent 跟 environment 之间的交互,agent 在得到环境的状态过后,它会采取行为,它会把这个采取的行为返还给环境。环境在得到 agent 的行为过后,它会进入下一个状态,把下一个状态传回 agent。在强化学习中,agent 跟环境就是这样进行交互的,这个交互过程是可以通过马尔可夫决策过程来表示的,所以马尔可夫决策过程是强化学习里面的一个基本框架。在马尔可夫决策过程中,它的环境是 `fully observable` ,就是全部可以观测的。但是很多时候环境里面有些量是不可观测的,但是这个部分观测的问题也可以转换成一个 MDP 的问题。
|
||||
|
||||

|
||||
|
||||
@@ -38,8 +42,8 @@
|
||||
|
||||
这里我们进一步定义一些概念。
|
||||
|
||||
* 第一个是这个 `horizon` 的概念,它说明了同一个 episode 或者是整个一个轨迹的长度,它是由有限个步数决定的。
|
||||
* 另外,这里我们再定义一个 `return`。Return 说的是我们把奖励进行折扣,然后获得的这个收益。Return 可以定义为奖励的逐步叠加,然后这里有一个叠加系数,就是越往后得到的奖励,折扣得越多。这说明我们其实更希望得到现有的奖励,未来的奖励就要把它打折扣。
|
||||
* 第一个是 `horizon` 的概念,它说明了同一个 episode 或者是整个一个轨迹的长度,它是由有限个步数决定的。
|
||||
* 这里我们再定义一个 `return`。Return 说的是我们把奖励进行折扣,然后获得的这个收益。Return 可以定义为奖励的逐步叠加,然后这里有一个叠加系数,就是越往后得到的奖励,折扣得越多。这说明我们其实更希望得到现有的奖励,未来的奖励就要把它打折扣。
|
||||
* 当我们有了这个 return 过后,就可以正式定义一个状态的价值了,就是 `state value function`。然后对于这个马尔可夫奖励过程,它里面定义成是关于这个 return 的期望, $G_t$ 是我们之前定义的 discounted return。然后我们这里取了一个期望,期望就是说从这个状态开始,你有可能获得多大的价值。所以这个期望也可以看成是一个对未来可能获得奖励的它的当前价值的一个表现。就是当你进入某一个状态过后,你现在就有多大的价值。
|
||||
|
||||
这里我们简短地解释一下为什么需要 discounted factor。
|
||||
@@ -90,7 +94,7 @@ $$
|
||||
|
||||
比如说我们要算 $s_4$ 状态的一个价值,就可以从 $s_4$ 状态开始,随机产生很多轨迹,就产生很多小船,然后扔到这个转移矩阵里面去,然后它就会随波逐流,产生轨迹。每个轨迹,我们可以算到它的这个 return 。那么每个轨迹都会得到一个 return,让我们得到大量的 return 。比如说一百个、一千个的 return ,然后直接取一个平均,那么就可以等价于它现在 $s_4$ 这个价值。因为 $s_4$ 的价值 $V(s_4)$ 定义了你未来可能得到多少的奖励。这就是蒙特卡罗采样的方法。
|
||||
|
||||
我们也可以用这个动态规划的办法,就通过这种一直去迭代它的 Bellman Equation,让它最后收敛,我们就可以得到它的一个状态。所以在这里算法二就是一个迭代的算法,通过这个 bootstraping 的办法,然后去不停地迭代这个 Bellman Equation。当这个最后更新的状态跟你上一个状态变化并不大的时候,这个更新就可以停止。那么我们就可以输出最新的这个 $V'(s)$ 作为它当前的状态。所以这里就是利用到了 Bellman Equation,就把 Bellman Equation 变成一个 Bellman Update,这样就可以得到它的一个价值。
|
||||
我们也可以用这个动态规划的办法,就通过这种一直去迭代它的 Bellman Equation,让它最后收敛,我们就可以得到它的一个状态。所以在这里算法二就是一个迭代的算法,通过这个 bootstraping 的办法,然后去不停地迭代这个 Bellman Equation。当这个最后更新的状态跟你上一个状态变化并不大的时候,这个更新就可以停止。那么我们就可以输出最新的 $V'(s)$ 作为它当前的状态。所以这里就是利用到了 Bellman Equation,就把 Bellman Equation 变成一个 Bellman Update,这样就可以得到它的一个价值。
|
||||
|
||||
## Markov Decision Process(MDP)
|
||||
|
||||
@@ -100,7 +104,7 @@ $$
|
||||
|
||||

|
||||
|
||||
Policy 定义了在某一个状态应该采取什么样的行为,当我们知道当前状态过后,我们可以带入这个 policy function,那我们会得到一个概率,概率就代表了在所有可能的行为里面怎样去采取行动。就可能有 0.7 的概率往左走,有 0.3 的概率往右走,这样是一个概率的一个表示。另外这个策略也可能是确定的,它有可能是直接输出一个值,或者就直接告诉你当前应该采取什么样的行为,而不是一个行为的概率。然后这里我们有一个假设,就这个概率函数,它应该是静态的(stationary),不同时间点,你采取的行为其实都是对这个 policy function 进行采样。
|
||||
Policy 定义了在某一个状态应该采取什么样的行为,当我们知道当前状态过后,我们可以带入这个 policy function,那我们会得到一个概率,概率就代表了在所有可能的行为里面怎样去采取行动。就可能有 0.7 的概率往左走,有 0.3 的概率往右走,这样是一个概率的一个表示。另外这个策略也可能是确定的,它有可能是直接输出一个值,或者就直接告诉你当前应该采取什么样的行为,而不是一个行为的概率。然后这里我们有一个假设,就是这个概率函数应该是静态的(stationary),不同时间点,你采取的行为其实都是对这个 policy function 进行采样。
|
||||
|
||||

|
||||
|
||||
@@ -126,11 +130,11 @@ Bellman Expectation Equation 定义了你当前状态跟未来状态之间的一
|
||||
|
||||

|
||||
|
||||
那我们进一步进行一个简单的一个分解。等式 8 和等式 9 象征了价值函数跟 Q 函数之间的一个关联。我们把等式 8 插入到等式 9,然后可以得到等式 11,它象征了你当前时刻的 Q 函数跟未来时刻的 Q 函数之间的一个关联。也可以吧 等式9插入等式 8 中,然后我们可以得到等式 10。等式 10 代表了当前状态的价值跟未来状态价值之间的一个关联。
|
||||
那我们进一步进行一个简单的分解。等式 8 和等式 9 代表了价值函数跟 Q 函数之间的一个关联。我们把等式 8 插入到等式 9,然后可以得到等式 11,它象征了你当前时刻的 Q 函数跟未来时刻的 Q 函数之间的一个关联。也可以吧 等式9插入等式 8 中,然后我们可以得到等式 10。等式 10 代表了当前状态的价值跟未来状态价值之间的一个关联。
|
||||
|
||||

|
||||
|
||||
这里有一个概念叫 `Backup`。Backup 类似于 bootstraping(拔靴自助) 之间这个迭代关系,就对于某一个状态,它的当前这个价值是跟它未来价值线性相关的,你可以看到我们这里有两层加和。第一层加和就是这个叶子节点,然后往上走一层的话,我们就可以把未来的这个价值,$s'$ 的这个价值 backup 到黑色的节点。然后再有一层加和,第二层加和,这个加和是把 action 进行加和。得到黑色节点的价值过后,再往上 backup 一层,然后就会推到根节点的价值,根节点就是我们当前状态。所以这个 `Backup Diagram` 定义了你未来下一时刻的状态跟你上一时刻的状态之间的一个关联。
|
||||
这里有一个概念叫 `Backup`。Backup 类似于 bootstraping(拔靴自助) 之间这个迭代关系,就对于某一个状态,它的当前这个价值是跟它未来价值线性相关的。你可以看到我们这里有两层加和。第一层加和就是这个叶子节点,然后往上走一层的话,我们就可以把未来的这个价值 $s'$ backup 到黑色的节点。然后再有一层加和,第二层加和,这个加和是把 action 进行加和。得到黑色节点的价值过后,再往上 backup 一层,然后就会推到根节点的价值,根节点就是我们当前状态。所以 `Backup Diagram` **定义了你未来下一时刻的状态跟你上一时刻的状态之间的一个关联。**
|
||||
|
||||

|
||||
|
||||
@@ -140,7 +144,7 @@ Bellman Expectation Equation 定义了你当前状态跟未来状态之间的一
|
||||
|
||||

|
||||
|
||||
这里一个概念是 `policy evaluation`。Policy evaluation 的概念是说当我们知道一个马尔可夫决策过程以及我们要采取的策略 $\pi$ ,那我们计算价值函数的过程。这个就是叫 policy evaluation,就像我们在评估这个策略,我们会得到多大的这个奖励。这个 policy evaluation 在有些地方也被叫做 `prediction`,也就是预测你当前采取的这个策略最终会产生多少的价值。
|
||||
当我们知道一个马尔可夫决策过程以及要采取的策略 $\pi$ ,那我们计算价值函数的过程,就是 `policy evaluation`。就像我们在评估这个策略,我们会得到多大的奖励。Policy evaluation 在有些地方也被叫做 `prediction`,也就是预测你当前采取的这个策略最终会产生多少的价值。
|
||||
|
||||

|
||||
|
||||
@@ -168,11 +172,11 @@ $$
|
||||
|
||||

|
||||
|
||||
首先我们来看一下`动态规划`。动态规划是说的是我们把可以把一个问题分解成一个最佳子结构,当我们可以把一些子结构都可以解决的话,那么它就可以组成一个最优的解。马尔可夫决策过程是满足这个动态规划的要求的,就是在 Bellman Equation 里面,我们其实把它分解成一个递归的一个结构。当我们把它分解成一个递归的结构的时候,如果我们的子问题子状态能得到一个值,那么它的未来状态因为跟子状态是直接相连的。那我们也可以继续推算出来。所以这个价值函数就可以储存它以及重用它的最佳的解。所以动态规划是解 MDP prediction 和 control 一个非常有效的方式。
|
||||
首先我们来看一下`动态规划`。动态规划是说的是我们把可以把一个问题分解成一个最佳子结构,当我们可以把一些子结构都可以解决的话,那么它就可以组成一个最优的解。马尔可夫决策过程是满足动态规划的要求的,就是在 Bellman Equation 里面,我们可以把它分解成一个递归的一个结构。当我们把它分解成一个递归的结构的时候,如果我们的子问题子状态能得到一个值,那么它的未来状态因为跟子状态是直接相连的。那我们也可以继续推算出来。所以这个价值函数就可以储存它以及重用它的最佳的解。所以动态规划是解 MDP prediction 和 control 一个非常有效的方式。
|
||||
|
||||

|
||||
|
||||
首先来看一下 policy evaluation,就是当我们给定一个 MDP 的时候,我们有一个事先定好的一个 policy。那么我们可以获得多少的价值,就对于当前这个策略,我们可以得到多大的这个 value function。这里一个方法是说,我们直接把这个 Bellman Expectation Backup,这个等式拿出来,然后变成一个迭代的一个过程,这样反复迭代直到收敛。这样就可以计算它的一个过程。这个迭代过程是可以看作是 synchronous backup 的一个过程,这里大家可以看到这个等式14说的就是这个 Bellman Expectation Backup,我们把这个转换成一个动态规划的一个迭代。当我们得到上一时刻的这个 $v_t$ 的时候,那我们下一时刻就通过这个递归的一个关系,我们可以推出下一时刻的这个值,那么反复去迭代它,最后它的值就是从 $v_1,v_2$,到最后收敛过后这个值。这个值就是我们当前给定的 policy 对应的价值函数。
|
||||
首先看一下 policy evaluation,就是当给定一个 MDP 的时候,我们有一个事先定好的 policy。那么我们可以获得多少的价值。就对于当前这个策略,我们可以得到多大的这个 value function。这里一个方法是说,我们直接把这个 Bellman Expectation Backup,这个等式拿出来,变成一个迭代的一个过程,这样反复迭代直到收敛。这样就可以计算它的一个过程。这个迭代过程是可以看作是 `synchronous backup` 的一个过程。等式 14 说的就是这个 Bellman Expectation Backup,我们把这个转换成一个动态规划的一个迭代。当我们得到上一时刻的这个 $v_t$ 的时候,那我们下一时刻就通过这个递归的一个关系,我们可以推出下一时刻的这个值,那么反复去迭代它,最后它的值就是从 $v_1,v_2$,到最后收敛过后这个值。这个值就是我们当前给定的 policy 对应的价值函数。
|
||||
|
||||

|
||||
|
||||
@@ -184,7 +188,9 @@ $$
|
||||
|
||||

|
||||
|
||||
比如现在这个环境是一个 small gridworld 的例子。这个 agent 的目的是从某一个状态开始,它为了出去这个状态,它的终止状态就是左上角跟右上角,然后这里总共有 14 个状态,因为我们把每个位置就是用一个状态来表示。然后这个 agent 它采取的行为,我们说它的这个 policy function 就直接先给定了。我们说它在每一个状态都是随机游走。你说它们在每一个状态就是上下左右行走,它在边缘状态的时候,比如说在第四号状态的时候,它往左走的话,它是依然存在现在这个第四号状态,我们加了这个限制。然后这里我们给的奖励函数就是说你在这个每走一步,然后你就会得到一个负的奖励。所以这个 agent 需要尽快地到达这个终止状态。转态之间的转移也是确定的。比如我们从第六号状态往上走,它就会直接到达第二状态,因为很多时候有些环境是 probabilistic 的话,就是说 agent 在第六号状态,它选择往上走的时候,有可能地板是滑的,然后它可能滑到第三号状态或者第一号状态去,这就是有概率的一个转移。但我们这里说这个环境把它简化,从六号往上走,然后它就到了二号或者往右走然后它就到达七号。所以直接把这个迭代来解它。因为我们已经知道每一个概率以及它的这个概率转移,那么就直接可以进行一个简短的迭代,然后就会算出它每一个状态的一个价值。
|
||||
比如现在这个环境是一个 small gridworld 的例子。这个 agent 的目的是从某一个状态开始,然后到达终点状态。它的终止状态就是左上角跟右上角,这里总共有 14 个状态,因为我们把每个位置就是用一个状态来表示。然后这个 agent 它采取的行为,我们说它的这个 policy function 就直接先给定了,它在每一个状态都是随机游走,它们在每一个状态就是上下左右行走。它在边缘状态的时候,比如说在第四号状态的时候,它往左走的话,它是依然存在第四号状态,我们加了这个限制。
|
||||
|
||||
这里我们给的奖励函数就是说你每走一步,就会得到一个负的奖励。所以这个 agent 需要尽快地到达这个终止状态。状态之间的转移也是确定的。比如从第六号状态往上走,它就会直接到达第二号状态。很多时候有些环境是 `probabilistic` 的话,就是说 agent 在第六号状态,它选择往上走的时候,有可能地板是滑的,然后它可能滑到第三号状态或者第一号状态,这就是有概率的一个转移。但这里把这个环境进行了简化,从六号往上走,它就到了二号。所以直接用这个迭代来解它。因为我们已经知道每一个概率以及它的这个概率转移,那么就直接可以进行一个简短的迭代,然后就会算出它每一个状态的价值。
|
||||
|
||||

|
||||
|
||||
@@ -238,7 +244,7 @@ Policy evaluation 是说我们给定一个 MDP 以及给定一个 policy,然
|
||||
|
||||

|
||||
|
||||
当我们一直在采取这个 arg max这个操作的时候,我们会得到一个单调的递增。其实大致就是再说,我们通过采取这种 greedy ,这种 arg max 这个操作,然后是会得到更好的这个或者是不变的这个 policy,而不会使它这个价值函数变差。所以当这个改进停止过后,然后我们就会得到一个最佳策略。
|
||||
当我们一直在采取这个 arg max这个操作的时候,我们会得到一个单调的递增。其实大致就是再说,我们通过采取这种 greedy ,这种 arg max 这个操作,然后是会得到更好的这个或者是不变的这个 policy,而不会使它这个价值函数变差。所以当这个改进停止过后,我们就会得到一个最佳策略。
|
||||
|
||||

|
||||
|
||||
@@ -301,9 +307,7 @@ Value iteration 这个算法目的是为了得到一个最佳的一个策略。
|
||||
|
||||

|
||||
|
||||
再来在这个状态下面进行改变,现在你看基本没有什么变化,就说明整个 MDP 已经收敛了。所以对于现在它每个状态的值就是它当前最佳的 value function 的值以及它当前状态对应的这个 policy 已经是最佳的 policy。我们可以简单来看,比如说现在我们在右上角这个 0.38 的这个位置,现在我们直接就可以跟根据它每个状态的这个值,比如现在右上角,然后它说现在应该往下走,我们往下走一步。它又说往下走,然后再往下走。现在我们有两个选择,一个是往左走,一个往下走。我们现在往下走,随着这个箭头的指示,我们就会到达中间 1.20 的一个价值的一个状态。如果能达到这个状态的话,我们会得到很多 reward 。这个说明了 policy iteration 的一个过程,把这个 gridworld 解决掉。解决掉的意思是说,不管在哪个状态,都可以顺着它这个状态对应的最佳的这个策略,然后到达我们可以获得最多奖励的一个状态。
|
||||
|
||||
|
||||
再来在这个状态下面进行改变,现在你看基本没有什么变化,就说明整个 MDP 已经收敛了。所以现在它每个状态的值就是它当前最佳的 value function 的值以及它当前状态对应的这个 policy 已经是最佳的 policy。我们可以简单来看,比如说现在我们在右上角这个 0.38 的这个位置,现在我们直接就可以根据它每个状态的这个值,比如现在右上角,然后它说现在应该往下走,我们往下走一步。它又说往下走,然后再往下走。现在我们有两个选择,一个是往左走,一个往下走。我们现在往下走,随着这个箭头的指示,我们就会到达中间 1.20 的一个价值的一个状态。如果能达到这个状态的话,我们会得到很多 reward 。这个说明了 policy iteration 的一个过程,把这个 gridworld 解决掉。解决掉的意思是说,不管在哪个状态,都可以顺着它这个状态对应的最佳的这个策略,然后到达我们可以获得最多奖励的一个状态。
|
||||
|
||||

|
||||
|
||||
|
||||
Reference in New Issue
Block a user