OfflineRL——BCQ算法

2,423 阅读5分钟

这是我参与8月更文挑战的第19天,活动详情查看:8月更文挑战

BCQ

BCQ来源的论文地址:Off-Policy Deep Reinforcement Learning without Exploration (arxiv.org)

本文需要对DDPG算法有一定的了解,可以看我之前的文章:强化学习入门8—深入理解DDPG (juejin.cn)

简介

BCQ即Batch Constrained deep Q-learning 。本文提出的算法在 off-policy 算法的基础上加上 batch constraint 的限制以避免extrapolation error这样的外推误差。

Motivation

Batch RL的挑战是什么?

Extrapolation error外推误差

什么会导致Extrapolation error外推误差?

  • Absent Data. 即数据集中没有某些特定的 (s,a)(s,a) ,那我们就无法准确的估计这部分的价值。
  • Model bias. 即数据集中可能有某个 (s,a)(s,a) 的数据,但是数据不够多,因此从样本上估计得到的 p(ss,a)p(s'|s,a) 和真实的有一定的误差,从而导致估计的误差。
  • Traning Mismatch. 即数据的分布不一样会产生误差。就是训练的policy在更新过程中拿到的batch data的分布与当前policy在真实环境中采样出来的数据分布之间存在差异,在优化的时候会带来误差。

Extrapolation error会导致什么问题呢?

比如,对于一个采样了数据集中没有的action的策略,它下一时刻可能学习不了价值函数。举个例子,当前的state是s,数据集里面有s->a1,s->a2,却没有s->a3的数据,但是当前的策略 π\pi 实际倾向于选择a3,然而数据集对选择a3是否更好,是无法提供指导的。

那为了解决这个问题,提出了Batch-Constrained deep Q-learning算法。Batch-Constrained的意思就是在batch的限制下选择策略。

算法流程

整体的思想:当agent在state下选择action时,把action约束在一个范围里。接前面的例子,当前的state是s,数据集里面有s->a1,s->a2,没有s->a3的数据,策略π\pi只能在a1和a2之间做选择,就是说很难取估计a3的value,BCQ算法就是约束我们的策略,让他不去考虑a3,只在a1和a2之间选择(a1,a2容易估计到value)。

那如何限制这个action的范围呢?

论文提出用VAE作为生成模型,来生成一些action。首先从batch中采样,然后训练VAE,生成和batch中相似的action。这里VAE学习的数据是真实的batch data。

然后再从生成器中采样,利用扰动网络 ξϕ(s,a,ϕ)\xi_{\phi}(s,a,\phi) 扰动action取值,把a控制在 [aϕ,a+ϕ][a-\phi,a+\phi] 范围里。引入perturbation网络 ξϕ(s,a,ϕ)\xi_{\phi}(s,a,\phi) 的目的是为了提高action的diversity。

最后更新Q和Q-target。

其实算法就是在DDPG上进行改进,整个过程其实和DDPG是差不多的。我们可以把生成模型 G 和扰动模型 ξ\xi 联合起来看做 policy network,不过它由两部分组成,一部分负责让生成的action不要偏离数据集中的action太远,另外一部分负责最大化累积奖励。实际上可以把扰动网络看成DDPG中的Actor,策略 π\pi 是对区域内的action取max,可以表示为:

在这里插入图片描述

扰动网络的更新如下:

在这里插入图片描述

然后价值网络这一部分也可以看成DDPG的Critic。只不过不同的是,在Q值的计算上BCQ使用了两个Q网络,这里是沿用了Clipped Double Q-learning的方法,取两个Q网络的估计的最小值。采取的是convex combination 凸组合。λ\lambda 采取的是较大的权值(λ=1\lambda=1 就是Clipped Double Q-learning)。

在这里插入图片描述

所以最终的结构:共有7个神经网络,包括VAE生成网络,两个Q网络 θ1θ2\theta_1、\theta_2、扰动网络 ξ\xi 以及各自对应的目标网络。

下面是伪代码:

在这里插入图片描述

我们关注一下参数更新:

  • VAE的参数 ω\omega 是用真实batch data进行更新(BC VAE loss)
  • 两个Q网络的参数是用真实的batch data更新(就是优化贝尔曼方程)
  • 扰动网络的参数 ϕ\phi 是用VAE生成的action来更新

还有一个问题,怎么保证收敛?

论文中给出了四个定理。

在这里插入图片描述 首先,定理1证明了在离线数据集 BB 上做Q-learning,其实是在找与该数据集对应的MDP上的最优策略。

在这里插入图片描述

定理2说明了外推误差是可以被消除的。

在这里插入图片描述

定理3保证了BCQ的收敛性。

在这里插入图片描述

定理4 说明了BCQL 可以收敛到数据集 BB 对应的这个 MDP 上的 optimal policy。

小结

BCQ可以看成是在DDPG的基础上进行改进的。

constraint的本质是为了让batch RL不要去选择dataset没有覆盖的部分,从而在well-estimated的Q value中进行选择。

BCQ考虑了extrapolation error,因此可以从任意数据中学习,可以是专家数据,也可以是一般的suboptimal数据。

像BCQ这样的方法,大部分是在policy上做constraint,还有一种叫CQL(Conservative Q-Learning)的方法,是在Q function上做一些变化,外推误差可能导致Q值过高估计,通过增加一个正则化项,使得学习到的Q函数是真实的Q函数的lower bound,并且证明了通过不断的迭代,这个lower bounded的Q值可以不断的改进策略。

参考

  1. Offline RL 教程 - 知乎 (zhihu.com)
  2. 【论文笔记】Batch-Constrained deep Q- Learning(BCQ) - 知乎 (zhihu.com)
  3. 【论文笔记 3】BCQ: Batch-Constrained deep Q-learning - 知乎 (zhihu.com)
  4. 【强化学习 119】BCQ - 知乎 (zhihu.com)