diff --git a/docs/chapter1/chapter1.md b/docs/chapter1/chapter1.md index d5aee15..dda4342 100644 --- a/docs/chapter1/chapter1.md +++ b/docs/chapter1/chapter1.md @@ -3,14 +3,21 @@ ## Reinforcement Learning ![](img/1.1.png) -**强化学习讨论的问题是一个 智能体(agent) 怎么在一个复杂不确定的环境(environment)里面去极大化它能获得的奖励。**示意图由两部分组成:agent 和 environment。在强化学习过程中,agent 跟 environment 一直在交互。Agent 在环境里面获取到状态,agent 会利用这个状态输出一个 action,一个决策。然后这个决策会放到环境之中去,环境会通过这个 agent 采取的决策,输出下一个状态以及当前的这个决策得到的奖励。Agent 的目的就是为了尽可能多地从环境中获取奖励。 +**强化学习讨论的问题是一个智能体(agent) 怎么在一个复杂不确定的环境(environment)里面去极大化它能获得的奖励。** + +示意图由两部分组成:agent 和 environment。在强化学习过程中,agent 跟 environment 一直在交互。Agent 在环境里面获取到状态,agent 会利用这个状态输出一个 action,一个决策。然后这个决策会放到环境之中去,环境会通过这个 agent 采取的决策,输出下一个状态以及当前的这个决策得到的奖励。Agent 的目的就是为了尽可能多地从环境中获取奖励。 ![](img/1.2.png) -我们可以把强化学习跟监督学习做一个对比。上图说的是 `supervised learning`。举个图片分类的例子,监督学习就是说我们有一大堆标定的数据,比如车、飞机、凳子这些标定的图片,这些图片都要满足 i.i.d 分布,就是它们之间是没有关联的一个分布。然后我们训练一个分类器,比如说右边这个神经网络。为了分辨出这个图片是车辆还是飞机,训练过程中,我们把真实的 label 给了这个网络。当这个网络做出一个错误的预测,比如现在输入了这个汽车的图片,它预测出来是飞机。我们就会直接告诉它,你这个预测是错误的,正确的 label 应该是车。然后我们把这个错误写成一个`损失函数(loss function)`,通过 Backpropagation 来训练这个网络。所以在监督学习过程中,有两个假设, +**我们可以把强化学习跟监督学习做一个对比。** -* 输入的数据,标定的数据,它都是没有关联的,尽可能没有关联。因为如果有关联的话,这个网络是不好学习的。 -* 我们告诉这个 learner 正确的标签是什么,这样它可以通过正确的标签来修正自己的这个预测。 +* 举个图片分类的例子,`监督学习( supervised learning)`就是说我们有一大堆标注的数据,比如车、飞机、凳子这些标注的图片,这些图片都要满足 i.i.d 分布,就是它们之间是没有关联的一个分布。 + +* 然后我们训练一个分类器,比如说右边这个神经网络。为了分辨出这个图片是车辆还是飞机,训练过程中,我们把真实的 label 给了这个网络。当这个网络做出一个错误的预测,比如现在输入了汽车的图片,它预测出来是飞机。我们就会直接告诉它,你这个预测是错误的,正确的 label 应该是车。然后我们把这个错误写成一个`损失函数(loss function)`,通过 Backpropagation 来训练这个网络。 + +* 所以在监督学习过程中,有两个假设: + * 输入的数据(标注的数据)都是没有关联的,尽可能没有关联。因为如果有关联的话,这个网络是不好学习的。 + * 我们告诉这个 learner 正确的标签是什么,这样它可以通过正确的标签来修正自己的这个预测。 ![](img/1.3.png) @@ -36,7 +43,7 @@ * 在强化学习过程中,没有非常强的 supervisor,只有一个`奖励信号(reward signal)`,就是环境会在很久以后告诉你之前你采取的行为到底是不是有效的。Agent 在这个强化学习里面学习的话就非常困难,因为你没有得到即时反馈。当你采取一个行为过后,如果是监督学习,你就立刻可以获得一个指引,就说你现在做出了一个错误的决定,那么正确的决定应该是谁。而在强化学习里面,环境可能会告诉你这个行为是错误的,但是它并没有告诉你正确的行为是什么。而且更困难的是,它可能是在一两分钟过后告诉你错误,它再告诉你之前的行为到底行不行。所以这也是强化学习和监督学习不同的地方。 -![](img/1.6.png)通过跟监督学习比较,我们可以总结出这个强化学习的一些特征。 +![](img/1.6.png)通过跟监督学习比较,我们可以总结出强化学习的一些特征。 * 强化学习有这个 `trial-and-error exploration`,它需要通过探索环境来获取对这个环境的理解。 * 强化学习 agent 会从环境里面获得延迟的奖励(delayed reward)。 @@ -45,7 +52,10 @@ ![](img/1.7.png) -为什么我们关注这个强化学习,其中非常重要的一点就是强化学习得到的这个模型可以取得超人类的结果。监督学习获取的这些监督数据,其实是让人来标定的。比如说 ImageNet,这些图片都是人类标定的。那么我们就可以确定这个算法的 upper bound(上限),人类的这个标定结果决定了它永远不可能超越人类。但是对于强化学习,它在环境里面自己探索,有非常大的潜力,它可以获得超越人的能力的这个表现,比如说 AlphaGo,谷歌 DeepMind 的 AlphaGo 这样一个强化学习的算法可以把人类最强的棋手都打败。 +为什么我们关注强化学习,其中非常重要的一点就是强化学习得到的这个模型可以取得超人类的结果。 + +* 监督学习获取的这些监督数据,其实是让人来标注的。比如说 ImageNet,这些图片都是人类标注的。那么我们就可以确定这个算法的 upper bound(上限),人类的这个标注结果决定了它永远不可能超越人类。 +* 但是对于强化学习,它在环境里面自己探索,有非常大的潜力,它可以获得超越人的能力的这个表现,比如说 AlphaGo,谷歌 DeepMind 的 AlphaGo 这样一个强化学习的算法可以把人类最强的棋手都打败。 ![](img/1.8.png) @@ -121,7 +131,11 @@ ### Agent and Environment ![](img/1.18.png) -接下来我们讲`序列决策(Sequential Decision Making)过程`。强化学习研究的问题是 agent 跟环境交互,上图左边画的是一个 agent,agent 一直在跟环境进行交互。这个 agent 把它输出的动作给环境,环境取得这个动作过后,会进行到下一步,然后会把下一步的观测跟它上一步是否得到奖励返还给 agent。通过这样的交互过程会产生很多观测,agent 就是为了从这些观测之中学到能极大化奖励的策略。 +接下来我们讲`序列决策(Sequential Decision Making)过程`。 + +强化学习研究的问题是 agent 跟环境交互,上图左边画的是一个 agent,agent 一直在跟环境进行交互。这个 agent 把它输出的动作给环境,环境取得这个动作过后,会进行到下一步,然后会把下一步的观测跟它上一步是否得到奖励返还给 agent。 + +通过这样的交互过程会产生很多观测,agent 的目的是从这些观测之中学到能极大化奖励的策略。 ### Reward @@ -367,11 +381,11 @@ Learning 和 Planning 是序列决策的两个基本问题。 ## Experiment with Reinforcement Learning ![](img/1.40.png) -接下来进入一个实践环节。强化学习是一个理论跟实践结合的机器学习分支,需要去推导很多算法公式。然后去理解它算法背后的一些数学原理。另外一方面,上机实践通过实现算法,在很多实验环境里面去探索这个算法是不是可以得到预期效果也是一个非常重要的过程。 +强化学习是一个理论跟实践结合的机器学习分支,需要去推导很多算法公式。然后去理解它算法背后的一些数学原理。另外一方面,上机实践通过实现算法,在很多实验环境里面去探索这个算法是不是可以得到预期效果也是一个非常重要的过程。 ![](img/1.41.png) -我会在网页上面公布一些代码,会利用 Python 和深度学习的一些包(主要是用 PyTorch 为主),然后在[这个链接](https://github.com/cuhkrlcourse/RLexample)里面,我其实已经公布了一些 RL 相关的代码。 +在[这个链接](https://github.com/cuhkrlcourse/RLexample)里面,我其实公布了一些 RL 相关的代码,利用了 Python 和深度学习的一些包(主要是用 PyTorch 为主)。 ![](img/1.42.png)