白话入门离线强化学习(傻瓜教程)

您所在的位置:网站首页 在线和离线算法的区别 白话入门离线强化学习(傻瓜教程)

白话入门离线强化学习(傻瓜教程)

2023-03-16 23:33| 来源: 网络整理| 查看: 265

近期在研究RLHF的时候突发奇想,既然已经有了那么多数据了有没有可能直接用offline RL来优化一波?所以恶补了一下offline RL的基础,借此机会写篇文章和大家一起学习下~什么是Offline RL?

传统强化学习是一个在线(online)的过程,通过智能体和环境不断的实时交互获取数据来进行一个policy evaluation + policy improvement的循环。而online RL又可分两大类,分别是on-policy RL和off-policy RL。一言以蔽之,on-policy RL和off-policy RL的区别在于用来收集数据的policy(behavior policy)和我们要优化的target policy是否一致,举例来讲policy gradient这一脉的算法都是on-policy的,因为behavior policy和target policy都是stochastic policy a \sim \pi(a|s) ,而基于Q-value这一脉的算法都是off-polilcy的,因为behavior policy是一个 \epsilon-greedy policy 但是target policy是greedy policy a \sim argmax_a \pi(a|s) 。

与online RL不同,严格意义上的offline RL是不会与环境进行交互的,它的目的就是仅仅从一大堆现有的行为数据 D 里面学习到一个更好的策略 \pi^* 。行为数据的采集可以通过人类专家与环境交互获得,也可以通过其他behavior policy与环境交互获得。大家可能会有点奇怪,通过一个固定的行为数据集我凭什么可以学到更好的策略 \pi^* ?如果行为数据集已经是人类专家的数据了,难道直接做behavior cloning(BC)不行吗?针对这个问题,offline RL community常给的一个例子是一个迷宫的例子,在一个迷宫环境中我们已有的行为数据告诉我们A可以到B,B也可以到C,offline RL可以通过这两个数据告诉我们A可以直接到C,但是这个信息是BC永远无法学到的,因为BC只会拟合数据集,它没有对数据集进行发散的能力。offline RL这种可以对现有数据进行发散并选到更优策略的能力叫做"stiching effect"。

基于Q-value的offlineRL算法

Offline RL的算法这几年也是层出不穷,看了很多这方面的论文也是脑袋懵懵,都各说各的好,真到了实际情况也不清楚到底该用哪路方法。不过最近offline RL里面算是有几个比较稳定的baseline算法可以用了,也就是本文将介绍的两个算法CQL和IQL,从名字上看,显而易见,这两个算法都基于Q-learning,但是二者有何不同呢?我们得先看看所有offline RL算法都是为了解决什么问题。

Offline RL面临的最大问题就是extrapolation error,因为我们的行为数据不可能覆盖所有state-action组合的情况从而导致对于那些在数据中没有出现过的state-action pairs我们很难去拟合他们的Q值。其实Q-learning一直有一个问题就是over estimation,但是在online RL里面我们通过不断的与环境交互还有校准的机会,也就是说尽管目前我对我没看见过的state-action的Q值估计大了,在我执行了这个过于乐观的动作之后收到了一个很大负向reward,那么下一次迭代的时候我就会减小这个Q值,上述这个校准机会在offline RL里面是没有的。所以所有的Offline RL的算法就是在关注如何减小extrapolation error,即对于那些未在行为数据里面出现的state-action pairs如何去缓和Q值过估计的问题。

Conservative Q-Learing

我们先来看看CQL是怎么解决这个问题的,先直接从CQL看起来有点复杂,有点不明觉厉的损失函数入手吧: \hat{Q}^{k+1} = \min_Q \max_{\mu} \alpha (\underbrace{\mathbb{E}_{s \sim D, a\sim \mu(s|a)}[Q(s, a)]}_{1} -\underbrace{\mathbb{E}_{s \sim D, a\sim \pi_{\beta}}[Q(s, a)]}_{2}) + \frac{1}{2} \underbrace{\mathbb{E}_{s, a, s'\sim D}(r + \gamma Q(s, a') - Q(s, a))}_{TD-error} + \underbrace{\mathcal{R}(\mu)}_{regulizer}

看上去有点可怕,我们一步一步拆解一下这是在干嘛:

先来看 \min_Q\max_{\mu} 1 + \frac{1}{2} TD-error + regularizer 这几项,这里面有两个优化变量, Q, \mu ,我们需要找到一个策略 \mu 用于最大化 \mathbb{E}_{s \sim D, a\sim \mu(s|a)}[Q(s, a)] + \mathcal{R(\mu)} ,这个 \mu 是通过regularizer定义的,如果我们定义regularizer是KL散度,那么 \mu 算出来就是一个soft-Q策略, i.e. \mu(a|s) \sim \frac{\exp(Q(s, a))}{Z} ,在找到这样一个 \mu 之后我们还有一个针对 Q 的最小化的操作,这个 \min\max 操作相当于是对真实的 Q 函数找了一个最大的下界,由于估计的是一个下界那么也就不会有过估计的问题了。作者发现目前虽然解决了过估计问题,但是算法变的非常保守,为了缓解这个过于保守的情况,又引入了 2 项。这个目的是为了最大化在行为数据集上面的Q值估计(最小化一个负数等于最大化一个正数),因为行为数据集是我们真真切切有的,我们允许模型在这个数据集上的Q值估计乐观一点。

看完CQL损失函数的定义后,下面的就很简单了,就是标准的Q-learning了:policy evaluation部分是基于上述loss拟合了Q函数,policy improvement部分就是取greedy policy a = argmax_a Q(s, a) 。感兴趣的小伙伴如果看原论文的话会发现还有一个基于actor-critic的变种,和Q-learning的方式区别在于policy improvement部分。actor-critic的方式还会额外用神经网络拟合stochastic policy \pi ,而这个对于策略 \pi 的损失函数是采用SAC训练的。

Implicit Q-Learning

相比于CQL,个人感觉IQL稍简单一些。相较于CQL显式的在损失函数中加入一些条件解决在行为数据集之外的Q值过估计问题, IOL的解决方式就比较隐式,这也是为什么它叫Implicit Q-Learning的缘由。不过IQL的定义是基于actor-critic框架的,所以需要三个神经网络分别用来拟合Q函数,V函数还有策略 \pi ,我们依旧先来看损失函数的定义:

L_V(\psi) = \mathbb{E}_{(s, a) \sim D}[\mathcal{L}_2^{\tau}(Q_{\hat{\theta}}(s, a) - V_{\psi}(s))] , \mathcal{L}_2^{\tau}(u) = |\tau - \mathbb{I}(u < 0)|u^2, \tau \in (0, 1)

L_Q(\theta) = \mathbb{E}_{(s, a, s') \sim D}[(r(s, a) + V_{\psi}(s') - Q_{\theta}(s, a))^2]

L_{\pi}(\phi) = \mathbb{E}_{(s,a)\sim D}[\beta(\exp(Q_{\hat{\theta}}(s,a) - V_{\psi}(s)))\pi_{\phi}(a|s)]

这里面最让人迷糊的是V值损失函数里面的 \mathcal{L}_2^{\tau} 的定义,这一项叫做expectile regression,原论文中有一张图解释的不错(见图一),也就是说expetile regression拟合的数据分布的目标和 \tau 相关,当 \tau = 0.5时,expectile regression拟合就是数据的50%quantile,也就是均值;当 \tau = 0.9是,expectile regression拟合的就是数据的90%quantile,相当于拟合数据集中的上界。(举一个不恰当的例子, \tau = 0.5等于预测全国人口的平均收入, \tau = 0.9等于预测演艺圈流量明星的平均收入......)V值函数得loss就是通过expectile regression的方式拟合数据分布的upper quantile,然后Q值函数的loss就是通过TD-error的方式不断的提升Q值,最后策略网络的loss是一个针对数据集的weighted sum,通过这个loss策略函数可以学到一个既符合数据分布的条件限制又可以最大化Q值的策略。

到这里基本IQL的重点我们就简单的过了一遍,但是是否有同学疑惑IQL这一系列操作都是在不断的拟合行为数据集的上界,这不会加重offline RL里面的过估计问题吗?要回答这个问题需要关注IQL里面的一个小细节,取期望的部分,注意到所有的datapoints都是在行为数据集上采样的,我们没有query任何行为数据集之外的动作 a' ,这一点是和CQL不同的。没有在out of distribution数据上采样,也就意味着对于OOD数据不会存在过估计的情况,也就隐式的避免了extrapolaition error的问题。

图一图二:CQL算法训练流程图三:IQL算法训练流程基于TD3的offline RL算法

最后这个方法是我个人觉得很有想法的一篇工作,想法非常简单:offline RL = off-policy RL + BC + state normalization,直接拿一个off-policy RL的算法(TD3)加上了行为克隆就基本和许多offline RL的state of the arts算法效果持平,最重要的是这个方法非常简单,只需要在TD3的实现上加一行代码就搞定了。。。BTW,其实Scott的其他工作大家也可以去看看,感觉他整个的研究风格就是“于细微之处洞见广阔天地”,且所有的猜想的佐证都非常夯实,文章读起来让人赏心悦目。

然而这个算法也有一些不足,因为作者所有实验是基于TD3的,所以只测了连续控制任务上的一些表现,对于离散环境来说类似的方法是否有效还存疑。除此之外,论文中没有理论上的证明都是基于实验的观察,所以这个方法的理论保证也存疑。

思考与总结

鉴于近期chatGPT与GPT-4的大火,大语言模型强悍的表现力突破了人们的想象,但是尽管有了千亿参数以及多模态的加持,大语言模型依旧没有克服会乱说、欠缺学习新知识的能力的瓶颈,如何让大语言模型真正的有决策能力从而成为大决策模型应该是AI reserchers接下来要克服的难点。而克服的方式应该也不是一味的喂训练数据、加大模型参数,因为无论模型多大,数据多少,大语言模型依旧是在拟合数据的分布而已,毫无决策可言。个人拙见是在通往大决策模型的路上offline RL有可能发一波力,如果offline RL能运用海量的数据离线学习到很多决策的先验知识,我们将这些能力额外赋予大语言模型同时再用online RL finetune一下也许可以从某种意义上做到大决策模型,总体方向还是比较乐观的。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3