通过减小Bootstrapping Error Reduction来进行离线RL学习

最近尝试了一些offline数据的off-policy算法,发现value function的overestimation问题非常严重,在正常学习估计收敛在400左右的价值函数在离线数据下竟然会一直累积到几十万,高的离谱。正好近期offline RL领域就有一篇工作讲这件事,所以值得仔细读一读。

论文全称:

Stabilizing Off-Policy Q-Learning via Bootstrapping Error Reduction (Aviral Kumar, Justin Fu, George Tucker, Sergey Levine)

文章发表于nips19.

原文传送门

https://arxiv.org/abs/1906.00949

简介

文章说,常用的offpolicy的基于Q学习或者AC的RL算法,会对数据分布比较敏感。如果不允许智能体收集additional on-policy data,就会表现很差。而导致这一现象最主要的原因,作者们分析是bootstrapping error,bootstrapping from 训练数据以外的动作分布,然后通过 Bellman backup 算子累积。

本文分析了该问题,并提出了如何限制动作的选择来减轻此问题,提出算法bootstrapping error accumulation reduction (BEAR),借助support-set matching来避免此问题。

回顾

回顾Qlearning的Bellman最优算子:

通过减小Bootstrapping Error Reduction来进行离线RL学习

Q函数的更新通过:

通过减小Bootstrapping Error Reduction来进行离线RL学习

称为Q-iteration。

在连续动作空间下无法直接选取max,因此AC方法通过额外学习一个策略网络pi来最大化Q函数。

本文关注offline学习,一个固定的数据集:

通过减小Bootstrapping Error Reduction来进行离线RL学习

由未知的行为策略 通过减小Bootstrapping Error Reduction来进行离线RL学习 采样,该策略采样的状态-动作分布记为 通过减小Bootstrapping Error Reduction来进行离线RL学习

Q学习中的数据偏离

通过减小Bootstrapping Error Reduction来进行离线RL学习

在使用固定的数据集学习时,Q学习估计的Q值和实际的return差很远(这里还是log Q,取掉log之后会更大),如图1。此问题并不是过拟合,因为采用更大的样本数量并不能解决此问题。

通过分析Bellman方程,作者认为误差主要源自这里。尽管最小化mean squared Bellman error即是监督学习的回归,但这里的目标是当前策略的Q值对于下一个状态选取动作的最大的Q值的估计。然而,Q函数的估计只对从同样的数据分布的数据可靠,所以如果是对所有的动作取max,其中包括数据分布以外的动作的话,就会带来巨大的误差。这样的动作称之为out-of-distribution (OOD) actions

作者给出total error和当前bellman error的关系:

通过减小Bootstrapping Error Reduction来进行离线RL学习

也就是说,total error是每次迭代都在累积的,而且会在OOD state和actions上很大,因为在训练的时候根本就没有优化这些地方的误差

为了减小误差,可以将策略的动作限制在训练分布的support中。注意之前的BCQ的工作,只是将学到的policy的分布靠近行为策略behavior policy的分布,类似于BC。作者在后文用实验说明了这两者的不同以及BCQ学习方式的限制。

对于将策略的动作限制在训练分布的support中,意味着,学到的policy 通过减小Bootstrapping Error Reduction来进行离线RL学习 只在行为策略 通过减小Bootstrapping Error Reduction来进行离线RL学习 的density大于阈值的地方有density( 通过减小Bootstrapping Error Reduction来进行离线RL学习 ).

而不是使得这两者的density非常靠近。后文的分析同时指出了一个保持原始数据分布和在严格约束下寻找sub-optimal策略的一个trade-off。

Distribution-Constrained Backups

本文分析的重点,提出了一个受限的backup operator,并且给出了performance bounds。这个bounds给出了前文提到的限制policy support的motivation。

  • 首先给出Distribution-constrained operators的定义

通过减小Bootstrapping Error Reduction来进行离线RL学习

该算子同样可以保证收敛到不动点(提供了证明)。

在继续分析之前,作者提出两个来源的误差。第一个是suboptimality bias,即最优策略在策略集合之外;第二是训练的数据分布和用于backup的策略的distribution shift(即当前策略和数据中的分布的差距)。

  • 给出suboptimality constant的定义

通过减小Bootstrapping Error Reduction来进行离线RL学习

  • 定义concentrability coefficient

通过减小Bootstrapping Error Reduction来进行离线RL学习

这个“集中系数”其实给出了策略集合和行为策略的差距,若策略集合的support在行为策略之外,则C会变得非常大。举例来说如果 通过减小Bootstrapping Error Reduction来进行离线RL学习 和 通过减小Bootstrapping Error Reduction来进行离线RL学习 都是 通过减小Bootstrapping Error Reduction来进行离线RL学习 ,那么,上面的公式的c(1)=1,下面的C也=1。如果 通过减小Bootstrapping Error Reduction来进行离线RL学习 的support都不在 通过减小Bootstrapping Error Reduction来进行离线RL学习 中,此时 通过减小Bootstrapping Error Reduction来进行离线RL学习 小而等式左边很大,则c(k)就很大。注意当 通过减小Bootstrapping Error Reduction来进行离线RL学习 中包含的策略越多,P(s)和 通过减小Bootstrapping Error Reduction来进行离线RL学习 其实是差的越大的,只有其中只有一个策略就是 通过减小Bootstrapping Error Reduction来进行离线RL学习 时,才是最小的。

  • 给出定理1,

通过减小Bootstrapping Error Reduction来进行离线RL学习

这个bound得到了一个tradeoff:要使得学到的策略尽可能集中在数据分布中(由C项表征)以及保证策略集合尽可能地大以覆盖最优策略(由 通过减小Bootstrapping Error Reduction来进行离线RL学习 项表征)。但扩大 通过减小Bootstrapping Error Reduction来进行离线RL学习 时,其实是在增加C而减小 通过减小Bootstrapping Error Reduction来进行离线RL学习 。为了解释清楚,作者使用一个tabular例子来说明。

通过减小Bootstrapping Error Reduction来进行离线RL学习

图中的任务是要从S走到G,但是行为策略(箭头)是走到右下角(explore),行为策略的support set如图所示。经过简单的Qlearning,可以发现Q函数的估计在行为策略少见的地方差的非常大;而策略评估尽管减小了error propagation,但却引入了很大的suboptimal bias(即和最优策略的差距)。

而通过support constraint方式迭代得到的Q函数则平衡了这两者

因此作者提出借助support来构造策略集合,即

通过减小Bootstrapping Error Reduction来进行离线RL学习

便有如下定理:

通过减小Bootstrapping Error Reduction来进行离线RL学习

因此可以借助 通过减小Bootstrapping Error Reduction来进行离线RL学习 来平衡前面的tradeoff。通过减小Bootstrapping Error Reduction来进行离线RL学习 越大则 通过减小Bootstrapping Error Reduction来进行离线RL学习 包含的策略越少, 通过减小Bootstrapping Error Reduction来进行离线RL学习 越小。

因此上面的一大串分析其实intuitively告诉我们可以在估计Q的时候选择符合条件的action来更新,不符合条件的action就不要用来更新Q了

BEAR算法

根据前面的推导,基于TD3或者SAC提出一个offline学习的算法,使用distribution-constrained backups来减少bootstrapping error的累积。

算法主要包括两个部分:第一是像BCQ一样学习K个Q函数,并且使用最小的Q函数进行策略提升;此外,设计了一个约束,用于搜索符合support要求的policy。

作者同时提到,使用K个Q学习的方式取均值的方式学习效果也很好。

通过减小Bootstrapping Error Reduction来进行离线RL学习

由于通常的行为策略 通过减小Bootstrapping Error Reduction来进行离线RL学习 是未知的,因此需要通过对偶梯度近似求解约束优化问题。本文使用的是一种基于采样的maximum mean discrepancy (MMD),只需要数据集的数据即可,

通过减小Bootstrapping Error Reduction来进行离线RL学习

作者还发现对于低级和中级的策略采样出的样本,估计的MMD和使用一个uniform的P近似。

因此,算法的总的优化目标如下:

通过减小Bootstrapping Error Reduction来进行离线RL学习

写成step-by-step算法形式:

通过减小Bootstrapping Error Reduction来进行离线RL学习

有几点要注意:

1。 看到最终在更新Q的时候使用的Q的目标是一个min和max的凸组合(第5行)。

2。 更新policy的时候使用的是带约束的policy gradient(在loss上加了一项mmd的loss)

3。 基于的是AC框架,用PG更新,可以解决连续空间(虽然叫QLearning)

4。 在test的时候,通过在pi中采样多个动作,选取Q最大的动作来执行(这里像Q学习)

5。从数据中采样动作,是借助一个用BC训练的vae policy实现的

实验

正文的实验分为3部分:

1。medium-quality dataset

2。random & optimal dataset

3。analysis

1。medium-quality dataset

通过减小Bootstrapping Error Reduction来进行离线RL学习

作者提到medium的data在一般application中最常见。作者提到BCQ经常和BC差不多,其实就是做了数据的模仿。

2。 random & optimal dataset

通过减小Bootstrapping Error Reduction来进行离线RL学习

注意到一般的RL在random data上效果还不错,但是在optimal上效果不好(因为没有explore)。同时作者专门提到在较难的humanoid上效果也不错。

通过减小Bootstrapping Error Reduction来进行离线RL学习

3。analysis

这里主要测试前面的mmd constraint换成KL的效果,不如MMD。以及用于估计MMD的样本数目。较小的样本数目效果反而更好。

作者的解释是:Although the difference is not large, consistently better performance with 4 samples leans in favour of our hypothesis that an intermediate number of samples works well for support matching, and hence is less restrictive.

通过减小Bootstrapping Error Reduction来进行离线RL学习

 

笔记完。