概述
本文主要总结了基于模型的RL和plainning: 环境的模型model有什么特点,如何创建 ; planning - learning 如何有机结合 (一方面有效利用环境模型,一方面有效的利用RL的过去知识)。 另外还讲述了implicit model-biased RL,Model-based RL 的优势,以及与hierarchical RL, transfer learning的关系。
文章时间: 2020
有关文章 High-Accuracy Model-Based Reinforcement Learning, a Survey (待读)
HRL:
Recent advances in hierarchical reinforcement learning
摘要
连续决策过程 (通常形成 马尔可夫决策连MDP)的优化 是人工智能中的一大挑战。 解决这个问题的两个关键方法是强化学习和规划。 本文展示了这两个领域的结合(也被称为 基于模型的强化学习)。 基于模型的强化学习主要有两步:首先,我们系统地介绍了动态模型学习的方法,包括遇到的挑战(如何解决随机性,不确定性,部分可见性,时间抽象)。接下来,我们展现了 规划 和学习结合的不同方式,包括以下几个方面: 什么时候开始规划,给规划和真实数据获取分配怎样的比例,如何规划,如何将规划融入到学习和决策过程中。 除了以上两个方面,我们还讨论了隐式基于模型的强化学习,作为一种端到端能够替代模型学习和规划的方法。 我们论述了基于模型的强化学习的优点(数据的效率比较高,有目标i的探索,能提升稳定性)。 另外,本综述也讨论了几个RL领域之间的联系,像分层强化学习和迁移学习。
关键词
基于模型的强化学习;规划搜索;马尔可夫决策过程
引言
model-based RL典型的代表: alphaZero: Mastering the Game of Go without Human Knowledge, David Sliver在围棋中使用了MCTS(蒙特拉洛树搜索),实现了在每一步都可以向未来规划很多步,从而计算出每一步的成功率。Sergey Levine的guied polciy search, 还有 Deisenroth的PILCO。
本文主要分为四部分: 动态模型的学习;规划和学习的结合;隐式基于模型的强化学习 和 基于模型的强化学习的优势。基于模型的强化学习和RL中其他的分支也有联系。如 HRL中在高层次的动作空间可以定义 temporal abstractionc的model。 在迁移学习和目标探索中,基于模型的强化学习也有重要的方法。
基于模型的强化学习的分类
有两种方式能够区分规划(planning)和强化学习。一种基于他们对于马尔可夫过程中动态的可使用行;一种基于他们对于解法的描述。
对于第一种,规划方法能够可逆的使用环境动态,对一个状态当下就能做出多种动作,得到不同动作之后的状态(就像人们在脑中规划一样)。因此这种对环境动态可逆般的操作,使得智能体能够在MDP的任何想要的状态下都能够进行规划。 这种对于MDP过程能够可逆使用的模型叫做 环境模型。相比之下,无模型的强化学习方法不具有可逆使用MDP动态的能力。 也i就是说,多智能体在执行完特定的动作后,就会直接进入下一个状态,无法回头。(也就是相当于我们人在真实世界中执行完动作)这种规则限制了我们访问 状态-动作 对的顺序。
基于以上两种方法对于MDP动态的可访问性,两种方法关注于对于解法的不同表示方式。规划方法通常使用 局部的/表格的解法,只关注与一个状态或者所有状态的一个子集。 强化学习关注于全局的,学习到的解法。 因此,我们认为,单纯的规划并不属于强化学习。
此文认为 model-based RL 有两个要求: 有模型;有学习的过程(最终可以得到value function or polciy function,不是只有planning)。 因此,规划和学习的结合实际上是有三种:
- 学习模型,学习value function / policy function
- 已知模型,学习value function / policy function
- 学习model,然后进行规划
学习动态模型
动态模型是一种监督学习,我们在这里先关注于单步的模型,然后在讨论三个主要的问题:我们学习什么类型的模型,我们使用什么方法进行评估,我们的模型使用的区间。
我们主要关注环境动态模型的学习。对于奖励函数,我们是可以直接获取得到的。
模型的类型
- 前向模型: ( s t , a t ) → s t + 1 (s_t,a_t) \rightarrow s_{t+1} (st,at)→st+1。 这是最常见的模型类型,常用于 向前规划当中。 (以下部分关注的重点)
- 反向模型: s t + 1 → ( s t , a t ) s_{t+1} \rightarrow (s_t,a_t) st+1→(st,at),用于预测某一状态的可能的之前状态和动作。 (prioritized sweeping)
- 逆向模型: ( s t , s t + 1 ) → a t (s_t,s_{t+1})\rightarrow a_t (st,st+1)→at, 用于RRT planning当中。
评估的方法
我们将评估方法分为了 参数化模型和无参数模型 | 准确模型和近似模型。
参数化模型
参数化模型的参数数量 与 数据的数量无关(实际上数据数量越大,我们采用参数化模型时,就会增加参数的数量)。
准确的模型: 对于离散的MDP,或者连续MDP的离散版本,使用表格的形式能够记录每一个可能的环境动态。 例如,在随机化的MDP当中(学习概率分布),一个表格类型的最大似然模型:
T
(
s
′
∣
s
,
a
)
=
n
(
s
,
a
,
s
′
)
∑
s
′
n
(
s
,
a
,
s
′
)
T(s'|s,a)=\frac{n(s,a,s')}{\sum_{s'}n(s,a,s')}
T(s′∣s,a)=∑s′n(s,a,s′)n(s,a,s′)。 但是这样的精确模型没办法拓展到更高维的问题当中。
近似的模型:线性拟合,动态贝叶斯网络(dunamic bayesian network),最小临近,随机森林,支持向量机,神经网络。 神经网络尤其适用于高维问题,能够灵活的模拟非线性模型。
无参数模型
无参数模型能够直接存储数据,然后使用数据来表示模型。
准确的模型: replay buffer(根据以往已经得到的状态信息,作为模型进行使用)
近似的模型: 我们根据已有的状态将 泛化得到接近的状态。 比如,高斯过程,而且高斯过程可以提供评估的不确定性。
无参数模型的计算量取决于已有数据的大小。对于高维问题难以拓展,因此高维问题需要更多的数据,无参数模型的计算量就会很大。
模型使用的区间
1.全局模型:对于整个状态空间都适用。
2. 局部模型: 只能用于局部数据范围内,但是相比全局模型,可以减少不稳定性。 但是我们必须持续学习新的模型。过去的数据因为无法存储而无法再重复使用。
实际上最常见的模型学习方法还是关注于 前向学习+参数化模拟+全局覆盖。
模型的随机性 (aleatoric uncertainty)
当前状态和动作生成的下一个状态不是固定的一个状态,而是一系列状态的概率分布。我们可以使用描述性模型(descriptive model) 或者 生成模型(generative model) 对其进行近似。
描述性模型实现对于下一个状态的全分布描述,包含表格模型,高斯模型,高斯混合模型。 但是这些模型只适合 较小的状态空间,不适用于较大的状态空间。
Learning stable nonlinear dynamical systems with gaussian mixture models
对于高维问题,目前更加关注于生成模型(尤其是基于神经网络)。 一个方法是使用 variational inference. 还有其他的方法: GANs(generative adversarial networks,生成对抗网络),autoregressive full-likelihood models(自回归全似然模型),flow-based density models。 目前还没有定论,能够说明深度生成模型最有效。
模型的不确定性 (epistemic uncertainty)
基于模型的学习 一个重要的挑战是 如何解决由于有限数据造成的不确定性 (epistemic uncertainty). 我们的使用模型时想要知道当前采样点的数据是否可靠。
目前有两种主流的方式: frequentist,bayesian.
其中贝叶斯RL的相关综述: Bayesian Reinforcement Learning: A Survey
其中 高斯过程 (用于 PILCO中)非常成功。 但是高斯过程没办法推广到高维度中。 因此最近有人研究 基于贝叶斯的神经网络。
另外 sergey levine 有基于模型的强化学习研究,使用了 ensemble of deep neural networks + trajectory optimization 来解决模型不确定性的问题。
部分可见性
环境的随机性是指 对于全局的真正状态下仍然会有的 下一个状态不确定的问题。 而 部分可见性是由于目前观察下的信息缺失,可以通过更加全面的观察环境进行改善。
在部分可见的环境下可以结合之前见到的观察,可以改善当前的观察,做出更好的决策。
- windowing: 将过去最近的N帧数据作为输入。 但是模型的尺寸会变得很大;而且,模型的泛化属性会变差,因为我们很少会遇到重复的或者很相似的历史。
- Belief states
- 复现性: 使用RNN来学习环境的动态,可以减少模型的size,而且可以用于高维度的状态空间。 但是有时会遇到梯度消息,梯度爆炸的情况。可以使用LSTM等进行改善。
- 额外的记忆: NTM
不固定性
MDP中的不固定性通常发生在 真实的环境转换/reward function发生改变的情况下。在这种情况下,如果智能体还已知相信之前的模型,没有察觉到之前的改变,那么性能就会快速下降。目前解决的方法主要是partial model: partial model 是一系列静态模型的集合,智能体完成对于不同状态的察觉,在模型与模型之间进行切换。 Da Silva 通过对于下一状态与奖励的预测误差来进行转换。 Nagabandi则基于迪利克雷过程完成切换。 Jaulmes提出了一种更简单的方式: 通过对过去数据进行衰减,完成模型的更新。 但是过高的学习率会造成模型训练时的不稳定。
迁移学习和原学习可以看作是 环境不固定性的一种特殊状态,因为这是优化一系列的任务。 Fu(2016)关注于 学习一个通用的神经网络先验,能够快速适用于新的任务。
多步预测
在基于模型的强化学习中,通常涉及向前规划多步。我们以上讨论的都是单步预测。我们在进行多步预测时,可以重复使用单步预测模型。但是,因为我们学习到的模型都不是较长步的预测,误差会进行积累,最终会导致多步预测偏离我们实际的模型。一些作者已经关注到了这个问题。 (Talvitie,2014; Venkatraman et al., 2015; Talvitie, 2017; Machado et al., 2018)
有两个方法来获得更好的多步预测结果: 1. 不同的损失函数 2. 对1步,2步,…多步进行分别预测。 在第一种方法中,我们将多步预测的损失加入整体的训练目标当中。(仍然只进行单步预测,但是加入对多步预测错误的损失项) 第二个方法中,则可以直接明确的学习每N步的预测。(困惑:前N步能够重现的可能性很小,这样子训练的数据需不需要很多,会不会很难学习)
另外一些文章中并不具体说明预测过程中需要未来多少步,而是随着模型的确定性进行自动调整。 多部预测的一个重要话题就是 性能的测试。 如果我们的最终目标是多步预测,那么单步预测的误差可能就不是对于模型性能的较好度量方式。
状态抽象
表示学习(representation learning)是强化学习和控制领域一个重要的话题。好的表示方式对于状态预测是很重要的,对于策略和价值函数的评估也很重要。 表示学习(降维)是机械学习领域比较重要的方面,很多在模型评估上的状态抽象都建立在表示学习的成果上。
在强化学习领域的早期表示学习应用主要包括 状态融合 和 主成分分析。 Mahadevan 2009 列出了MDP中最常见的各种学习基本方程的方法。 但是目前表示学习最成功的依然是 神经网络。
神经网络包含了三部分:1. 编码函数
z
t
=
f
ϕ
e
n
c
(
s
t
)
z_t=f_{\phi}^{enc}(s_t)
zt=fϕenc(st),将观测量映射到一个隐性的表示;2. 一个隐性的动态函数
z
t
+
1
=
f
ϕ
t
r
a
n
s
(
z
t
,
a
t
)
z_{t+1}=f^{trans}_{\phi}(z_t,a_t)
zt+1=fϕtrans(zt,at),基于选择的动作,将隐性的状态映射到下一个隐性的状态;3. 解码函数:
s
t
+
1
=
f
ϕ
d
e
c
(
z
t
+
1
)
s_{t+1}=f^{dec}_{\phi}(z_{t+1})
st+1=fϕdec(zt+1), 将隐性的状态映射到下一个状态上。
s
t
→
z
t
+
a
t
→
z
t
+
1
→
s
t
+
1
s_t\rightarrow z_t +a_t\rightarrow z_{t+1} \rightarrow s_{t+1}
st→zt+at→zt+1→st+1
在状态表示学习中,有三个重要的主题:1.我们如何确保我们可以在一个隐性状态下规划,2.我们在构建我们模型时应该多大程度的强调物体和他们之间的物理交互,3.我们在建立损失函数的时候,我们如何更多的检索有用的表示。
在隐性层中规划(待补充)
物体
object-oriented MDPs, relational MDPs
我们在学习 以物体信息为导向的模型时,我们如何分辨物体,以及我们如何对物体之间的接触进行建模。
如何辨别物体: (Fragkiadaki et al., 2015; Kansky et al., 2017)
如何建模接触: 图神经网络; 将物体的外形,位置,速度 和 edge update functions
There is a varietyof recent successful examples in this direction, like Schema Networks (Kansky et al., 2017),Interaction Networks (Battaglia et al., 2016), Neural Physics Engine (Chang et al., 2016),Structured World Models (Kipf et al., 2020) and COBRA (Watters et al., 2019)
更好的损失函数
时间抽象
MDP通常涉及在低水平下,高频率地执行微小动作,这会在长距离的信用分配任务中进行深度搜索树,产生很多不同的路径(会有相似的路径)。其中有些路径产生的结果信息会更加有用(更接近我们想得到的最终路径)。分层强化学习就是确立一个高水平的动作空间,每个动作实际上会包含很多微小步。 时间抽象能够减少高水平下的采样和计算复杂度。 但是一般来说,低水平的动作轨迹需要在高水平规划之前进行设计好/学习好。当然,最希望的就是能够同时学习出结果。
目前有多种框架来定义抽象动作。一种比较流行的就是options框架,。options是一套离散的高水平的动作。 每一个option都有自己的初始化状态(option可以开始执行) 一个小策略 π u \pi^{u} πu,一个和状态有关的结束概率 β u ( s ) \beta^{u}(s) βu(s)(用于在状态下结束)
一个流行的方法是基于目标的策略函数/价值函数(GCVF)。 UVFA(universal value function approximators),这个想法来源于联邦RL。 将 goal space作为抽象的状态空间 Q g ( s , a , g ) Q_g(s,a,g) Qg(s,a,g):当我们想达到g时,我们评价在状态s下我们采取动作a的价值。 然后我们根据很多的中间小目标来规划,形成分层强化学习。
在options中,我们对于每一个option都有单独的小策略;而GCVFs则尝试通过目标/子策略进行泛化。 另外,options 基于状态产生初始化信息和终止信息。 而GCVFs可以在任何位置初始化和终止。 GCVFs有些类似 在 单步模型 和 纯强化学习中进行插值。
Pong et al. (2018)
发现相关的子路径
分层强化学习中最重要的一个问题:我们图和确定相关的子路径。 在options中就是 相关的终止状态 ; 在 GCVF中就是目标状态。
- 图结构: 这种方法定义了“瓶颈”状态。 “瓶颈”连接了两个 MDP中的子图。 因此,瓶颈点成为了 到达MDP中另一片区域的关键状态。 有几种方式定义“瓶颈点”: 不同成功子路径的重合状态。