Merge branch 'master' of github.com:datawhalechina/easy-rl

This commit is contained in:
qiwang067
2022-10-23 20:17:12 +08:00
25 changed files with 981 additions and 838 deletions

View File

@@ -1,113 +1,123 @@
# Chapter1 强化学习概述
# 第一章 强化学习基础
## 1 Keywords
## 关键词
- **强化学习(Reinforcement Learning**Agent可以在与复杂且不确定的Environment进行交互时,尝试使所获得的Reward最大化的计算算法。
- **Action**: Environment接收到的Agent当前状态的输出。
- **State**Agent从Environment中获取到的状态。
- **Reward**Agent从Environment中获取的反馈信号这个信号指定了Agent在某一步采取了某个策略以后是否得到奖励。
- **Exploration**:在当前的情况下,继续尝试**新的**Action其有可能会使你得到更高的这个奖励也有可能使你一无所有。
- **Exploitation**:在当前的情况下,继续尝试**已知的**可以获得最大Reward的过程即重复执行这个 Action 就可以了。
- **深度强化学习Deep Reinforcement Learning**不需要手工设计特征仅需要输入State让系统直接输出Action的一个end-to-end training的强化学习方法。通常使用神经网络来拟合 value function 或者 policy network。
- **Full observability、fully observed和partially observed**当Agent的状态跟Environment的状态等价的时候我们就说现在Environment是full observability全部可观测当Agent能够观察到Environment的所有状态时我们称这个环境是fully observed完全可观测。一般我们的Agent不能观察到Environment的所有状态时我们称这个环境是partially observed部分可观测
- **POMDPPartially Observable Markov Decision Processes**部分可观测马尔可夫决策过程即马尔可夫决策过程的泛化。POMDP 依然具有马尔可夫性质,但是假设智能体无法感知环境的状态 $s$,只能知道部分观测值 $o$。
- **Action spacediscrete action spaces and continuous action spaces**在给定的Environment中有效动作的集合经常被称为动作空间Action spaceAgent的动作数量是有限的动作空间为离散动作空间discrete action spaces反之称为连续动作空间continuous action spaces
- **policy-based基于策略的**Agent会制定一套动作策略确定在给定状态下需要采取何种动作并根据这个策略进行操作。强化学习算法直接对策略进行优化使制定的策略能够获得最大的奖励。
- **valued-based基于价值的**Agent不需要制定显式的策略它维护一个价值表格或价值函数并通过这个价值表格或价值函数来选取价值最大的动作。
- **model-based有模型结构**Agent通过学习状态的转移来采取措施。
- **model-free无模型结构**Agent没有去直接估计状态的转移也没有得到Environment的具体转移变量。它通过学习 value function 和 policy function 进行决策。
- **强化学习(reinforcement learningRL**智能体可以在与复杂且不确定的环境进行交互时,尝试使所获得的奖励最大化的算法。
## 2 Questions
- **动作action** 环境接收到的智能体基于当前状态的输出。
- 强化学习的基本结构是什么?
- **状态state**:智能体从环境中获取的状态。
本质上是Agent和Environment间的交互。具体地当Agent在Environment中得到当前时刻的StateAgent会基于此状态输出一个Action。然后这个Action会加入到Environment中去并输出下一个State和当前的这个Action得到的Reward。Agent在Environment里面存在的目的就是为了极大它的期望积累的Reward
- **奖励reward**:智能体从环境中获取的反馈信号,这个信号指定了智能体在某一步采取了某个策略以后是否得到奖励,以及奖励的大小
- 强化学习相对于监督学习为什么训练会更加困难?(强化学习的特征)
- **探索exploration**:在当前的情况下,继续尝试新的动作。其有可能得到更高的奖励,也有可能一无所有。
答:
- **开发exploitation**:在当前的情况下,继续尝试已知的可以获得最大奖励的过程,即选择重复执行当前动作。
1. 强化学习处理的多是序列数据,其很难像监督学习的样本一样满足**IID独立同分布**条件
- **深度强化学习deep reinforcement learning**不需要手动设计特征仅需要输入状态就可以让系统直接输出动作的一个端到端end-to-end的强化学习方法。通常使用神经网络来拟合价值函数value function或者策略网络policy network
2. 强化学习有奖励的延迟Delay Reward即在Agent的action作用在Environment中时Environment对于Agent的State的**奖励的延迟**Delayed Reward使得反馈不及时
3. 相比于监督学习有正确的label可以通过其修正自己的预测强化学习相当于一个“试错”的过程其完全根据Environment的“**反馈**”更新对自己最有利的Action。
- **全部可观测full observability、完全可观测fully observed和部分可观测partially observed**:当智能体的状态与环境的状态等价时,我们就称这个环境是全部可观测的;当智能体能够观察到环境的所有状态时,我们称这个环境是完全可观测的;一般智能体不能观察到环境的所有状态时,我们称这个环境是部分可观测的
- 强化学习的基本特征有哪些?
- **部分可观测马尔可夫决策过程partially observable Markov decision processPOMDP**:即马尔可夫决策过程的泛化。部分可观测马尔可夫决策过程依然具有马尔可夫性质,但是其假设智能体无法感知环境的状态,只能知道部分观测值。
答:
- **动作空间action space、离散动作空间discrete action space和连续动作空间continuous action space**:在给定的环境中,有效动作的集合被称为动作空间,智能体的动作数量有限的动作空间称为离散动作空间,反之,则被称为连续动作空间。
1. **trial-and-error exploration**的过程即需要通过探索Environment来获取对这个Environment的理解
2. 强化学习的Agent会从Environment里面获得**延迟**的Reward。
3. 强化学习的训练过程中**时间**非常重要因为数据都是有时间关联的而不是像监督学习一样是IID分布的。
4. 强化学习中Agent的Action会**影响**它随后得到的**反馈**。
- **基于策略的policy-based**:智能体会制定一套动作策略,即确定在给定状态下需要采取何种动作,并根据这个策略进行操作。强化学习算法直接对策略进行优化,使制定的策略能够获得最大的奖励
- 近几年强化学习发展迅速的原因?
- **基于价值的valued-based**:智能体不需要制定显式的策略,它维护一个价值表格或者价值函数,并通过这个价值表格或价值函数来执行使得价值最大化的动作。
答:
- **有模型model-based结构**:智能体通过学习状态的转移来进行决策。
1. **算力GPU、TPU的提升**,我们可以更快地做更多的 trial-and-error 的尝试来使得Agent在Environment里面获得很多信息取得更大的Reward
- **免模型model-free结构**:智能体没有直接估计状态的转移,也没有得到环境的具体转移变量,它通过学习价值函数或者策略网络进行决策
2. 我们有了深度强化学习这样一个端到端的训练方法,可以把特征提取和价值估计或者决策一起优化,这样就可以得到一个更强的决策网络。
- 状态和观测有什么关系?
## 习题
状态state是对世界的**完整描述**不会隐藏世界的信息。观测observation是对状态的**部分描述**,可能会遗漏一些信息。在深度强化学习中,我们几乎总是用一个实值向量、矩阵或者更高阶的张量来表示状态和观测。
**1-1** 强化学习的基本结构是什么?
- 对于一个强化学习 Agent它由什么组成
本质上是智能体与环境的交互。具体地,当智能体在环境中得到当前时刻的状态后,其会基于此状态输出一个动作,这个动作会在环境中被执行并输出下一个状态和当前的这个动作得到的奖励。智能体在环境里存在的目标是最大化期望累积奖励。
答:
**1-2** 强化学习相对于监督学习为什么训练过程会更加困难?
1. **策略函数policy function**Agent会用这个函数来选取它下一步的动作包括**随机性策略stochastic policy**和**确定性策略deterministic policy**
2. **价值函数value function**,我们用价值函数来对当前状态进行评估,即进入现在的状态,到底可以对你后面的收益带来多大的影响。当这个价值函数大的时候,说明你进入这个状态越有利。
3. **模型model**,其表示了 Agent 对这个Environment的状态进行的理解它决定了这个系统是如何进行的。
- 根据强化学习 Agent 的不同,我们可以将其分为哪几类?
答:
1. **基于价值函数的Agent**。 显式学习的就是价值函数,隐式的学习了它的策略。因为这个策略是从我们学到的价值函数里面推算出来的。
2. **基于策略的Agent**。它直接去学习 policy就是说你直接给它一个 state它就会输出这个动作的概率。然后在这个 policy-based agent 里面并没有去学习它的价值函数。
3. 然后另外还有一种 Agent 是把这两者结合。把 value-based 和 policy-based 结合起来就有了 **Actor-Critic agent**。这一类 Agent 就把它的策略函数和价值函数都学习了,然后通过两者的交互得到一个更佳的状态。
- 基于策略迭代和基于价值迭代的强化学习方法有什么区别?
答:
1强化学习处理的大多是序列数据其很难像监督学习的样本一样满足独立同分布条件
1. 基于策略迭代的强化学习方法agent会制定一套动作策略确定在给定状态下需要采取何种动作并根据这个策略进行操作。强化学习算法直接对策略进行优化使制定的策略能够获得最大的奖励基于价值迭代的强化学习方法agent不需要制定显式的策略它维护一个价值表格或价值函数并通过这个价值表格或价值函数来选取价值最大的动作
2. 基于价值迭代的方法只能应用在不连续的、离散的环境下(如围棋或某些游戏领域),对于行为集合规模庞大、动作连续的场景(如机器人控制领域),其很难学习到较好的结果(此时基于策略迭代的方法能够根据设定的策略来选择连续的动作)
3. 基于价值迭代的强化学习算法有 Q-learning、 Sarsa 等,而基于策略迭代的强化学习算法有策略梯度算法等
4. 此外, Actor-Critic 算法同时使用策略和价值评估来做出决策,其中,智能体会根据策略做出动作,而价值函数会对做出的动作给出价值,这样可以在原有的策略梯度算法的基础上加速学习过程,取得更好的效果。
2强化学习有奖励的延迟即智能体的动作作用在环境中时环境对于智能体状态的奖励存在延迟使得反馈不实时
3监督学习有正确的标签模型可以通过标签修正自己的预测来更新模型而强化学习相当于一个“试错”的过程其完全根据环境的“反馈”更新对自己最有利的动作
- 有模型model-based学习和免模型model-free学习有什么区别
**1-3** 强化学习的基本特征有哪些
答:针对是否需要对真实环境建模,强化学习可以分为有模型学习和免模型学习
有模型学习是指根据环境中的经验,构建一个虚拟世界,同时在真实环境和虚拟世界中学习;免模型学习是指不对环境进行建模,直接与真实环境进行交互来学习到最优策略。总的来说,有模型学习相比于免模型学习仅仅多出一个步骤,即对真实环境进行建模。免模型学习通常属于数据驱动型方法,需要大量的采样来估计状态、动作及奖励函数,从而优化动作策略。免模型学习的泛化性要优于有模型学习,原因是有模型学习算需要对真实环境进行建模,并且虚拟世界与真实环境之间可能还有差异,这限制了有模型学习算法的泛化性。
- 强化学习的通俗理解
environment 跟 reward function 不是我们可以控制的environment 跟 reward function 是在开始学习之前,就已经事先给定的。我们唯一能做的事情是调整 actor 里面的 policy使得 actor 可以得到最大的 reward。Actor 里面会有一个 policy 这个 policy 决定了actor 的行为。Policy 就是给一个外界的输入,然后它会输出 actor 现在应该要执行的行为。
1有试错探索过程即需要通过探索环境来获取对当前环境的理解
## 3 Something About Interview
2强化学习中的智能体会从环境中获得延迟奖励。
3强化学习的训练过程中时间非常重要因为数据都是时间关联的而不是像监督学习中的数据大部分是满足独立同分布的。
4强化学习中智能体的动作会影响它从环境中得到的反馈。
- 高冷的面试官: 看来你对于RL还是有一定了解的,那么可以用一句话谈一下你对于强化学习的认识吗?
**1-4** 近几年强化学习发展迅速的原因有哪些?
答: 强化学习包含环境,动作和奖励三部分,其本质是agent通过与环境的交互,使得其作出的action所得到的决策得到的总的奖励达到最大,或者说是期望最大
1算力的提升使我们可以更快地通过试错等方法来使得智能体在环境里面获得更多的信息从而取得更大的奖励
2我们有了深度强化学习这样一个端到端的训练方法可以把特征提取、价值估计以及决策部分一起优化这样就可以得到一个更强的决策网络。
- 高冷的面试官: 你认为强化学习与监督学习和无监督学习有什么区别?
**1-5** 状态和观测有什么关系?
答: 首先强化学习和无监督学习是不需要标签的,而监督学习需要许多有标签的样本来进行模型的构建;对于强化学习与无监督学习,无监督学习是直接对于给定的数据进行建模,寻找数据(特征)给定的隐藏的结构,一般对应的聚类问题,而强化学习需要通过延迟奖励学习策略来得到"模型"对于正确目标的远近(通过奖励惩罚函数进行判断),这里我们可以将奖励惩罚函数视为正确目标的一个稀疏、延迟形式。另外强化学习处理的多是序列数据,样本之间通常具有强相关性但其很难像监督学习的样本一样满足IID条件
状态是对环境的完整描述,不会隐藏环境信息。观测是对状态的部分描述,可能会遗漏一些信息。在深度强化学习中,我们几乎总是用同一个实值向量、矩阵或者更高阶的张量来表示状态和观测
- 高冷的面试官: 根据你上面介绍的内容,你认为强化学习的使用场景有哪些呢?
**1-6** 一个强化学习智能体由什么组成?
答: 七个字的话就是多序列决策问题。或者说是对应的模型未知,需要通过学习逐渐逼近真实模型的问题并且当前的动作会影响环境的状态,即服从马尔可夫性的问题。同时应满足所有状态是可重复到达的(满足可学习型的)
1策略函数智能体会用策略函数来选取它下一步的动作策略包括随机性策略和确定性策略
2价值函数我们用价值函数来对当前状态进行评估即进入现在的状态可以对后面的奖励带来多大的影响。价值函数的值越大说明进入该状态越有利。
3模型其表示智能体对当前环境状态的理解它决定系统是如何运行的。
- 高冷的面试官: 强化学习中所谓的损失函数与DL中的损失函数有什么区别呀?
**1-7** 根据强化学习智能体的不同,我们可以将其分为哪几类?
答: DL中的loss function目的是使预测值和真实值之间的差距最小,而RL中的loss function是是奖励和的期望最大
1基于价值的智能体。显式学习的是价值函数隐式地学习智能体的策略。因为这个策略是从学到的价值函数里面推算出来的
- 高冷的面试官: 你了解model-free和model-based吗?两者有什么区别呢?
2基于策略的智能体。其直接学习策略即直接给智能体一个状态它就会输出对应动作的概率。当然在基于策略的智能体里面并没有去学习智能体的价值函数。
3另外还有一种智能体它把以上两者结合。把基于价值和基于策略的智能体结合起来就有了演员-评论员智能体。这一类智能体通过学习策略函数和价值函数以及两者的交互得到更佳的状态。
答: 两者的区别主要在于是否需要对于真实的环境进行建模, model-free不需要对于环境进行建模,直接与真实环境进行交互即可,所以其通常需要较大的数据或者采样工作来优化策略,这也帮助model-free对于真实环境具有更好的泛化性能; 而model-based 需要对于环境进行建模,同时再真实环境与虚拟环境中进行学习,如果建模的环境与真实环境的差异较大,那么会限制其泛化性能。现在通常使用model-free进行模型的构建工作。
**1-8** 基于策略迭代和基于价值迭代的强化学习方法有什么区别?
1基于策略迭代的强化学习方法智能体会制定一套动作策略即确定在给定状态下需要采取何种动作并根据该策略进行操作。强化学习算法直接对策略进行优化使得制定的策略能够获得最大的奖励基于价值迭代的强化学习方法智能体不需要制定显式的策略它维护一个价值表格或价值函数并通过这个价值表格或价值函数来选取价值最大的动作。
2基于价值迭代的方法只能应用在离散的环境下例如围棋或某些游戏领域对于行为集合规模庞大或是动作连续的场景如机器人控制领域其很难学习到较好的结果此时基于策略迭代的方法能够根据设定的策略来选择连续的动作)。
3基于价值迭代的强化学习算法有 Q-learning、Sarsa 等,基于策略迭代的强化学习算法有策略梯度算法等。
4此外演员-评论员算法同时使用策略和价值评估来做出决策。其中,智能体会根据策略做出动作,而价值函数会对做出的动作给出价值,这样可以在原有的策略梯度算法的基础上加速学习过程,从而取得更好的效果。
**1-9** 有模型学习和免模型学习有什么区别?
针对是否需要对真实环境建模,强化学习可以分为有模型学习和免模型学习。有模型学习是指根据环境中的经验,构建一个虚拟世界,同时在真实环境和虚拟世界中学习;免模型学习是指不对环境进行建模,直接与真实环境进行交互来学习到最优策略。总体来说,有模型学习相比免模型学习仅仅多出一个步骤,即对真实环境进行建模。免模型学习通常属于数据驱动型方法,需要大量的采样来估计状态、动作及奖励函数,从而优化动作策略。免模型学习的泛化性要优于有模型学习,原因是有模型学习需要对真实环境进行建模,并且虚拟世界与真实环境之间可能还有差异,这限制了有模型学习算法的泛化性。
**1-10** 如何通俗理解强化学习?
环境和奖励函数不是我们可以控制的,两者是在开始学习之前就已经事先确定的。我们唯一能做的事情是调整策略,使得智能体可以在环境中得到最大的奖励。另外,策略决定了智能体的行为,策略就是给一个外界的输入,然后它会输出现在应该要执行的动作。
## 面试题
**1-1** 友善的面试官: 看来你对于强化学习还是有一定了解的呀,那么可以用一句话谈一下你对于强化学习的认识吗?
强化学习包含环境、动作和奖励3部分其本质是智能体通过与环境的交互使其做出的动作对应的决策得到的总奖励最大或者说是期望最大。
**1-2** 友善的面试官: 请问,你认为强化学习、监督学习和无监督学习三者有什么区别呢?
首先强化学习和无监督学习是不需要有标签样本的,而监督学习需要许多有标签样本来进行模型的构建和训练。其次对于强化学习与无监督学习,无监督学习直接基于给定的数据进行建模,寻找数据或特征中隐藏的结构,一般对应聚类问题;强化学习需要通过延迟奖励学习策略来得到模型与目标的距离,这个距离可以通过奖励函数进行定量判断,这里我们可以将奖励函数视为正确目标的一个稀疏、延迟形式。另外,强化学习处理的多是序列数据,样本之间通常具有强相关性,但其很难像监督学习的样本一样满足独立同分布条件。
**1-3** 友善的面试官: 根据你的理解,你认为强化学习的使用场景有哪些呢?
7个字总结就是“多序列决策问题”或者说是对应的模型未知需要通过学习逐渐逼近真实模型的问题。并且当前的动作会影响环境的状态即具有马尔可夫性的问题。同时应满足所有状态是可重复到达的条件即满足可学习条件。
**1-4** 友善的面试官: 请问强化学习中所谓的损失函数与深度学习中的损失函数有什么区别呢?
深度学习中的损失函数的目的是使预测值和真实值之间的差距尽可能小,而强化学习中的损失函数的目的是使总奖励的期望尽可能大。
**1-5** 友善的面试官: 你了解有模型和免模型吗?两者具体有什么区别呢?
我认为两者的区别主要在于是否需要对真实的环境进行建模,免模型方法不需要对环境进行建模,直接与真实环境进行交互即可,所以其通常需要较多的数据或者采样工作来优化策略,这也使其对于真实环境具有更好的泛化性能;而有模型方法需要对环境进行建模,同时在真实环境与虚拟环境中进行学习,如果建模的环境与真实环境的差异较大,那么会限制其泛化性能。现在通常使用有模型方法进行模型的构建工作。