论文阅读笔记之Massively Parallel Methods for Deep Reinforcement Learning
本文创新点:提出了一个对于深度强化学习的大规模分布式架构Gorila(General Reinforcement learning Architecture)
架构组成:用于产生behavior的并行actor组;
从经验池学习的并行learner组;
代表值函数和行为策略的分布式神经网络;
分布式经验池;
实验效果:训练效果好(进行了49个游戏,在41个游戏上超过了原DQN架构);
减少了训练时间
缺点:造价高,难搞
分布式架构Gorila
Actors:
该架构有Nact个不同的actor,并分别应用在Nact个相同的环境中
每个actor i 有自己的行为,并产生经验所以每个actor会有状态空间的不同部分(相互独立的actor之间自己行动,得到自己的下一状态,奖励值)。在T步之后这些actor会生成大约T·Nact个经验对。
每个actor有一个Q-network,用于选择行为,Q-network的参数会从参数服务器上定期同步更新
Experience replay memory:
考虑两种形式的经验池: = (
,
,
,
)
第一种:a local replay memory 存储每个actor的经验 = {
,...,
} 只应用在各自的actor machine上,如果每一个actor的经验池大小为M,那么总的可以存放M·Nact 条记录。
第二种:a global replay memory 将经验整合到分布式数据库中,与actor的个数无关,并且根据需求可以扩展伸缩容量,其代价就是增加了通信的开销
Learners:
包含Nlearn个learner,每个learner有一个Q-network,其作用是学习Q-network上的参数变化(同原DQN,从第一种经验池或者第二种经验池中选取k个样本),生成一个梯度向量gi与参数服务器进行通信,并且Q-network的参数会定期从参数服务器同步更新参数。
Parameter server:
类似于Distbelief(Google 的分布式深度学习系统),Gorila架构使用中央参数服务器来维护Q-network Q(s,a; )的分布式表示。
参数向量 每一维数值分布在不同的参数服务器上,总共有Nparam个参数服务器。其接收来自学习者的梯度向量gi,并利用异步随机梯度下降法更新自己机子上的参数(即参数子集)
Gorila架构并行化的方式上提供了相当大的灵活性:
可以让多个actor并行生成大量数据到 global replay memory中,然后使用单个learner处理该数据;
也可以让单个actor将生成的数据存到local replay memory中,然后让多个学习者并行处理这些数据,以便从该经验中尽可能有效地学习。
但是,为了避免任何单个组件成为瓶颈,Gorila架构通常允许任意数量的参与者,学习者和参数服务器生成数据,从该数据中学习,并以可扩展和完全分布的方式更新模型
我们在随后的实验中考虑的最简单的Gorila整体实例是捆绑模式,其中actor,经验池和learner之间存在一对一的对应关系(Nact = Nlearn)。 捆绑之间唯一的通信是通过参数:学习者将他们的gradient传达给参数服务器; 并且actor和learner中的Q-网络定期与参数服务器同步。
一些细节补充:
1、actor和learner的Q网络更新
参数服务器维护当前参数θ+,并且actor和learner包含当前Q-network Q(s; a;θ)的副本,这些副本在每个动作步骤之前从参数服务器同步:learner另外还有一个target Q-network Q(s; a;θ-),其在中央参数服务器中每N次梯度更新之后,从参数服务器θ+更新learner的target Q-network。(注意结构图中actor只有一个Q-network,learner有一个Q-network和一个target Q-network)
2、leaner中生成的梯度并不用于自己Q-network更新(不同于DQN)
leaner使用公式2中给出的DQN梯度生成梯度。但是,梯度不是直接应用,而是传递给参数服务器。 然后,参数服务器根据多个学习者累积进行更新。
解释:原DQN是Q-network产生Q估计值,由target Q-network生成max Q,我们称其为Q目标值,target网络是在Q-network进行了N步更新之后,复制参数到targetQ-network中,而Q-network是在每一步由上面公式2来直接利用梯度进行更新网络。
Gorila DQN,是Q-network产生Q估计值,由target Q-network生成max Q,我们称其为Q目标值,target网络是在参数服务器进行了N不更新之后,复制参数到targetQ-network中,而Q-network是在每步之前复制参数服务器的当前参数进行更新网络。
3、稳定性
虽然DQN训练算法旨在通过强化学习来确保训练神经网络的稳定性,但使用运行多个其他任务的大型机器群进行训练会带来额外的挑战。 Gorila DQN使用额外的安全措施来确保在节点消失的情况下的稳定性:网络流量的减速以及单个机器的减速。 利用一个参数来确保局部参数θ(使用θ计算梯度gi)与参数服务器中的参数θ+之间的最大时间延迟。
参数服务器将丢弃所有早于阈值的梯度。 此外,每个actor/learner保持其所看到的数据的绝对DQN损失的运行平均值和标准偏差,并丢弃具有高于平均值加上几个标准偏差的绝对损失的梯度。 最后,我们使用了AdaGrad更新规则(???)