把经验蒸馏进权重会丢失细节
多数深度强化学习智能体通过梯度更新,把见过的内容压缩进策略网络或价值网络的权重。论文列出这种做法的四项代价:计算开销大;吸收一条经验可能需要很多次更新;未被充分吸收的经验无法恰当影响行为;行为受模型容量限制。作者还提出一个更尖锐的时间性问题:由于单条轨迹的信息必须先蒸馏成通用规则,智能体可能无法利用少数几条过往经验提供的具体指引,新经验也可能需要多次回放才能被纳入。
论文的替代方案类似案例推理:回想一个相似的过往情境。智能体不再只读取当前状态,而是获得一个检索过程,可以直接访问经验数据集。这个数据集可以来自智能体自身的过往经历、专家示范或其他相关来源。关键在于,测试时智能体可以依据整个数据集来决定行为,而不只是当前状态或当前轨迹。
独立网络先选轨迹再选状态
检索过程被参数化为一个神经网络,拥有独立于智能体状态的内部状态。每一步它生成一个查询,与检索批次进行匹配;检索批次是从检索数据集中抽取并预处理过的样本。选择分两步:注意力分数先给整条轨迹排序,保留最相关的前几条;再在这些轨迹内部重新打分,挑出最相关的状态。随后,所选状态的信息被整合并传给智能体过程,用于影响策略或价值输出。
有两个设计细节对理解结果很重要。第一,检索批次中的每条轨迹都做双向摘要:每个状态既有对过去的正向摘要,也有对未来的反向摘要,因此检索既能利用状态之前发生的事,也能利用之后发生的事。第二,检索状态被划分为多个槽位,每个槽位独立检索,并通过自注意力相互交互。作者说明,除检索批次中的轨迹数量外,所有检索超参数在 Atari、gridroboman 和 BabyAI 实验中保持一致。
任务越多,检索带来的帮助越大
第一项测试是 gridroboman 上的多任务离线设定。这是一个网格世界操作环境,包含 30 个涉及红、绿、蓝三种物体的任务。单个智能体同时训练多个任务,但评估时检索数据集只包含被评估任务的轨迹。基线是普通 DQN 智能体,因为该任务不需要循环结构。
任务较少时,检索增强 DQN 与基线表现相同。随着训练任务数量增加,检索增强智能体学习效率明显更高。作者的解释是:训练更多任务要么需要更多模型容量,要么需要从每个任务更少的相关样本中提取信息,而直接查询与任务相关的经验提高了样本效率。他们还回应了一个显而易见的替代解释:论文中的消融实验表明,真正关键的是检索到的信息,而不是检索过程额外增加的容量。
Atari 上学习更快、得分更高
第二项测试把检索机制接入在线 R2D2 智能体,并在 Atari 上与基线 R2D2 比较。论文报告检索增强智能体学习明显更快,得分也更高。逐游戏数据显示,这种比较并非在所有游戏上一致:在 Alien 上,基线得分为 52,268 ± 4,125,增强智能体为 81,626 ± 5,123;在 Amidar 上分别为 10,976 ± 2,341 和 24,693 ± 1,982;而在 Assault 上,增强智能体略低,为 43,497 ± 6,653,基线为 45,521 ± 4,751;在 Asterix 和 Asteroids 上两者接近。
这一模式影响如何理解总体结论。论文的总结针对学习速度和总体得分,而逐游戏表格显示提升集中在部分游戏,并非全面提升。作者还报告了大量消融实验,衡量方法各组件的贡献;讨论部分特别强调两点:从过往经验中检索信息,以及把智能体与检索过程分开参数化,而不是让智能体直接访问回放缓冲区。
多任务检索数据可以帮忙而非误导
一个自然的担忧是:从覆盖其他任务的数据中检索,可能误导智能体。论文在 BabyAI 中检验了这一点。BabyAI 是一个部分可观测的多房间网格世界,较难的任务由较简单的任务组合而成,并用合成语言的一个子集表述。由于观测不完整,基线是循环 DQN,与检索增强版本比较。性能用成功率衡量,即在每个任务固定步数内完成任务的比率。
无论使用 50K 还是 200K 条每任务离线轨迹,检索增强都优于使用当前任务专属回放的基线,而使用多任务回放时进一步提升。作者将此归因于 BabyAI 任务的组合结构:关于子任务的信息可能比关于整体任务的信息更有用。这是作者对该环境结构的解释,而不是单独测量的机制。
只查询部分数据集的代价
检索在每一步都增加计算:槽位要选出相关轨迹和相关状态,注意力开销随检索批次中的轨迹数量增长,选择结果在不同时间步之间变化,且每个槽位都要重复这一过程。作者指出这可以在 GPU 或 TPU 上高效执行,并描述了实验中所用的优化。在 Atari 和 gridroboman 上,他们跳过学习式轨迹排序,直接使用高回报轨迹,因为检索数据已经针对正在训练的任务。他们还把状态选择限制在与智能体当前状态语义相似的状态上。
论文的限制部分直接指出一个相关约束:R2A 只查询检索数据集的一个子集,这限制了方法的通用性。作者还列出未探索的方向:用不同目标分别训练检索过程和智能体过程,而不是端到端训练;扩展到 StarCraft 这类复杂多智能体问题,其中检索过程可能在智能体之间共享;学习带有抽象内部动作和奖励的抽象模型,而不是查询数据集;以及在少样本设定中评估 R2A,即预训练编码器需帮助智能体快速适应新任务。论文没有报告少样本结果。
更快学习的结论适用于哪里
论文证据支持的是一项具体优先级,而不是笼统断言。检索最清晰的用武之地是多任务离线学习:gridroboman 任务较少时,增强智能体与基线难以区分,随着任务累积才出现差距,而这正是参数化模型要么扩大容量、要么从更少相关样本中提取更多信息的场景。消融实验指向检索到的信息而非新增容量,这才使该结论真正关于检索本身。
在 Atari 上,得到支持的结论是检索增强 R2D2 总体学习更快、得分更高,逐游戏表格显示提升幅度因游戏而异。在 BabyAI 中,得到支持的结论是在任务具有组合结构的环境中,多任务检索数据起了帮助而非损害。实际解读是:当一个智能体必须从固定数据集覆盖许多任务、且存在可找到的相关过往轨迹时,预期收益最大;同时应检查逐任务结果,而不是假定全面提升。
本文引用的文献
Retrieval-Augmented Reinforcement Learning
为离线 DQN 和在线 R2D2 智能体加入一个在过往经验数据集上学习的检索过程后,两者学习速度快于基线,离线多任务问题中的任务干扰得到避免,Atari 得分也更高。
