fix some ch2 typos

This commit is contained in:
qiwang067
2020-10-16 21:04:52 +08:00
parent 09bbece39c
commit 0bcba4fa1e

View File

@@ -68,11 +68,11 @@
![](img/2.10.png)**这里我们解释一下为什么需要 discounted factor。**
* 第一点是有些马尔可夫过程是带环的,它并没有终结,我们想避免这个无穷的奖励。
* 另外,我们想把这个不确定性表示出来,希望尽可能快地得到奖励,而不是在未来某一个点得到奖励。
* 另外如果这个奖励是有实际价值的,我们可能是更希望立刻就得到奖励,而不是后面再得到奖励。
* 有些马尔可夫过程是带环的,它并没有终结,我们想避免这个无穷的奖励。
* 我们想把这个不确定性表示出来,希望尽可能快地得到奖励,而不是在未来某一个点得到奖励。
* 如果这个奖励是有实际价值的,我们可能是更希望立刻就得到奖励,而不是后面再得到奖励。
* 在人的行为里面来说的话,大家也是想得到即时奖励。
* 另外,在有些时候这个系数也可以把它设为 0。比如说当我们设为 0 过后,然后我们就只关注了它当前的奖励。我们也可以把它设为 1设为 1 的话就是对未来并没有折扣,未来获得的奖励跟我们当前获得的奖励是一样的。这个系数其实是应该可以作为强化学习 agent 的一个 hyper parameter 来进行调整,然后就会得到不同行为的 agent。
* 在有些时候可以把这个系数设为 0。设为 0 过后,我们就只关注了它当前的奖励。我们也可以把它设为 1设为 1 的话就是对未来并没有折扣,未来获得的奖励跟当前获得的奖励是一样的。这个系数其实可以作为强化学习 agent 的一个 hyperparameter 来进行调整,然后就会得到不同行为的 agent。
![](img/2.11.png)
@@ -136,15 +136,21 @@ $$
![](img/2.15.png)
接下来我们来求解这个价值函数。我们有迭代的方法来解这种状态非常多的 MRP。这里迭代的方法就有几种,比如说我们可以通过动态规划的方法,也可以通过蒙特卡罗的办法,就通过采样的办法去计算它。另外我们也可以通过 Temporal-Difference Learning 的那个办法。这个 `Temporal-Difference Learning``TD Leanring`,就是动态规划和蒙特卡罗的一个结合。
接下来我们来求解这个价值函数。**我们可以通过迭代的方法来解这种状态非常多的 MRP。**
这里迭代的方法就有几种,
* 比如说我们可以通过动态规划的方法,
* 也可以通过蒙特卡罗的办法,就通过采样的办法去计算它,
* 也可以通过 Temporal-Difference Learning 的办法。这个 `Temporal-Difference Learning``TD Leanring`,它是动态规划和蒙特卡罗的一个结合。
![](img/2.16.png)
首先我们用蒙特卡罗的办法来计算它的价值函数。蒙特卡罗就跟我们之前采用的这个方法很类似,就说我们当得到一个 MRP 过后,我们可以从某一个状态开始,然后让它让把这个小船放进去,让它随波逐流,这样就会产生一个轨迹。产生了一个轨迹过后,就会得到一个奖励,那么就直接把它的 discounted 的奖励 $g$ 直接算出来。算出来过后就可以把它积累起来,当积累到一定的轨迹数量过后,然后直接除以这个轨迹,然后就会得到它的这个价值。
**首先我们用蒙特卡罗的办法来计算它的价值函数。**蒙特卡罗就跟我们之前采用的这个方法很类似,就说我们当得到一个 MRP 过后,我们可以从某一个状态开始,把这个小船放进去,让它随波逐流,这样就会产生一个轨迹。产生了一个轨迹过后,就会得到一个奖励,那么就直接把它的 discounted 的奖励 $g$ 算出来。算出来过后就可以把它积累起来,得到 return $G_t$。 当积累到一定的轨迹数量过后,直接用 $G_t$ 除以轨迹数量,就会得到它的价值。
比如说我们要算 $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让它最后收敛我们就可以得到它的一个状态。所以在这里算法二就是一个迭代的算法通过 bootstrapping(拔靴自助) 的办法,然后去不停地迭代这个 Bellman Equation。当这个最后更新的状态跟你上一个状态变化并不大的时候更新就可以停止我们就可以输出最新的 $V'(s)$ 作为它当前的状态。所以这里就是把 Bellman Equation 变成一个 Bellman Update这样就可以得到它的一个价值。
## Markov Decision Process(MDP)
@@ -154,11 +160,11 @@ $$
![](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)
这里说明了 MDP 跟 MRP 的之间的一个转换。已知一个 MDP 和一个 policy $\pi$ 的时候,我们可以把 MDP 转换成 MRP。在 MDP 里面,转移函数 $P(s'|s,a)$ 是基于它当前状态以及它当前的 action。因为我们现在已知它 policy function就是说在每一个状态我们知道它可能采取的行为的概率那么就可以直接把这个 action 进行加和,直接把这个 a 去掉,那我们就可以得到对于 MRP 的一个转移,这里就没有 action。对于这个奖励函数我们也可以把 action 拿掉,这样就会得到一个类似于 MRP 的奖励函数。
**这里说明了 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)
@@ -190,7 +196,7 @@ Policy 定义了在某一个状态应该采取什么样的行为,当我们知
![](img/2.25.png)
这里有一个概念叫 `Backup`。Backup 类似于 bootstraping(拔靴自助) 之间这个迭代关系,就对于某一个状态,它的当前这个价值是跟它未来价值线性相关的。你可以看到我们这里有两层加和。第一层加和就是这个叶子节点,然后往上走一层的话,我们就可以把未来的这个价值 $s'$ backup 到黑色的节点。然后再有一层加和,第二层加和,这个加和是把 action 进行加和。得到黑色节点的价值过后,再往上 backup 一层,然后就会推到根节点的价值,根节点就是我们当前状态。所以 `Backup Diagram` **定义了你未来下一时刻的状态跟你上一时刻的状态之间的一个关联。**
这里有一个概念叫 `Backup`。Backup 类似于 bootstrapping 之间这个迭代关系,就对于某一个状态,它的当前这个价值是跟它未来价值线性相关的。你可以看到我们这里有两层加和。第一层加和就是这个叶子节点,然后往上走一层的话,我们就可以把未来的这个价值 $s'$ backup 到黑色的节点。然后再有一层加和,第二层加和,这个加和是把 action 进行加和。得到黑色节点的价值过后,再往上 backup 一层,然后就会推到根节点的价值,根节点就是我们当前状态。所以 `Backup Diagram` **定义了你未来下一时刻的状态跟你上一时刻的状态之间的一个关联。**
![](img/2.26.png)
@@ -228,7 +234,7 @@ $$
MDP 的 `prediction``control` 是 MDP 里面的核心问题。
* Prediction 是说给定一个 MDP 以及一个 policy $\pi$ ,去计算它的 value function就等于每个状态它的价值函数是多少。
* Control 这个问题是说我们去寻找一个最佳的一个策略,它的 input 就是MDP输出是通过去寻找它的最佳策略然后同时输出它的最佳价值函数(optimal value function)以及它的这个最佳策略(optimal policy)。
* Control 是说我们去寻找一个最佳的策略,它的 input 就是 MDP输出是通过去寻找它的最佳策略然后同时输出它的最佳价值函数(optimal value function)以及它的这个最佳策略(optimal policy)。
* 在 MDP 里面prediction 和 control 都可以通过这个动态规划去解决。
![](img/2.32.png)