本文在回顾分布式深度强化学习 DDRL 基本框架的基础上,重点介绍了 IMPALA 框架系列方法。
行动者(Actors):通过与环境互动产生数据(轨迹或梯度)。 学习者(Learners):消耗数据(轨迹或梯度),执行神经网络参数更新。 协调者(Coordinator):协调数据(参数或轨迹),控制 learner 和 actor 之间的通信。
同步:全局策略参数的更新是同步的,策略参数的调用(由 actor 调用)也是同步的,即不同的 actor 共享相同的最新全局策略。 异步:全局策略参数的更新是异步的,或者说策略更新(由 learner 进行)和拉动(由 actor 进行)是异步的,即 actor 和 learner 通常拥有不同的策略参数。
独立训练:将其他学习 agent 视为环境的一部分,对每个 agent 进行独立训练。 联合训练:将所有 agent 作为一个整体进行训练,同时考虑 agent 交流、奖励分配、集中训练与分布式执行等因素。
Self-play based:不同 agent 共享相同的策略网络,agent 通过与自己过去的版本对抗来更新当前一代的策略。 Population-play based:不同的 agent 拥有不同的策略网络,或称为 population,agent 通过与其他 agent 或 / 和其过去的版本对抗来更新其当前一代的策略。
行为策略(Behavior Policy)就是智能体用来和环境交互产生样本的策略;目标策略(Target Policy)就是根据行为策略产生的样本来不断学习和优化的策略,即训练完成最终用来使用的策略。
(1)
(4)
用于稳定 agent 目标的 target network 循环缓冲 circular buffer 有截断的重要性采样
使用 CPU 进行神经网络推理:actor 通常使用 CPU(偶尔在昂贵的环境中使用 GPU)。众所周知,CPU 对神经网络的计算效率较低。当模型的计算需求增加时,用于推理的时间开始超过环境 step 计算的时间。解决方法是增加 actor 的数量,但这会增加成本并影响收敛性。 资源利用效率低:Actor 需要在两个任务(环境 step 和网络推理)之间进行切换。这两项任务的计算要求往往不尽相同,从而导致资源利用率低或 actor 运行速度慢。例如,有些环境本身是单线程的,而神经网络则很容易并行化。 带宽要求:actors 和 learners 之间需要传输模型参数、循环状态和观测结果。相对于模型参数,观测轨迹的大小往往只占几个百分点。此外,基于内存的模型会发送大量状态,从而增加带宽需求。