这是我参与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. 即数据集中没有某些特定的 ,那我们就无法准确的估计这部分的价值。
- Model bias. 即数据集中可能有某个 的数据,但是数据不够多,因此从样本上估计得到的 和真实的有一定的误差,从而导致估计的误差。
- Traning Mismatch. 即数据的分布不一样会产生误差。就是训练的policy在更新过程中拿到的batch data的分布与当前policy在真实环境中采样出来的数据分布之间存在差异,在优化的时候会带来误差。
Extrapolation error会导致什么问题呢?
比如,对于一个采样了数据集中没有的action的策略,它下一时刻可能学习不了价值函数。举个例子,当前的state是s,数据集里面有s->a1,s->a2,却没有s->a3的数据,但是当前的策略 实际倾向于选择a3,然而数据集对选择a3是否更好,是无法提供指导的。
那为了解决这个问题,提出了Batch-Constrained deep Q-learning算法。Batch-Constrained的意思就是在batch的限制下选择策略。
算法流程
整体的思想:当agent在state下选择action时,把action约束在一个范围里。接前面的例子,当前的state是s,数据集里面有s->a1,s->a2,没有s->a3的数据,策略只能在a1和a2之间做选择,就是说很难取估计a3的value,BCQ算法就是约束我们的策略,让他不去考虑a3,只在a1和a2之间选择(a1,a2容易估计到value)。
那如何限制这个action的范围呢?
论文提出用VAE作为生成模型,来生成一些action。首先从batch中采样,然后训练VAE,生成和batch中相似的action。这里VAE学习的数据是真实的batch data。
然后再从生成器中采样,利用扰动网络 扰动action取值,把a控制在 范围里。引入perturbation网络 的目的是为了提高action的diversity。
最后更新Q和Q-target。
其实算法就是在DDPG上进行改进,整个过程其实和DDPG是差不多的。我们可以把生成模型 G 和扰动模型 联合起来看做 policy network,不过它由两部分组成,一部分负责让生成的action不要偏离数据集中的action太远,另外一部分负责最大化累积奖励。实际上可以把扰动网络看成DDPG中的Actor,策略 是对区域内的action取max,可以表示为:
扰动网络的更新如下:
然后价值网络这一部分也可以看成DDPG的Critic。只不过不同的是,在Q值的计算上BCQ使用了两个Q网络,这里是沿用了Clipped Double Q-learning的方法,取两个Q网络的估计的最小值。采取的是convex combination 凸组合。 采取的是较大的权值( 就是Clipped Double Q-learning)。
所以最终的结构:共有7个神经网络,包括VAE生成网络,两个Q网络 、扰动网络 以及各自对应的目标网络。
下面是伪代码:
我们关注一下参数更新:
- VAE的参数 是用真实batch data进行更新(BC VAE loss)
- 两个Q网络的参数是用真实的batch data更新(就是优化贝尔曼方程)
- 扰动网络的参数 是用VAE生成的action来更新
还有一个问题,怎么保证收敛?
论文中给出了四个定理。
首先,定理1证明了在离线数据集 上做Q-learning,其实是在找与该数据集对应的MDP上的最优策略。
定理2说明了外推误差是可以被消除的。
定理3保证了BCQ的收敛性。
定理4 说明了BCQL 可以收敛到数据集 对应的这个 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值可以不断的改进策略。
参考