发表时间:2019(ICML 2019)
文章要点:这篇文章想说在offline RL的setting下,由于外推误差(extrapolation errors)的原因,标准的off-policy算法比如DQN,DDPG之类的,如果数据的分布和当前policy的分布差距很大的话,那就很难从data里学到好的policy。然后文章提出了batch-constrained reinforcement learning来约束当前的policy和收集data的policy的距离,从而更有效的学习。
extrapolation error指的是对于没有见过的状态动作对,估计值不准确。导致这个问题的原因在于the mismatch between the dataset and true state-action visitation of the current policy.这个问题可能有以下几个原因:
(1) Absent Data.大概意思就是如果没见过某个state-action pair,那这个地方的估计就可能任意的差。
(2) Model Bias.大概意思就是说如果data不够多的时候,因为在算bellman估计的时候,都是用采样去做的,但是采样得到的transition dynamic和真实的MDP的dynamic是有偏差的。
(3) Training Mismatch. 即使data足够多,但是当前policy和data对应的分布差距很大,那么采样得到的样本和当前的policy还是有很大的mismatch。这个更新也会有问题。
作者提出Batch-Constrained deep Q-learning (BCQ)来解决这个问题,大概思路就是用state-conditioned generative model to produce only previously seen actions。具体需要满足如下目标
作者定义了网络,一个生成模型G,一个扰动模型\(\xi\),再加两个Q网络。生成模型用来生成data里出现过的动作,扰动模型用来给生成的动作加一个小的扰动,用来增加多样性,然后两个Q就是用来做Double Q-learning的。训练的大概思路就是先用生成模型和扰动模型生成很多个action,然后从这些action里面找最大的Q来做更新用的target Q。然后用Double Q-learning来更新Q网络。
算法伪代码如下图:
总结:感觉这个思路的话,就是我的policy可能不会很好,因为我限制了训练的transition和buffer里的差得不会太远。同时这个policy也不会很差,因为extrapolation error的问题会被缓解。
疑问:这个用VAE来训练生成模型,这个地方会不会依然生成buffer里没有的动作?这个地方的原理不是很懂。
给动作加扰动那里,连续动作DDPG倒是好加,DQN咋加的?