diff --git a/docs/chapter1/chapter1.md b/docs/chapter1/chapter1.md index b02b3ad..e5f58e3 100644 --- a/docs/chapter1/chapter1.md +++ b/docs/chapter1/chapter1.md @@ -2,11 +2,11 @@ ## Reinforcement Learning -![](img/1.1.png) +![](img/1.1.png ':size=300') **强化学习讨论的问题是一个智能体(agent) 怎么在一个复杂不确定的环境(environment)里面去极大化它能获得的奖励。** 示意图由两部分组成:agent 和 environment。在强化学习过程中,agent 跟 environment 一直在交互。Agent 在环境里面获取到状态,agent 会利用这个状态输出一个动作(action),一个决策。然后这个决策会放到环境之中去,环境会根据 agent 采取的决策,输出下一个状态以及当前的这个决策得到的奖励。Agent 的目的就是为了尽可能多地从环境中获取奖励。 -![](img/1.2.png) +![](img/1.2.png ':size=300') **我们可以把强化学习跟监督学习做一个对比。** @@ -65,18 +65,18 @@ 上图是强化学习的一个经典例子,就是雅达利的一个叫 Pong 的游戏。这个游戏就是把这个球拍到左边,然后左边这个选手需要把这个球拍到右边。训练好的一个强化学习 agent 和正常的选手有区别,强化学习的 agent 会一直在做这种无意义的一些振动,而正常的选手不会出现这样的行为。 -![](img/1.10.png) +![](img/1.10.png ':size=300') 在这个 pong 的游戏里面,决策其实就是两个动作:往上或者往下。如果强化学习是通过学习一个 policy network 来分类的话,其实就是输入当前帧的图片,policy network 就会输出所有决策的可能性。 -![](img/1.11.png) +![](img/1.11.png ':size=300') 对于监督学习,我们可以直接告诉 agent 正确的标签是什么。但在这种游戏情况下面,我们并不知道它的正确的标签是什么。 -![](img/1.12.png) +![](img/1.12.png ':size=300') 在强化学习里面,我们是通过让它尝试去玩这个游戏,然后直到游戏结束过后,再去说你前面的一系列动作到底是正确还是错误。 -![](img/1.13.png) +![](img/1.13.png ':size=300') * 上图的过程是 `rollout` 的一个过程。Rollout 的意思是从当前帧去生成很多局的游戏。 @@ -89,7 +89,7 @@ * 一场游戏叫做一个 `episode(回合)` 或者 `trial(试验)`。 -![](img/1.14.png) +![](img/1.14.png ':size=300') 强化学习是有一定的历史的,只是最近大家把强化学习跟深度学习结合起来,就形成了`深度强化学习(Deep Reinforcemet Learning)`。深度强化学习 = 深度学习 + 强化学习。这里做一个类比,把它类比于这个传统的计算机视觉以及深度计算机视觉。 * 传统的计算机视觉由两个过程组成。 @@ -97,7 +97,7 @@ * 提取这些特征后,我们再单独训练一个分类器。这个分类器可以是 SVM、Boosting,然后就可以辨别这张图片是狗还是猫。 * 2012 年过后,我们有了卷积神经网络,大家就把特征提取以及分类两者合到一块儿去了,就是训练一个神经网络。这个神经网络既可以做特征提取,也可以做分类。它可以实现这种端到端的训练,它里面的参数可以在每一个阶段都得到极大的优化,这样就得到了一个非常重要的突破。 -![](img/1.15.png) +![](img/1.15.png ':size=300') 我们可以把神经网络放到强化学习里面。 @@ -124,7 +124,7 @@ ### Agent and Environment -![](img/1.18.png) +![](img/1.18.png ':size=300') 接下来我们讲`序列决策(Sequential Decision Making)过程`。 强化学习研究的问题是 agent 跟环境交互,上图左边画的是一个 agent,agent 一直在跟环境进行交互。这个 agent 把它输出的动作给环境,环境取得这个动作过后,会进行到下一步,然后会把下一步的观测跟它上一步是否得到奖励返还给 agent。 @@ -378,7 +378,7 @@ Learning 和 Planning 是序列决策的两个基本问题。 * 探索:你可能尝试一些新的招式,有可能你会发出大招来,这样就可能一招毙命。 ### K-armed Bandit -![](img/1.39.png ':size=450') +![](img/1.39.png ':size=300') 与监督学习不同,强化学习任务的最终奖赏是在多步动作之后才能观察到,这里我们不妨先考虑比较简单的情形:最大化单步奖赏,即仅考虑一步操作。需注意的是,即便在这样的简化情形下,强化学习仍与监督学习有显著不同,因为机器需通过尝试来发现各个动作产生的结果,而没有训练数据告诉机器应当做哪个动作。 @@ -405,7 +405,7 @@ Learning 和 Planning 是序列决策的两个基本问题。 ### Gym -![](img/1.44.png ':size=400') +![](img/1.44.png ':size=300') [OpenAI Gym](https://gym.openai.com/) 是一个环境仿真库,里面包含了很多现有的环境。针对不同的场景,我们可以选择不同的环境, @@ -449,7 +449,7 @@ for step in range(100): 几行代码就实现了强化学习的框架。 -![](img/1.46.png ':size=400') +![](img/1.46.png ':size=300') 在 OpenAI Gym 里面有很经典的控制类游戏。 * 比如说 Acrobot 就是把两节铁杖甩了立起来。