这里我有一些选 base 模型的建议,首当其冲的就是 base 模型的性能不能太差。如果 policy initialization 太差,那么采集到的 trajectory 大概率是错的,这个时候 RL 必死无疑,不管你用什么算法都救不回来,没有 date 拿什么学。 那怎么获得一个还可以的 policy initialization?往往需要先从 human/ 很厉害的模型(比如 GPT-4)那边用监督学习学到一点知识,然后再上 RL。比如我们的工作中,大概的流程是这样的:
务必先拿一个稍微靠谱的 pre-trained 模型(性能有 10% 以上),然后 RL。如果性能太差(比如只有 1%),还是早点换一个 base model 比较好,不然不知道要学到什么时候。 有同学会问为什么自己上课时作业里遇到的 RL 可以用 random initialization:这是因为游戏的 action space 很小,盲猜也能对的。在 real-world problem 上一抓几千个 potential action,给 random policy 直接干玉玉了。 第二个是 base 模型的大小不能太大。一个原因是模型大,就需要更多的 data 去 fit,简称训不动。特别是 online RL,所有 data 都是边训边收集的,如果 model需要成倍的数据,那么 collect 也会需要成倍的数据,这需要很多机器一起跑 collection。 如果想偷懒少收集一点,那得调 learning rate,可能更痛苦。试想你跑一轮实验需要一个星期,还要不要毕业了。另一个原因是穷。这个就不太需要解释了。作为一名合格的科研乞丐,我深刻认识到穷是不需要任何解释的。
算法
这一部分会稍微烧脑一点,可能需要反复读几次。我会把用到的知识都做成 link 放在旁边。
3.1 Filtered AWR
环境的基础搭好以后,就可以着手思考什么样的算法适合这个问题了。一个能想到的最简单的解法就是 filtered behavior cloning(filtered BC),就是让模型自己玩,玩对了就拿对的整条 trajectory 让模型去学习自己是怎么做对的,玩错了就扔掉这个数据。 train 的方法也很简单,直接用 language modeling 的老方法去训练即可。但是 filtered BC 有两个问题:第一是只要 trajectory 成功了,那么其中的每一步,不管好坏,都会被模仿到;第二是没法高效地建模 stochasticity,因为没有 critic 去专门 fit 这种随机性。 因此我们想到了,可以不使用最终的 reward,转而使用 advantage去filter data。这种算法会产出一个模型,这个模型在 infer 时的架构与原来完全相同,不需要为了 RL 往模型里面加新的 module;而在 train 时,我们可以加入 critic 来估计这个 advantage,从而用这个 advantage 来 filter data;然后用这个 filtered data 来用和 BC 一样的 loss 训练模型。 这是一个非常简单的想法,灵感来源于AWR(没听说过的同学可以略看这篇:AWR(Advantage-Weighted Regression)算法详解与实现 [1]),但是我们把 AWR 硬化成了 hard filtering。
3.2 GAE的通俗理解
现在我们就要思考如何去设计这个 advantage 了。前面提到了 stochasticity 的问题,其实有关随机性,RL 的前人已经有过非常多的讨论,其中 John Schulman 的 GAE(Generalized Advantage Estimation)很大程度上缓解了随机性的问题。 对 GAE 还不了解的同学强推这篇:强化学习技术—GAE [2]。其实 GAE 本质上就是下面这一串 advantage estimate 的加权平均:其中, 称为 -step advantage。当 时,就是 1-step TD;如果我们把 拉到无穷大,那其实就是 时刻的 monte carlo estimate减掉 baseline 。 这体现了GAE “generalized” 的原因:将 advantage 考虑成 TD 和 MC 的某种融合。因为 MC 是低 bias 的,TD 是低 variance 的,所以可以根据实际情况调这个比重。 GAE 被当成各种 baseline(包括 PPO 也用 GAE)是有原因的 - 在实验中,我们发现 GAE 用来做 real-world task 效果比单纯的 TD/MC 的 estimate 要好不少,因为 TD 很大程度上看 value 的准确度,而因为现实任务下的训练数据非常 noisy,这个 value critic 是极难学的。 这个时候就需要 MC 过来帮忙。但是单纯的 MC 又是不行的,因为现实任务有随机性,之前拿到的 data 没法 generalize 到随机出现的情况。
3.3 GAE的简化
我们的 state-level advantage 就是受到 GAE 的启发,只取了 GAE 的第一项和无穷项。对于每一个 state action pair,我们取它的 MC return advantage (这个是因为我们是 trajectory-level reward,只有最后一步 reward 可能为 1)和 one-step TD advantage ,两者 weighted sum 可得: