【Easy RL】Easy RL蘑菇书全书学习笔记
- 第一章 强化学习基础
- 1.1 强化学习概述
- 监督学习
- 强化学习与监督学习的不同之处
- 二者的区别总结
- 强化学习的特征
- 强化学习的优越性
- 预演(rollout)和 轨迹(trajectory)的概念
- 端到端的概念
- 深度强化学习(deep reinforcemet learning)
- sim2real
- 1.2序列决策
- 基本概念
- 状态和观测的关系
- 环境信息完全可观测-->马尔科夫决策过程
- 环境信息部分可观测-->部分可观测马尔可夫决策过程
- 本文是本人学习阅读Easy RL一书中记录的学习笔记,部分内容可能有遗漏
- 如需阅读原文请点击:EasyRL官方文档链接
第一章 强化学习基础
1.1 强化学习概述
- 强化学习(reinforcement learning,RL)讨论的问题是智能体(agent)怎么在复杂、不确定的环境(environment)中最大化它能获得的奖励
监督学习
- 监督学习(supervised learning)假设有大量被标注的数据,比如汽车、飞机、椅子这些被标注的图片,这些图片都要满足独立同分布,即它们之间是没有关联关系的。
- 假设我们训练一个分类器,比如神经网络。为了分辨输入的图片中是汽车还是飞机,在训练过程中,需要把正确的标签信息label传递给神经网络。 当神经网络做出错误的预测时,比如输入汽车的图片,它预测出来是飞机,我们就会直接告诉它,该预测是错误的,正确的标签应该是汽车。最后我们根据类似错误写出一个损失函数(loss function),通过反向传播(back propagation)来训练神经网络
监督学习的两个假设 - 输入的数据(标注的数据)都应是没有关联的。因为如果输入的数据有关联,学习器(learner)是不好学习的。
- 需要告诉学习器正确的标签是什么,这样它可以通过正确的标签来修正自己的预测。
- 通常假设样本空间中全体样本服从一个未知分布,我们获得的每个样本都是独立地从这个分布上采样获得的,即独立同分布(independent and identically distributed,简称 i.i.d.)。
强化学习与监督学习的不同之处
- 智能体得到的观测(observation)不是独立同分布的,上一帧与下一帧间其实有非常强的连续性。我们得到的数据是相关的时间序列数据,不满足独立同分布
- 游戏没有告诉我们哪个动作是正确动作,我们并不会得到即时的反馈。因此,强化学习之所以困难,是因为智能体不能得到即时的反馈
- 没有标签来说明现在这个动作是正确还是错误的,必须等到游戏结束才可能知道,这个游戏可能 10s 后才结束。现在这个动作到底对最后游戏是否能赢有无帮助,我们其实是不清楚的。这里我们就面临延迟奖励(delayed reward)的问题,延迟奖励使得训练网络非常困难
二者的区别总结
- (1)强化学习输入的样本是序列数据,不满足独立同分布,而不像监督学习里面样本都是独立的
- (2)学习器并没有告诉我们每一步正确的动作应该是什么,学习器需要自己去发现哪些动作可以带来最多的奖励,只能通过不停地尝试来发现最有利的动作
- (3)智能体获得自己能力的过程,其实是不断地试错探索(trial-and-error exploration)的过程。探索 (exploration)和利用(exploitation)是强化学习里面非常核心的问题。其中,探索指尝试一些新的动作, 这些新的动作有可能会使我们得到更多的奖励,也有可能使我们“一无所有”;利用指采取已知的可以获得最多奖励的动作,重复执行这个动作,因为我们知道这样做可以获得一定的奖励。因此,我们需要在探索和利用之间进行权衡,这也是在监督学习里面没有的情况。
- (4)在强化学习过程中,没有非常强的监督者(supervisor),只有奖励信号(reward signal),并且奖励信号是延迟的,即环境会在很久以后告诉我们之前我们采取的动作到底是不是有效的。因为我们没有得 到即时反馈,所以智能体使用强化学习来学习就非常困难。当我们采取一个动作后,如果我们使用监督学习,我们就可以立刻获得一个指导,比如,我们现在采取了一个错误的动作,正确的动作应该是什么。而在强化学习里面,环境可能会告诉我们这个动作是错误的,但是它并没有告诉我们正确的动作是什么。而且更困难的是,它可能是在一两分钟过后告诉我们这个动作是错误的。所以这也是强化学习和监督学习不同的地方。
强化学习的特征
- (1)强化学习会试错探索,强化学习通过探索环境来获取对环境的理解
- (2)强化学习智能体会从环境里面获得延迟的奖励
- (3)在强化学习的训练过程中,时间非常重要。因为我们得到的是有时间关联的数据(sequential data), 而不是独立同分布的数据。在机器学习中,如果观测数据有非常强的关联,会使得训练非常不稳定。这也是为什么在监督学习中,我们希望数据尽量满足独立同分布,这样就可以消除数据之间的相关性
- (4)智能体的动作会影响它随后得到的数据,这一点是非常重要的。在训练智能体的过程中,很多时 候我们也是通过正在学习的智能体与环境交互来得到数据的。所以如果在训练过程中,智能体不能保持稳定,就会使我们采集到的数据非常糟糕。我们通过数据来训练智能体,如果数据有问题,整个训练过程就会失败。所以在强化学习里面一个非常重要的问题就是,怎么让智能体的动作一直稳定地提升。
强化学习的优越性
- 为什么我们关注强化学习,其中非常重要的一个原因就是强化学习得到的模型可以有超人类的表现
- 监督学习获取的监督数据,其实是人来标注的,比如 ImageNet 的图片的标签都是人类标注的。因此我们可以确定监督学习算法的上限(upper bound)就是人类的表现,标注结果决定了它的表现永远不可能超越人类
- 但是对于强化学习,它在环境里面自己探索,有非常大的潜力,它可以获得超越人类的能力的表现,比如 DeepMind 的 AlphaGo 这样一个强化学习的算法可以把人类顶尖的棋手打败
预演(rollout)和 轨迹(trajectory)的概念
- 图 1.8 所示为预演(rollout)的一个过程。预演是指我们从当前帧对动作进行采样,生成很多局游戏。我们将当前的智能体与环境交互,会得到一系列观测。每一个观测可看成一个轨迹(trajectory)。 轨迹就是当前帧以及它采取的策略,即状态和动作的序列:
τ
=
(
s
0
,
a
0
,
s
1
,
a
1
,
.
.
.
)
\tau=(s_0,a_0,s_1,a_1,...)
τ=(s0,a0,s1,a1,...)
- 我们可以通过观测序列以及最终奖励(eventual reward)来训练智能体,使它尽可能地采取可以获得最终奖励的动作。一场游戏称为一个回合(episode)或者试验(trial)
端到端的概念
- 把特征提取以及分类两者合到一块儿去了,就是训练一个神经网络。这个神经网络既可以做特征提取,也可以做分类,它可以实现端到端训练
深度强化学习(deep reinforcemet learning)
- 深度强化学习 = 深度学习 + 强化学习
- 深度强化学习:自从我们有了深度学习,有了神经网络,就可以把智能体玩游戏的过程改进成一个端到端训练(end-to-end training)的过程,如图 1.10b 所示。不需要设计特征,直接输入状态就可以输出动作。我们可以用一个神经网络来拟合价值函数或策略网络,省去特征工程(feature engineering)的过程
sim2real
- Sim2Real(Simulation to Reality),即从仿真到现实,是强化学习尤其是机器人学习领域中的一个重要概念。它涉及到将代理(agent)在仿真环境中学到的行为或策略迁移到现实世界中。这样做的好处是,仿真环境可以快速、安全且低成本地生成大量训练数据,但它也面临着一些挑战。
- OpenAI 先在一个虚拟环境里面使用强化学习对智能体进行训练,再把它应 用到真实的机械臂上。这在强化学习里面是一种比较常用的做法,即我们先在虚拟环境里面得到一个很好 的智能体,然后把它应用到真实的机器人中
- Sim2Real Gap:仿真环境无法完美复制现实世界的复杂性,如物理动力学、传感器噪声等,导致在仿真中表现良好的策略在现实中可能效果不佳
- 数据分布不匹配:仿真数据与现实数据在分布上的差异可能导致模型过拟合仿真环境,从而在现实世界中泛化能力差
1.2序列决策
基本概念
-
强化学习研究的问题是智能体与环境交互的问题
-
智能体与环境:图 1.12 左边的智能体一直在与图 1.12 右边的环境进行交互。智能体把它的动作输出给环境,环境取得这个动作后会进行下一步,把下一步的观测与这个动作带来的奖励返还给智能体。这样的交互会产生很多观测,智能体的目的是从这些观测之中学到能最大化奖励的策略
-
奖励:奖励是由环境给的一种标量的反馈信号(scalar feedback signal),这种信号可显示智能体在某一步采取某个策略的表现如何。
-
强化学习的目的就是最大化智能体可以获得的奖励,智能体在环境里面存在的目 的就是最大化它的期望的累积奖励(expected cumulative reward)
-
在与环境的交互过程中,智能体会获得很多观测。针对每一个观测,智能体会采取一个动作,也会得到一个奖励。所以历史是观测、动作、奖励的序列: H t = o 1 , a 1 , r 1 , . . . . . . , o t , a t , r t H_t=o_1,a_1,r_1,......,o_t,a_t,r_t Ht=o1,a1,r1,......,ot,at,rt
-
智能体在采取当前动作的时候会依赖于它之前得到的历史,所以我们可以把整个游戏的状态看成关于这个历史的函数: S t = f ( H t ) S_t = f(H_t) St=f(Ht)
状态和观测的关系
- 状态是对世界的完整描述,不会隐藏世界的信息。观测是对状态的部分描述,可能会遗漏一些信息。在深度强化学习中,我们几乎总是用实值的向量、矩阵或者更高阶的张量来表示状态和观测。例如, 我们可以用 RGB 像素值的矩阵来表示一个视觉的观测,可以用机器人关节的角度和速度来表示一个机器 人的状态
环境信息完全可观测–>马尔科夫决策过程
环境信息部分可观测–>部分可观测马尔可夫决策过程
- 有一种情况是智能体得到的观测并不能包含环境运作的所有状态,因为在强化学习的设定里面, 环境的状态才是真正的所有状态。比如智能体在玩 black jack 游戏,它能看到的其实是牌面上的牌。或者在 玩雅达利游戏的时候,观测到的只是当前电视上面这一帧的信息,我们并没有得到游戏内部里面所有的运 作状态。也就是当智能体只能看到部分的观测,我们就称这个环境是部分可观测的(partially observed)。 在这种情况下,强化学习通常被建模成部分可观测马尔可夫决策过程(partially observable Markov decision process, POMDP)的问题。部分可观测马尔可夫决策过程是马尔可夫决策过程的一种泛化。 部分可观测马尔可夫决策过程依然具有马尔可夫性质,但是假设智能体无法感知环境的状态,只能知道部分观测值。