论文摘要
在现实大型应用的场景下,如何让强化学习(RL)可以高效利用已搜集到的数据集是一个非常大的挑战。离线强化(offline)学习算法是此挑战的解决方案之一,它希望可以在无须与环境交互的情况下,从现有已搜集的数据集中学习到有效的策略。然而,在实际使用中,离线强化学习存在一个问题:标准的off-policyRL 可能会因为数据集的分布漂移(distributional shift)而导致的价值超估(overestimation)问题,而性能大打折扣。此问题在训练复杂数据或多模态数据时尤为突出。
为了解决现有RL中存在的这些限制问题,在这篇论文中我们提出了CQL(Conservative Q-learning)。CQL通过学习一个保守的Q值函数来让基于此Q值函数学习得到的策略价值期望是它真实值的一个下界。我们从理论上证明了CQL可以在保证在策略改进的前提下,得到一个当前策略价值的一个下界。在实际使用中,CQL仅需在标准的贝尔曼误差目标函数的基础上添加一个Q值相关的正规化子。因此,它很容易被集成到现有的类似DQN或actor-critic 的强化学习算法中去。在离散和连续控制领域,我们的实验表明CQL的性能远超现有的RL算法,还经常可以得到2~5倍高的最终收益(特别是在基于复杂和多模态数据的任务中)。
背景
在过去的几年里,RL在很多领域都取得了不错的进展,但其中存在的问题也一直在挑战了研究者们。很多RL算法需要通过实时与环境进行互动来学习,这种实时的数据采集的成本在很多情况下是极其昂贵的。解决方案之一就是使用离线强化学习。此类方法可以从现有的静态数据集中来学习。
然而,现实是残酷的,此类方法需要解决静态数据集与实际数据分布不一致以及采样误差等问题。这些问题会导致标准的强化学习算法在离现场下性能极差甚至无法使用。在两个问题中,数据分布不一致问题是一个主要问题,此问题通常被称作分布漂移(distributional shift):一个有效的策略需要学会预测与原本数据集中所给出的策略不一样的、更好的策略。
由于分布漂移问题,标准的离线强化学习(比如DQN)在训练过程中,价值估计会给出一个相比于当前策略所对应的真实值更高的一个值,这也就是大家常说的超估问题(overestimation)。也就是算法认为估值很高的某个动作对应的实际价值是个垃圾。
标准TD学习回顾
由于实际的离线数据集通常都无法覆盖整个数据空间,价值函数的学习通常可以依赖TD(Temporal-Difference)学习算法。TD算法主要由两部分构成:
- 策略评估(policy evaluation):此部分用于学习策略对应的Q值函数
- 策略改进(policy improvement):此部分用于学习策略本身
其中学习Q值函数的策略估值部分用到了著名的贝尔曼算子$\mathcal{B}^\pi$:
其中$r(s, a)$表示状态$s$下执行动作$a$得到的实际收益;$\gamma$为针对未来不确定性的衰减系数;$s^\prime, a^\prime$分别表示下一步的状态与动作。通常在训练时,我们可以使用均方误差(MSE)作为损失函数,即优化目标为:
这里在应用贝尔曼算子时,实际上我们会遇到一个问题:在贝尔曼算子的公式中,我们求期望的下标中包含$a^\prime \sim \pi (a^\prime \vert s^\prime)$。在TD学习中,此处所使用的$a^\prime$是根据我们当前训练中的策略$\pi^k$采样得到的,这与数据集中$a^\prime$的分布是不一致的(实际上我们一般无法获取$(s^\prime, a^\prime)$的真实分布,数据集中的分布也很有可能是非iid的),这导致的结果就是在TD学习中,我们实际得到的贝尔曼算子的值$\mathcal{B}^\pi Q$是不准确的。此外,在很多算法中,策略的学习过程中通常会使用Q值估计最高的动作进行策略学习$a^\prime = \arg \max_{a} Q(s, a) $,或者隐式地在Q值学习过程中提高了Q值的估计$Q(s, a) = r + \max_{a} Q(s^\prime, a)$。这两种方式都会导致最终学习到的价值函数虚高。
在在线(online/on-policy)RL算法中,这种错误会在训练过程中与环境的不断交互而得到一定程度的修正,而在离线强化学习中, 由于缺乏与环境交互的条件,这种错误不断累积,最终很可能就会导致算法失败。
CQL
CQL的想法是既然超估了,那么我们就采用一个保守的策略:显示地降低对当前状态(+动作)的价值估计。
由于在实际应用中,一般我们无法得到可以完美反映RL工作空间的数据集,也就是我们无法直接使用贝尔曼算子$\mathcal{B}^\pi$进行计算。我们可以使用基于采样数据的经验贝尔曼算子$\hat{\mathcal{B}}$(empirical Bellman operator):
策略评估
版本一
为了得到一个保守的策略,那么最简单的方式就是在Q值上减去一个值,这样Q值不就被减小了嘛!于是我们有了第一个版本的Q估计方法:
上式中$\mathcal{L}_{Bellman}(Q) = \cfrac{1}{2} [(Q(s, a) - \hat{\mathcal{B}}^\pi\hat{Q}(s,a))^2]$为原来通过均方误差得到的损失值。
从上式可以直接看出此式得到的解既可以让原本的损失函数$\mathcal{L}_{Bellman}$小,也可以让得到的Q函数减少。但是此式引入了一个动作相关的一个新的分布$\mu(a\vert s)$,这个分布我们是未知的。在算法实现时,我们需要使用一个我们知道的分布来替换这里的$\mu$。显然,只要我们这里$\alpha$取得足够大,那么我们一定可以得到一个小的Q函数。文中定理一给出了证明(任给$\mu$)。此外定理一还说明在$\hat{B^\pi} = \mathcal{B}^\pi$,那么我们取任意的$\alpha \gt 0$都可以保证$\hat{Q}^\pi(s, a)\le Q^\pi(s, a)$。这也就是说,如果我们的数据集可以反映真实的数据分布,那么其实数据漂移问题就不存在了(显然),我们直接使用贝尔曼算子即可。
版本二
公式$(1)$中,我们无脑降低了所有的Q值,因此,我们降低的Q值既包含了数据集分布内(in distribution)的Q值,也包含了数据集内不包含(out of distribution, OOD)的状态的Q值。
对于OOD的数据,Q值降低了是挺好的,但是数据集内包含的数据不是导致分布漂移问题的数据,我们将其Q值也降低了并不合理。因此,我们可以在$(1)$式的基础上补上一个分部内数据的Q值项来弥补减去的Q值。这样我们就得到了下式:
这里$\hat{\pi}_\beta$为为采样数据时使用的策略(在实现时,直接使用数据集中的数据对$\mathbb{E}_{s\sim \mathcal{D}, a\sim\hat{\pi}_\beta(a\vert s)}$求期望即可)。文中定理二说明,虽然此式无法保证$\hat{Q}^\pi(s, a) \le Q^\pi(s, a)$,但可以保证$\hat{V}^\pi(s) \le V^\pi(s)$。
离线算法
经过以上的一番分析,作者提出了一个用于离线RL的CQL优化算法$CQL(\mathcal{R})$,此类算法的优化问题为:
其中,$\mathcal{R}(\mu)$为正则项。我们取$\mathcal{R}(\mu) = - D_{KL} (\mu, \rho)$,即分布$\mu$与分布$\rho$之间的KL散度(假设$\rho$为一个已知分布)。这样,我们就可以求得下式的解析解:
直接使用拉格朗日乘子法(条件为:$\sum_a \mu(a) = 1$),即可求解得:$\mu(a\vert s) = \cfrac{\rho(a\vert s)\cdot \exp(Q(s, a))}{Z}$,其中$Z=\sum_a \rho(a\vert s)\cdot \exp(Q(s, a))$用于对所有动作$a$进行归一化。如果我们取$\rho$为均匀分布$\rho(a\vert s) = 常数$,那么$(3)$式将会被转化为如下$CQL(\mathcal{H})$算法(优化问题):
如果我们取$\rho(a \vert s) = \hat{\pi}^{k-1}(a \vert s)$,即我们使用前一轮训练得到的策略作为$\rho$,那么上式中$\log \sum_a \exp$需要转变为$\log \sum_{a \sim \hat{\pi}^{k+1}(a\vert s)} \exp$。在动作空间的维度较高时,使用此公式进行求解(即取$\rho = \hat{\pi}^{k-1}$)的效果更加稳定。
此外,我们将$\mu(a\vert s)$的解析解带入$(3)$式,并省略$\mathcal{R}(\mu)$项,则可以得到$CQL(\rho)$算法:
文章附录中还提到了一种变体,基本思想是在以上CQL的基础上加上对不同动作下Q值方差的惩罚,即希望某一状态下,对于不同的动作,Q值的差异不太大。在他们给的代码实现中,没有看到此方法被应用(貌似只求值并记录了一下),此处不再赘述。
在实际使用时,CQL可以与其它基于Q值的算法相结合,仅需在原本$\mathcal{L}_{Bellman}$的基础上加上CQL添加的部分即可(如公式$(4)$的第一项)。
实现细节
记公式$(4)$的第一项为$\mathcal{L}_{CQL}$:
对于$\alpha$取值,文中提供了两种取值方式:
- 固定取值:默认取值$\alpha=5.0$
- 动态取值:使用拉格朗日对偶梯度下降法
方法二在实现中,相当于优化如下公式:
上式中引入了一个阈值$\tau$,当第一项的期望差较小时($\le \tau$),那么$\alpha$会被优化到无限接近于零;当第一项的差值较大($\ge \tau$)时,$\alpha$会被优化得越来越大,直至差值到达阈值$\tau$。
如果希望使用动态取值,那么仅需要在优化时再加上$(5)$对应的优化项即可。训练过程对$\tau$的取值还是非常敏感的。如果取值过小,那么会导致$\alpha$被训练到一个非常大的值,显然这样训练出来的模型无法使用。如果取值过大,太过宽松,那么就可能会无法防止超估(overestimate)问题。文中提供的典型取值为$\tau = 5.0$。
其它实现细节可参考论文附录。
理论分析
文中对算法进行了理论分析,这里简要介绍下结果。文中提到了6个定理,其中定理一、二说明了根据所提两个版本的理论公式$(1)/(2)$得到的Q/V计算结果不会超过实际的Q/V。
定理三四主要说明$CQL$算法在迭代过程中的保证。定理三说明了所提的$CQL$算法族(满足公式$(3)$),只要每一步优化(比如每次训练一个$batch$数据)带来的策略变化不太大,那么得到的下一步的状态价值函数$\hat{V}^{k+1}(s) \le V^{k+1}(s)$。也就是说最终学习得到的策略$\hat{\pi}$所对应的价值函数$\hat{V}^\pi$所指示的价值是一定可以达到的(状态$s$的实际价值一定更高),不可能出现比$\hat{V}^\pi$更低的情况(需要$\alpha$足够大)。定理四不太明白作者的意图,这里我猜测定理是说:算法在采样得到的数据上对Q值的抑制效果一定比在理论上拥有所有数据时(理论上)的抑制效果强(也就是说:“别看我样本少,但是我的保守策略可是很激进的,该减的Q值都减了,甚至减的更多”)。
定理五说明了CQL与标准的RL优化问题之间的关系:CQL所解决的优化问题仅是在原本RL优化问题的基础上添加了一个对所学习到的策略与原本的数据采样的策略间的距离的限制。定理六说明CQL算法所给结果一定不会比原本数据采样所用的策略$\pi_\beta$差超过$\zeta$,即CQL是一个参数为$\zeta$的安全策略改进算法(safe policy improvement, SPI)。关于$SPI$后续有时间再分享一下相关论文。
具体定理及其证明可参考论文及其附录。
实验
实验结果肯定很好啊,参考论文去。这里提一下附录里的消融实验(ablation study)。
- $CQL(\mathcal{H})\ vs\ CQL(\rho)$:在D4RL数据集中的MuJoCo任务中$CQL(\mathcal{H})$的效果优于$CQL(\rho)$;在动作空间特别大时,对于log-sum-exp项的预测会变得不准确(方差极大),此时$CQL(\rho)$的效果较好
- 不添加已采样数据Q值最大化影响怎么样(即不添加公式$(2)$中的红色部分):添加了性能更好,添加的优势在生成采样数据的策略较为单一时尤为明显
- $\alpha$静态 vs 动态:使用拉格朗日法(动态)的$\alpha$带来更优的效果
相关阅读建议
- Sergey Levine, Aviral Kumar, George Tucker, and Justin Fu. Offline reinforcement learning: Tutorial, review, and perspectives on open problems.arXiv preprint arXiv:2005.01643, 2020.
参考文献
[1] Kumar, Aviral, et al. "Conservative q-learning for offline reinforcement learning."Advances in Neural Information Processing Systems33 (2020): 1179-1191.
More Recommendations