Offline RL
是这样一种问题设定:Learner 可以获取由一批由 behavioral policies 和环境交互得到的 episodes 或 transitions 构成的 fixed dataset,要求 Learner 直接利用它训练得到一个好的策略,禁止 Learner 和环境进行任何交互。
形式化地讲,对于 MDP ( S , A , g , r , ρ , γ ) \big(\mathcal{S,A,g,r,\rho,\gamma}\big) (S,A,g,r,ρ,γ)(其中 ρ \rho ρ 是初始状态分布, g ( s , a ) , r ( s , a ) g(s,a),r(s,a) g(s,a),r(s,a) 是状态转移矩阵和奖励函数),向 Learner 提供由 m m m 个 transition 组成的 batch B = { ( s i , a i , r i , s i ′ ) , i = 1 , 2 , . . . , m } \mathcal{B}=\{(s_i,a_i,r_i,s_i'),i=1,2,...,m\} B={(si,ai,ri,si′),i=1,2,...,m},Learner 的目标是在不和环境进行任何交互的情况下,利用这个 batch 训练一个高性能策略,使得累计折扣收益最大化
可见,这相当于把 “探索” 和 “利用” 完全分开了。在更加 general 的情况下,我们对于给出示范数据的策略不做任何要求,示意图如下
关于问题范式的详细说明,请参考:图解 RL/IL 问题范式
Imitation Learning
非常相似,区别主要有三点
Off-Policy RL 方法中,用于和环境交互生成轨迹的策略(行动策略) π b \pi_b πb 和最终得到的策略(目标策略) π t \pi_t πt 是不同的,这种设定破除了对优化数据来源的限制,有三个好处
于是 Off-Policy RL 方法中出现了 replay buffer 经验重放的概念,示意图如下
可见,利用 replay buffer 更新策略这个过程和 Offline RL 做的事情几乎一样,只是这里我们还可以 Online 地扩展数据集
另一方面,如果把 Offline/Batch RL 改成 On-policy 设定,增加一个探索扩增交互数据集的部分,则得到另一种称为 Growing batch RL
的问题设定,示意图如下
可以看到这个设定和带 replay buffer 的 Online Off-policy RL 非常相像了,区别仅在于更新策略时使用的 transition 样本量,另外 Growing batch RL 通常没有目标策略。这种 Growing batch RL 也可以看作数据分阶段扩增的 batch RL,也就是说它可以实现为以下两个过程的交替迭代
先放一个有意思的
虽然这有点抖机灵,不过俞扬老师还做了补充说明
强化学习这个古老的研究领域 2016 前在国内一直比较冷的根源就是没法用。研究领域大家也都清楚强化学习算法样本利用率低,然后做出了很多改进,但是要改进到什么程度才能有用呢,其实根据我们的经验有一个标准:
零试错:一次试错不能有,上线即能发挥效果,还要明显优于基线
offline RL是个正确的方向,但是目前的主流研究也有很多明显的弯路,可能发论文与做落地本身就是不同的事,大家的关心点不可能完全一致吧
一句话说,Offline RL 是一个有利于 RL 落地应用的技术。Online-RL 方法要求和环境在线交互训练,在落地时就会遇到两个困难
那么模仿学习是不是比较好落地?也没有好多少
Offline-RL 的优势在于
注意到 Offline RL 和 Off-Policy RL 更新策略时的相似性,一个 Naive 的想法就是直接在 Offline 数据集上使用传统的 Off-policy RL 方法(如 DQN 或 DDPG)。原则上讲,当数据集足够大时,这种方法也是 work 的,这有点像离散环境中的 MC Control 方法,比如 MC policy iteration,但事实上,要想取得良好效果,特别是在连续环境上,其需要的数据集几乎是无穷大,当数据集大小有限时,这会导致 Extrapolation error
问题,即对数据集未覆盖的 S × A \mathcal{S\times A} S×A 空间的价值估计不准,因而无法对 agent 在数据集未覆盖的 S × A \mathcal{S\times A} S×A 空间上的策略性能有任何保证
BCQ 这篇论文 Extrapolation error 问题的出现其归为以下三个问题
Absent Data
:对某个 (s,a) 的价值估计误差可以看作关于数据集中相似二元组数量的函数。如果数据集中没有在 ( s ′ , π ( s ′ ) ) (s',\pi(s')) (s′,π(s′)) 附近的样本,那么其价值估计 Q θ ( s ′ , π ( s ′ ) ) Q_\theta(s',\pi(s')) Qθ(s′,π(s′)) 是任意糟糕的Model Bias
:在使用 Bellman equation 估计价值时,其本质是基于 MC 的,为了得到准确的 Q 价值函数,RL 方法其实隐含着两个假设 “可以观测到无限多的episode”;“所有 ( s , a ) (s,a) (s,a) 二元组都有非零概率被选中”,这保证了对于任意二元组,我们都能获取无限多的样本计算其价值,从而保证 MC 的收敛性。而在 offline 设定下,我们只能在数据集上取期望,这就引入了偏差Training Mismatch
:当优化价值网络时,我们通常会从数据集中均匀采样 transition 来优化关于 TD error 的 L2 损失(比如 DQN 就是这样做的),一个 mini batch 的损失如下式在 IL 领域内也存在着非常相似的问题,缓解它最简单的方式就是增加数据集中的样本数量,对上述三点都有效
注意到 Offline-RL 问题范式和 Imitation Learning、Online Off-Policy RL 问题范式的相似性,从这两个角度出发,可以得到现有 Offline-RL 的两类主流方法:RL-based
方法和 IL-based
方法
这类方法通常还是基于 Q Q Q 价值估计的方法,因此不可避免地要处理上述 extrapolation error 问题。仔细分析一下,会发现 extrapolation error 三个成因中的核心是第3点 Mismatch
需要注意的一点是,虽然 Off-policy RL 中引入 replay buffer 打破了样本间的相关性,但这并不会使 buffer 中的 transition 分布和当前策略诱导的分布偏差太多。事实上,由于 replay buffer 实时加入最新交互样本,逐渐遗忘最近最少访问样本的特点,replay buffer 的数据和当前策略的相关性总是很强,因此不会出现 Mismatch,这也是 Off-policy RL 能 work 的一个重要原因
这类方法通常会对动作空间施加一些限制,使得 agent 运动范围尽量接近数据集覆盖到的 S × A \mathcal{S\times A} S×A 空间(Offline 设定下这个覆盖范围可以很大,见 2.3 节分析),以保证价值函数估计的准确性,代表方法有 BCQ、BEAR、CQL 等 model-free 方法,也有 MOPO 等 model-based 方法
注意这里 Behavior policy 不要仅仅理解成较差的专家,比如我们甚至可以尝试用一些无指向性的混合交互样本训练一个特定任务 agent(各种特殊的数据集收集情况见 3.2.2 节)
这种灵活性也带来一个问题:不是说只要数据多就一定没有 mismatch 和 compounding Error,也要考虑到数据的收集方式以及任务状态动作空间的复杂度
首先解释一下这两个常见的词:Benchmark 和 Baseline
Benchmark
:中文叫基准测试,是一个标准化的过程,包含三个步骤
设置 (setup)
:定义了基准实验的设计,给出了数据集、候选算法、性能度量和合适的重采样策略。论文里在实验结果之前交代的实验设置就是一种 setup执行 (execution)
:就是执行 setup 中设计的实验分析 (analysis)
:采用各种分析方法分析 execution 步骤得到的结果,用来佐证提出的算法或假设
Baseline
:可以看作 benckmark 这个过程中的一次实例。比如要对比我们自己算法和其他几个算法的性能,首先要设计一个统一的 Benchmark,把不同的算法带入这个 Benchmark 测试,得到的对比算法的性能就称为 Baseline注意到 Offline-RL 其实和监督学习类似,都是利用一个 fixed 数据集进行学习。大部分 Offline-RL 论文中,生成 Offline 数据集的方法都不太相同。最常见的做法是从零开始训练一个 Online RL agent 至收敛,然后用整个训练过程上的所有交互数据组成数据集, BAIL 这篇文章揭示了这种方案的一个问题:如果使用不同的随机种子,即使是完全相同的 Online RL agent,用其得到的 Offline 数据集做 Offline RL,有可能得到截然不同的结果
One important observation we make, which was not brought to light in previous batch DRL papers, is that batches generated with different seeds but with otherwise exactly the same algorithm can give drastically different results for batch DRL.
举例来说,你看到 A 论文中,A 方法在 B Online RL agent 于 C 环境下完整训练数据集上得分为 1000,你自己按照他的设定完整复现一遍,可能发现只有 200 分,而造成这种差异的原因仅仅是因为使用了不同的随机种子。
如果不同的科研团队使用不同的数据集,或是对于同一个算法的实现细节不同,都不利于算法间公平比较。针对这个问题 2020 年 UC Berkeley 和 Google Brain 的几位研究员发表了 D4RL: Datasets for Deep Data-Driven Reinforcement Learning ,提出针对 Offline-RL 算法评估的 Benchmark,其贡献包括
此文章 2020 挂上 arxiv,至今已有 149 次引用,其影响还是很广泛的
Benchmark 应具有的性质:
虽然用真实世界数据集作为 Offline-dataset 很有吸引力,但是为了准确地评估策略,还是需要一个可以交互的环境,真实世界任务会大幅提升评估成本。针对这个问题,D4RL 在先前针对特定任务开发的高精度模拟器环境中设计任务,比如机器人控制和自动驾驶等,这些模拟器经过实战测试(battle-tested),可以准确地评估策略
Benchmark 中的数据集和任务,为了尽量贴近落地应用,应具有以下性质性质:
狭窄且有偏的数据分布(Narrow and biased data distributions):这是指数据集中 ( s , a ) (s,a) (s,a) 覆盖范围非常小,因此很容易发生 Mismatch 问题。当数据来自确定性策略时,由于缺乏探索,收集到的数据常常有这种特征。这种情况在现实世界中非常常见,人类专家和硬编码控制器都很容易给出这类数据
作者博客中举了一个很有意思的例子:在医疗领域,我们经常可以看到重病患者使用药物治疗(只有很少的人活下来了),而轻度患者不使用药物治疗(大多数都活下来了),这时简单的算法可能会误认为是药物治疗导致了死亡(因为缺乏重症不用药死亡 & 轻症用药存活的概率),而实际上我们应该学到因为治疗所以才提高了生存率
无指向性数据和多任务数据(Undirected and multitask data):这是指我们在一个多任务场景下收集了数据,然后希望训练一个 agent 完成某特定任务,这时数据缺乏任务针对性。当数据是被动记录(passively logged)的时候,容易出现这种问题。比如我们希望获得一个用于训练个人助理 chat bot 的大型数据集,最简单的方法就是简单地记录真实人类之间的对话,或者从互联网上刮取真实的对话。在这种情况下,记录下来的谈话可能与你想要完成的特定任务没有任何关系,比如预订航班。但是,许多会话数据仍可能是有用的;又或者下面这个例子:想让agent从A到C,但只有从A到B和从B到C的样本
这种情况下,虽然数据指向性不佳,但是轨迹片段仍然可以提供有用的信息供学习。比如上图任务可以通过组合两段样本完成,而不需要依赖数据集外的泛化能力。In general 地说,某个数据样本可能不止适用于收集到它的那个任务
稀疏奖励(Sparse rewards):Online RL 面对 credit assignment 和 exploration-exploitation dilemma 两个困难
credit assignment(贡献度分配):简单说就是,我们做了一系列动作后得到奖励,想要搞清楚哪些动作(或者说完整轨迹中哪个部分)是获取奖励的主要原因。
在我的理解中,credit 某种程度上可以看作 ( s , a ) (s,a) (s,a) pair 的 Q Q Q 价值,强化学习中从奖励到价值的传递过程本来就很慢(这也是 RL 样本效率低下的原因之一),稀疏奖励会使得此问题更加恶化
在稀疏奖励的 Offline-RL 设定中,我们有机会在和 exploration 解耦的情况下,单独分析算法做 credit assignment 的能力
次优数据(suboptimal data):在现实世界的任务中,获取最优的轨迹往往是比较困难的,例如在机器人领域,提供专家演示既繁琐又耗时,而传统的 IL 在次优数据上表现不佳。Offline-RL 在这种情况下的一个关键优点是,离线数据有清晰的奖励信号说明如何改进策略,因此有望取得更好的性能
不可表示的、非马尔可夫性的行为策略,以及部分可观测任务(Non-representable behavior policies, non-Markovian behavior policies, and partial observability):behavior policies 超出策略模型的表示能力的任何情况,都会引入额外的模型偏差,包括 Q Q Q 价值估计不准、对 ( s , a ) (s,a) (s,a) 出现概率估计不准等,导致 Offline RL 算法性能下降。一个常见的情况是,通常(特别是 RL-based 方法)我们会假设数据是用有马尔可夫性的策略收集的,但是真实世界的 behavior policies 可能不遵守马尔可夫性(比如一些控制器可以利用状态或内存执行非马尔可夫性策略),这时这种策略就超出了我们策略模型的表示能力。另外,人类示范者可能会使用 RL agent 无法观察到的提示,从而导致部分可观察性问题,这也会引入偏差,
现实领域(Realistic domains):从落地的角度看,使用现实问题的数据是最理想的情况,但是这会导致策略评估的困难,违背了 D4RL widely-accessible 和 reproducible 的初衷。为了取得平衡,作者选择了先前已经研究过并被广泛接受的模拟环境(如MuJoCo、Flow、CARLA)中的任务,并利用人类演示或人类行为的数学模型,提供了从现实过程生成的数据集
下面简单列举 D4RL 提供的模拟环境及任务 (任务详情参考原始论文)
以上所有任务都包括多种数据收集设定下的多种离线的轨迹样本数据集(通常为 1 0 6 10^6 106 个 transition 大小),并且对每个环境提供了模拟器用以评估策略性能,各模拟环境特性如下
- | narrow | Non-representable | Non-markovian | undirected | multitask | sparse rewards | Suboptimal | realistic | Partial observability |
---|---|---|---|---|---|---|---|---|---|
Maze2D | √ | √ | √ | ||||||
AntMaze | √ | √ | √ | √ | |||||
Gym-MuJoCo | √ | √ | |||||||
Adroit | √ | √ | √ | √ | |||||
FrankaKitchen | √ | √ | √ | ||||||
Flow | √ | √ | |||||||
Offline CARLA | √ | √ | √ | √ | √ |
D4RL 实现并对比评估了以下算法
评估标准