867 参数线性控制器,靠世界模型在 CarRacing 拿到 906 分解题分

World Models

David Ha, Jürgen Schmidhuber

cs.LG, stat.ML

2018-03-27

先用变分自编码器和混合密度循环网压缩环境,再进化极小线性控制器;赛车均分九百零六过关,躲避火球策略可在梦里训练后再迁回真环境。

这篇在解决什么

无模型强化学习要把信用分配做进一个大网络,参数一多就很难训,实践里策略网往往只有 10^3 到 10^6 个参数。人做反射动作时并不在脑子里逐步展开未来,而是用一个已经压缩好的内部模型。Schmidhuber 从 1990 年起就把「RNN 世界模型加控制器」写成一系列论文,缺一个能在像素环境上跑通的简化实验。这篇提供这个实验:先无监督地学一个大世界模型,再把信用分配留给一个很小的控制器。

方法

智能体拆成三块。视觉 V 是卷积变分自编码器,把 64×64 的 RGB 帧压成对角高斯潜变量 z。记忆 M 是带混合密度输出的 RNN(MDN-RNN),建模 P(z{t+1}|at,zt,ht),用高斯混合处理随机离散事件。控制器 C 是单层线性映射 at=Wc[zt;ht]+bc。V 和 M 用反向传播在 GPU 上训,C 用 CMA-ES 在 CPU 上进化,因为搜索空间只有几百到一千维。

CarRacing 流程:随机策略滚 1 万条轨迹;V 把帧编到 z∈R^{32};M 学下一帧的混合密度;CMA-ES 最大化真实环境累计奖励。参数量大约是 V 434 万、M 42 万、C 867。世界模型看不到奖励,只有 C 看得到。

VizDoom Take Cover 把 M 的输出加上死亡标志 dt,于是 M 本身就是一个 Gym 接口。C 完全在潜空间梦里进化,再搬回真环境。采样温度 τ 用来把梦调得比真环境更随机,减少 C 钻 M 的空子。

结果

CarRacing-v0 的过关线是 100 局均分 900。只给 C 看 z、不看 h,均分 632±251,和当时的 A3C 相当;给 C 加一层隐层到 788±141,仍过不了关。z 和 h 一起给,均分 906±21。对照:DQN 343±18,连续 A3C 591±45,离散 A3C 652±10,Gym 榜首 838±11。作者称这是该环境第一个过关方案,输入是原始 RGB 流,不用边缘检测、不用叠帧。

Take Cover 过关线是 100 局平均活过 750 步(约 20 秒),最长 2100 步。梦里均分约 900 步;迁回真环境约 1100 步。温度扫描:

τ梦里得分真环境得分
0.102086±140193±58
1.001145±690868±511
1.15918±5461092±556
1.30732±269753±139
随机策略210±108
Gym 榜首820±58

τ=0.1 时梦几乎是确定 LSTM,怪物不喷火球,C 在梦里拿满分,迁回去不如随机策略。τ=1.15 真环境最好,方差也大;τ=1.30 分数低一些,方差更小。

C 还会在梦里找到「灭火球」的对抗策略,因为 M 会生成训练分布外的轨迹。MDN 的随机性和升温是用来堵住这条捷径的,堵不完全。

为什么重要

把「学世界」和「学策略」拆开之后,大模型可以走可微无监督,小控制器可以走进化,信用分配不再卡在百万参数上。梦里训练的实用含义是:渲染和物理可以少跑,策略在潜空间里滚。sim2real 之前,这篇已经在两个 Gym 任务上把「梦里学会、迁回现实」跑通了。

局限也写得很清楚。随机策略采集的数据只够简单任务;更难的环境需要迭代探索。VAE 会把任务无关的墙砖纹理编进去,却丢掉赛道上有用的瓷砖。控制器能钻世界模型的空子,这是用学到的动力学完全替换真环境的通病。

局限与存疑

CarRacing 过关严重依赖「100 局均分 900」这条线,方差 21 意味着仍会偶尔翻车。VizDoom 的 1100 步带 ±556 的标准差,策略很不稳。世界模型由随机政策的数据训出来,没见过的状态会胡编。温度 τ 是又一个要调的超参,调低会模式崩塌。C 看得到 M 的全部隐状态,相当于把游戏引擎内存暴露给玩家,夸大了可利用性。迭代训练、好奇心、把动作和奖励也预测进去,全文只作为展望,没有实验。VAE 与 MDN 分开训,不是端到端。

术语

原文与代码

社区讨论

相关论文

全部论文解读