1. 为什么这篇基准测试论文值得反复精读
第一次看到这篇论文的标题时,我的反应是"又一篇刷榜文"。模型基强化学习(Model-Based Reinforcement Learning,简称MBRL)这个方向,从早些年的PILCO、iLQG一路发展到后来的Dreamer、PlaNet系列,每年都有新算法冒出来,每个都宣称自己在某个任务上吊打前作。但真正把这一堆算法拉到同一个台子上、用同一套环境、同一套评估协议、同一套超参搜索预算去跑一遍的工作,其实少得可怜。这篇基准测试论文干的就是这件"得罪人但极其有价值"的事。
它要回答的核心问题很朴素:模型基强化学习到底比模型无关方法强在哪,强多少,以及在什么条件下这个优势会消失。这个问题听起来简单,但如果你真的动手复现过几个MBRL算法,就会知道这里面的水有多深。不同论文用的环境版本不一样、回报归一化方式不一样、评估episode数量不一样、甚至"训练步数"的定义都不一样。你拿A论文报告的曲线去对比B论文的曲线,基本等于拿苹果比橘子。
这篇论文的价值就在于,它把这些变量全部固定下来,然后系统性地做了消融。它适合谁读?我认为有三类人:第一类是刚进这个方向、想快速建立全局认知的研究生;第二类是已经在做MBRL、但被各种"不公平对比"搞得很烦的工程师;第三类是想把MBRL落地到实际控制或决策问题、需要判断"这条路到底值不值得投入"的从业者。不管你是哪一类,这篇论文都能帮你省下大量试错时间。
我读这篇论文的方式和读普通论文不太一样。普通论文我一般先看方法再看实验,但这篇我建议你先看它的评估协议设计,再看结论,最后才回头看各个算法的具体实现细节。因为它的核心贡献不在算法,而在"怎么公平地比"这件事上。下面我就按这个思路,把这篇论文里最值得抠的几块内容拆开讲。
2. 基准测试的评估协议到底卡住了哪些变量
2.1 环境集合的选择逻辑与隐藏陷阱
这篇论文选的环境集合不是随便挑的。它覆盖了连续控制里几个经典难度梯度:从相对简单的平衡类任务(类似倒立摆、小车爬坡),到中等难度的运动类任务(类似四足行走、游泳),再到高维的灵巧操作类任务。这个梯度设计是有讲究的——如果只选简单任务,所有算法都能跑出漂亮曲线,区分度不够;如果只选最难的任务,大部分算法直接崩掉,你也看不出差异。
但这里有个隐藏陷阱,是我自己踩过的:环境版本号。同一个任务名,比如某个连续控制环境,在不同版本里物理引擎参数、终止条件、甚至观测维度都可能变过。论文里明确写了它锁定的版本,你在复现时如果pip install了一个更新的版本,曲线对不上是大概率事件。我的建议是,复现前先把论文附录里的环境版本表抄下来,用虚拟环境把版本钉死,别偷懒。
另一个容易被忽略的点是动作重复帧数(frame skip)。这个参数决定了智能体每决策一次,底层仿真走多少步。它直接影响样本效率和任务难度。论文在附录里给了每个任务的具体设置,这个数字必须严格对齐,否则你跑出来的"样本效率"根本没有可比性。
2.2 回报归一化:一个看似无聊却致命的细节
回报归一化这件事,我在实际项目里被坑过不止一次。不同任务的原始回报量级可能差好几个数量级,有的任务回报在0到100之间,有的在负几千到正几千之间。如果你不做归一化,直接把不同任务的曲线画在一张图上,那基本没法看。但归一化的方式有很多种:可以按随机策略的回报做基准,可以按专家回报做基准,也可以按运行中遇到的最大最小值做动态归一化。
这篇论文采用的是基于随机策略基准的归一化,具体做法是用一个固定种子的随机策略在环境里跑若干episode,取平均回报作为下界,然后把这个下界映射到0,把某个参考上界映射到1。这个选择的好处是稳定、可复现,坏处是如果随机策略恰好运气特别好或特别差,基准就会偏。论文里为了缓解这个问题,用了多个种子取平均,这个细节在正文里一笔带过,但在附录里有详细说明,值得你去翻。
提示:如果你自己要做类似的基准测试,归一化基准的种子一定要固定并公开,否则别人复现时对不上,会怀疑你的结果造假。
2.3 评估频率与episode数量的权衡
评估这件事看起来简单,其实很讲究。评估太频繁,训练时间被评估吃掉一大半;评估太少,曲线太稀疏,看不出算法在中期的表现差异。论文里采用的策略是固定间隔评估,每个评估点跑固定数量的episode,并且用不同的随机种子。这个"不同随机种子"很关键——如果你评估时用的种子和训练时一样,那评估结果会偏乐观,因为环境已经被"见过"了。
我自己的经验是,评估episode数量至少要到10以上,最好20到30,否则方差大到没法看。论文里用的是多少,你去看它的实验设置表,那个数字是经过权衡的,不是拍脑袋定的。另外,评估时的动作选择也有讲究:是用确定性动作(取策略输出的均值)还是随机采样?论文统一用了确定性动作,这样方差更小,但可能低估了随机策略的探索能力。这个取舍你要心里有数。
3. 模型基与模型无关方法的真实差距在哪里
3.1 样本效率优势并非在所有任务上都成立
这是这篇论文最反直觉的结论之一。我们通常的认知是:MBRL因为学了环境模型,可以用模型生成虚拟样本,所以样本效率应该碾压模型无关方法。但论文的实验显示,这个优势在简单任务上并不明显,甚至在某些任务上模型无关方法用更少的真实样本就能达到相同性能。
为什么会这样?我的理解是,简单任务的动态相对容易学,模型误差小,但简单任务本身也不需要太多样本就能学好,模型无关方法靠大量并行环境也能快速收敛。MBRL的优势要等到任务变复杂、真实样本获取成本变高时才体现出来。论文里有一张对比图,横轴是真实环境交互步数,纵轴是归一化回报,你可以清楚看到两条曲线的交叉点在哪里。
这个结论对实际选型很有指导意义:如果你面对的是一个仿真成本很低、可以大规模并行的任务,别一上来就上MBRL,先试试调好的模型无关基线,可能更省事。如果你面对的是真实机器人、每次交互都有磨损成本,那MBRL的样本效率优势就值钱了。
3.2 模型误差累积:MBRL的阿克琉斯之踵
MBRL的核心是学一个环境模型,然后用这个模型做规划或生成虚拟训练数据。问题在于,模型不可能完美,预测误差会随着预测步长增加而累积。论文里专门做了不同规划步长下的性能对比,结论很明确:规划步长太短,模型用不起来,退化成一步预测;规划步长太长,误差累积到无法控制,策略直接在虚拟环境里跑偏。
这个现象我在实际项目里深有体会。早期我用一个基于神经网络的动力学模型做MPC,预测步长设到20步,结果模型在第五步之后预测的状态就已经完全离谱了,规划出来的动作在真实环境里根本不能用。后来把步长降到5步,配合模型集成(ensemble)来估计不确定性,才勉强能用。论文里提到的模型集成+不确定性惩罚是缓解这个问题的标准做法,但它不是银弹,只是把可用的规划步长往后推了一点。
论文里还有一个细节值得注意:它对比了确定性模型和概率模型在相同规划步长下的表现。概率模型因为建模了状态转移的分布,理论上能更好地处理不确定性,但实际训练更难、计算开销更大。论文的结论是,在它的实验设置下,概率模型的优势并没有想象中那么大,尤其是在模型容量有限的时候。这个结论有争议,但至少说明了一点:别盲目追求概率模型,先把确定性模型调好再说。
3.3 计算开销:被很多人忽略的隐性成本
样本效率高不等于总成本低。MBRL在训练时多了模型训练和规划这两块计算,尤其是基于采样的规划方法(比如随机打靶、交叉熵方法),每一步决策都要在模型里 rollout 很多条轨迹,计算量可能是模型无关方法的几十倍。论文里有一张表,对比了不同算法在相同wall-clock时间下的性能,这张表比样本效率曲线更贴近实际部署场景。
我自己的做法是,在选型时同时看两个指标:达到目标性能所需的真实环境交互步数和达到目标性能所需的墙钟时间。如果两个指标都占优,那没得说,直接用;如果一个占优一个吃亏,就要看你的瓶颈在哪。如果瓶颈是真实交互成本(比如真机实验),那优先看样本效率;如果瓶颈是算力预算(比如只有几张卡),那优先看墙钟时间。
4. 复现这篇论文时最容易翻车的几个环节
4.1 超参搜索预算不对等
这是基准测试类论文最容易被攻击的点。如果算法A你调了100组超参,算法B你只调了10组,那对比就不公平。这篇论文在这一点上做得比较规范,它给每个算法分配了相同的超参搜索预算,并且公开了搜索空间和搜索策略。但你在复现时要注意,论文用的搜索预算可能和你手头的算力不匹配。如果你只有论文十分之一的算力,那你就得缩减搜索空间,但缩减之后的结果和论文对比时要打个折扣。
我的建议是,复现时先不要做超参搜索,直接用论文报告的最优超参跑一遍,确认你的pipeline没问题、曲线大致对得上,然后再考虑要不要做自己的搜索。很多人一上来就搞大规模搜索,结果pipeline里有bug,搜出来的最优结果其实是bug的产物,白费功夫。
4.2 随机种子的影响被严重低估
强化学习的方差大到什么程度?同一个算法、同一套超参,换个随机种子,最终性能可能差30%以上。这篇论文用了多个种子取平均,并且报告了标准差或置信区间。你在复现时如果只跑一个种子,然后拿这个单点结果去和论文的均值比,那结论基本不可信。
我一般至少跑5个种子,如果算力允许就跑10个。画图时不要只画均值曲线,要把每个种子的曲线用浅色画出来,均值用粗线,这样你能直观看到方差有多大。论文里有些图就是这么画的,你可以参考它的可视化风格。
4.3 环境并行与数据收集的坑
MBRL和模型无关方法在数据收集方式上有个重要区别:模型无关方法通常用大量并行环境来加速数据收集,而MBRL因为要训练模型,数据收集和模型训练的节奏需要协调。论文里对这一点有说明,但不够详细。我的经验是,数据收集的并行度和模型训练的batch size要匹配,否则要么数据收集成为瓶颈,要么模型训练成为瓶颈。
具体来说,如果你用16个并行环境收集数据,每个环境每步产生一条transition,那每轮收集就是16条数据。如果你的模型训练batch size是256,那你需要收集16轮才能凑够一个batch。这个比例关系会影响训练的动态,论文里可能用了某种特定的比例,你在复现时要留意。
5. 从这篇论文延伸出的几个实用判断
5.1 什么时候该用MBRL,什么时候不该用
基于这篇论文的结论和我自己的经验,我总结了一个简单的判断流程。首先看你的任务能不能大规模并行仿真:如果能,而且仿真成本低,那先用调好的模型无关方法(比如SAC、TD3这类)做基线,大概率够用。如果不能并行,或者真实交互成本高,那MBRL值得一试。其次看你的任务动态复杂度:如果动态简单、低维,MBRL的模型容易学,优势明显;如果动态高维、接触频繁、有突变,模型很难学准,MBRL的优势会被模型误差吃掉。
还有一个容易被忽略的点是任务是否有明确的终止条件。有些任务一旦失败就终止,这种任务下模型误差的代价很高,因为一步错可能直接导致episode结束。论文里选的任务有不少是这种类型,你可以观察MBRL在这些任务上的表现是否比在"可以犯错"的任务上更差。
5.2 模型学习的目标函数选择
这篇论文对比了不同的模型学习目标:有的是直接预测下一状态(一步预测),有的是预测多步后的状态(多步预测),有的是在潜空间里做预测。每种目标都有道理,但适用场景不同。一步预测训练稳定,但模型可能只擅长短期预测;多步预测更贴近规划的需求,但训练更难、容易发散。
我自己的做法是先用一步预测把模型训稳,然后逐步增加预测步长做微调。这个课程学习(curriculum learning)的思路在论文里没有明确提,但我觉得很实用。另外,如果你的状态空间是高维图像,那在潜空间做预测几乎是必须的,直接在像素空间预测既慢又不准。
5.3 规划与控制器的耦合方式
MBRL里模型和控制器怎么耦合,也是个大问题。论文里覆盖了几种主流方式:有的用模型生成虚拟数据来训练一个模型无关的策略(比如把模型当数据增强器),有的用模型做在线规划(比如MPC),有的两者结合。这几种方式的样本效率和计算开销差异很大。
把模型当数据增强器的方式实现简单,可以复用现有的模型无关算法,但模型误差会直接污染策略;在线规划的方式更直接,但计算开销大,而且对模型精度要求高。论文的结论是,没有一种方式在所有任务上都占优,你得根据任务特点和算力预算来选。我个人的偏好是,如果算力充足且任务对实时性要求不高,优先考虑在线规划;如果算力紧张或者需要快速迭代,先用数据增强的方式把baseline跑起来。
6. 我在实际复现中踩过的几个具体坑
6.1 模型输出的归一化问题
这个坑很隐蔽。神经网络模型的输出层如果没有合适的激活函数或归一化,预测出来的状态可能跑到训练数据分布之外,导致规划时用到这些离谱的预测状态,策略直接崩掉。论文里对模型输出有没有做归一化,正文没细说,但附录里提到了。我的做法是,对状态和动作都做标准化(减均值除标准差),模型预测标准化后的量,用的时候再反标准化回来。这个操作简单但效果显著,能明显减少模型输出的离谱程度。
6.2 早停策略的选择
模型训练什么时候停?停早了模型没学好,停晚了过拟合。论文里用的是基于验证集损失的早停,但验证集怎么划分、用什么损失,这些细节会影响结果。我的经验是,验证集要从训练数据里按时间顺序切,不能随机切,因为强化学习的数据是时序相关的,随机切会导致验证集和训练集分布太像,早停点偏晚。另外,验证损失不一定要用MSE,如果你的任务对某些状态维度更敏感,可以加权。
6.3 评估时的动作裁剪
这个坑我在真机实验里踩过。策略输出的动作如果超出环境允许的范围,环境通常会裁剪(clip)到边界。但如果你在评估时忘了做同样的裁剪,或者裁剪的范围和训练时不一致,那评估结果就会偏。论文里对动作范围有明确说明,你在复现时要确保训练和评估用的是同一套裁剪逻辑。这个细节小到容易被忽略,但影响不小。
6.4 日志记录与可视化
最后说一个工程上的坑。MBRL实验的日志比模型无关方法多得多:除了常规的回报、损失,还有模型预测误差、规划步长、不确定性估计等等。如果你不从一开始就把日志系统搭好,跑到一半想加指标就得重跑。我的建议是,用一套统一的日志框架,把所有能记的都记下来,哪怕当时觉得没用。论文里报告的很多消融结果,都是靠详细的日志才能做出来的。你复现时如果日志不全,想复现某个消融都复现不了。
7. 这篇论文之后,MBRL基准测试还缺什么
这篇论文把连续控制领域的MBRL基准测试往前推了一大步,但它不是终点。我自己在读完之后的感受是,还有几块它没覆盖到。一是离散动作空间的MBRL基准测试,这篇论文基本聚焦在连续控制,离散动作下的模型学习和规划有不同的问题。二是多任务和迁移场景,现实中的智能体往往要面对多个相关任务,模型能不能复用、怎么复用,这篇论文没有深入。三是安全约束下的MBRL,很多实际场景不允许智能体随便探索,需要在探索时就考虑约束,这个方向的基准测试还很欠缺。
另外,这篇论文的评估指标主要是回报和样本效率,对策略的鲁棒性和泛化性评估不够。一个策略在训练分布内表现好,不代表换个初始状态或加点噪声还能用。我在实际项目里最头疼的就是这个:仿真里跑得好好的策略,一到真机上就各种翻车。希望后续的基准测试工作能把鲁棒性评估也标准化进来。
如果你正在做MBRL相关的研究或工程,我建议你把这篇论文的附录当工具书用,遇到具体实现问题时去翻对应的章节。它的正文给你全局判断,附录给你落地细节,两者配合起来,能帮你少走很多弯路。我自己是把它的实验设置表打印出来贴在工位上,每次开新实验前对一遍,确认没有遗漏关键设置。这个习惯帮我避免了好几次因为版本不对、参数不对导致的无效实验。