fix ch1 typos

This commit is contained in:
qiwang067
2020-10-27 10:38:02 +08:00
parent bfc8a88d82
commit 7df42e609b

View File

@@ -30,7 +30,7 @@
**我们对比下强化学习和监督学习。**
* 首先强化学习输入的序列的数据并不是像 supervised learning 里面这些样本都是独立的。
* 另外一点是 learner 并没有被告诉你每一步正确的行为应该是什么。Learner 不得不自己去发现哪些行为可以使得它最后得到这个奖励,只能通过不停地尝试来发现最有利的 action。
* 另外一点是 learner 并没有被告诉你每一步正确的行为应该是什么。Learner 需要自己去发现哪些行为可以使得它最后得到这个奖励,只能通过不停地尝试来发现最有利的 action。
* 这里还有一点是 agent 获得自己能力的过程中,其实是通过不断地试错(trial-and-error exploration)。Exploration 和 exploitation 是强化学习里面非常核心的一个问题。Exploration 是说你会去尝试一些新的行为这些新的行为有可能会使你得到更高的奖励也有可能使你一无所有。Exploitation 说的是你就是就采取你已知的可以获得最大奖励的行为,你就重复执行这个 action 就可以了,因为你已经知道可以获得一定的奖励。因此,我们需要在 exploration 和 exploitation 之间取得一个权衡,这也是在监督学习里面没有的情况。
@@ -38,10 +38,10 @@
![](img/1.6.png)通过跟监督学习比较,我们可以总结出这个强化学习的一些特征。
* 首先它是有这个 `trial-and-error exploration`,它需要通过探索环境来获取对这个环境的理解。
* 第二点是强化学习 agent 会从环境里面获得延迟的奖励。
* 第三点是在强化学习的训练过程中,时间非常重要。因为你得到的数据都是有这个时间关联的,而不是这个 i.i.d 分布的。在机器学习中,如果观测数据有非常强的关联,其实会使得这个训练非常不稳定。这也是为什么在监督学习中,我们希望 data 尽量是 i.i.d 了,这样就可以消除数据之间的相关性。
* 第四点是这个 agent 的行为会影响它随后得到的数据,这一点是非常重要的。在我们训练 agent 的过程中,很多时候我们也是通过正在学习的这个 agent 去跟环境交互来得到数据。所以如果在训练过程中,这个 agent 的模型很快死掉了,那会使得我们采集到的数据是非常糟糕的,这样整个训练过程就失败了。所以在强化学习里面一个非常重要的问题就是怎么让这个 agent 的行为一直稳定地提升。
* 强化学习有这个 `trial-and-error exploration`,它需要通过探索环境来获取对这个环境的理解。
* 强化学习 agent 会从环境里面获得延迟的奖励(delayed reward)
* 在强化学习的训练过程中,时间非常重要。因为你得到的数据都是有这个时间关联的,而不是这个 i.i.d 分布的。在机器学习中,如果观测数据有非常强的关联,其实会使得这个训练非常不稳定。这也是为什么在监督学习中,我们希望 data 尽量是 i.i.d 了,这样就可以消除数据之间的相关性。
* Agent 的行为会影响它随后得到的数据,这一点是非常重要的。在我们训练 agent 的过程中,很多时候我们也是通过正在学习的这个 agent 去跟环境交互来得到数据。所以如果在训练过程中,这个 agent 的模型很快死掉了,那会使得我们采集到的数据是非常糟糕的,这样整个训练过程就失败了。所以在强化学习里面一个非常重要的问题就是怎么让这个 agent 的行为一直稳定地提升。
![](img/1.7.png)
@@ -72,14 +72,24 @@
在强化学习里面,我们是通过让它尝试去玩这个游戏,然后直到游戏结束过后,再去说你前面的一系列动作到底是正确还是错误。
![](img/1.13.png)
上图的过程是 `rollout` 的一个过程。Rollout 的意思是从当前帧去生成很多局的游戏。然后这个很多局就通过是你当前的这个网络去跟这个环境交互,你就会得到一堆这个观测。你可以把每一个观测看成一个`轨迹(trajectory)`,轨迹的话就是当前帧以及它采取的策略,每一步的这个策略都有。最后结束过后,你会知道你到底有没有把这个球击到对方区域,对方没有接住,你是赢了还是输了。我们可以通过观测序列以及 Eventual Reward 来训练这个 agent ,使它尽可能地采取最后可以获得这个 Eventual Reward 的过程。
* 上图的过程是 `rollout` 的一个过程。Rollout 的意思是从当前帧去生成很多局的游戏。
* 当前的 agent 去跟环境交互,你就会得到一堆观测。你可以把每一个观测看成一个`轨迹(trajectory)`。轨迹就是当前帧以及它采取的策略,即状态和动作的一个序列:
$$
\tau=\left(s_{0}, a_{0}, s_{1}, a_{1}, \ldots\right)
$$
* 最后结束过后,你会知道你到底有没有把这个球击到对方区域,对方没有接住,你是赢了还是输了。我们可以通过观测序列以及 eventual reward 来训练这个 agent ,使它尽可能地采取可以获得这个 eventual reward 的动作。
* 一场游戏叫做一个 `episode(回合)` 或者 `trial(试验)`
![](img/1.14.png)
强化学习是有一定的历史的,只是最近大家把强化学习跟深度学习结合起来,就形成了`深度强化学习(Deep Reinforcemet Learning)`。这里做一个类比,把它类比于这个传统的计算机视觉以及深度计算机视觉。
* 传统的计算机视觉由两个过程组成。你给一张图,我们先要提取它的特征,用一些设计好的 feature比如说 HOG、DPM。提取这些 feature 后,我们再单独训练一个分类器。这个分类器可以是 SVM、Boosting然后就可以辨别这张图片是狗还是猫。
* 2012 年过后,我们有了卷积神经网络,大家就把特征提取以及分类两者合到一块儿去了,就是训练一个神经网络。这个神经网络既可以做特征提取,也可以做分类。它可以实现这种端到端的一个训练,它里面的参数可以在每一个阶段都得到极大的优化,这样就得到了一个非常重要的突破。
* 2012 年过后,我们有了卷积神经网络,大家就把特征提取以及分类两者合到一块儿去了,就是训练一个神经网络。这个神经网络既可以做特征提取,也可以做分类。它可以实现这种端到端的训练,它里面的参数可以在每一个阶段都得到极大的优化,这样就得到了一个非常重要的突破。
![](img/1.15.png)
@@ -203,7 +213,7 @@ Policy 决定了这个 agent 的行为,它其实是一个函数,把输入的
![](img/1.27.png)
**价值函数是未来奖励的一个预测,用来评估状态的好坏**
价值函数里面有一个 discount factor我们希望尽可能在短的时间里面得到尽可能多的奖励。如果我们说十天过后我给你 100 块钱,跟我现在给你 100 块钱,你肯定更希望我现在就给你 100 块钱,因为你可以把这 100 块钱存在银行里面,你就会有一些利息。所以我们就通过把这个 `discount factor` 放到价值函数的定义里面,价值函数的定义其实是一个期望。这里有一个期望 $\mathbb{E}_{\pi}$,这里有个小角标是 $\pi$ 函数,这个 $\pi$ 函数就是说在我们已知某一个 policy function 的时候,到底可以得到多少的奖励。
价值函数里面有一个 `discount factor`,我们希望尽可能在短的时间里面得到尽可能多的奖励。如果我们说十天过后,我给你 100 块钱,跟我现在给你 100 块钱,你肯定更希望我现在就给你 100 块钱,因为你可以把这 100 块钱存在银行里面,你就会有一些利息。所以我们就通过把这个 discount factor 放到价值函数的定义里面,价值函数的定义其实是一个期望。这里有一个期望 $\mathbb{E}_{\pi}$,这里有个小角标是 $\pi$ 函数,这个 $\pi$ 函数就是说在我们已知某一个 policy function 的时候,到底可以得到多少的奖励。
我们还有一种价值函数Q 函数。Q 函数里面包含两个变量:状态和动作。所以你未来可以获得多少的奖励,它的这个期望取决于你当前的状态和当前的行为。这个 Q 函数是强化学习算法里面要学习的一个函数。因为当我们得到这个 Q 函数后,进入某一种状态,它最优的行为就可以通过这个 Q 函数来得到。
@@ -437,7 +447,7 @@ Gym 中的小游戏,大部分都可以用一个普通的实数或者向量来
* `observation(object)`是状态信息,是在游戏中观测到的屏幕像素值或者盘面状态描述信息。
* `reward(float)`是奖励值,即 action 提交以后能够获得的奖励值。这个奖励值因游戏的不同而不同,但总体原则是,对完成游戏有帮助的动作会获得比较高的奖励值。
* `done(boolean)`表示游戏是否已经完成。如果完成了,就需要重置游戏并开始一个新的Episode。
* `done(boolean)`表示游戏是否已经完成。如果完成了,就需要重置游戏并开始一个新的 episode。
* `info(dict)`是一些比较原始的用于诊断和调试的信息或许对训练有帮助。不过OpenAI团队在评价你提交的机器人时是不允许使用这些信息的。
在每个训练中都要使用的返回值有 observation、reward、done。但 observation 的结构会由于游戏的不同而发生变化。以 CartPole-v0 小游戏为例,我们修改下代码: