又是一篇deepmind出品,这篇论文是提出了A3C的算法,按照论文的测试结果应该是state-of-the-art。这篇论文不是在算法上有创新,而是提出了一个新的算法框架,而且综合了以前几乎所有的深度增强学习的算法,可以算工程上集大成的一篇论文了。
首先我们看一下deepmind之前发表的Gorila(GerneralReinforcement LearningArchitecture),这是基于异步的分布式的增强学习训练的框架,每个节点都有actor和自己完整的环境(包括replaymemory),还有learner用来采样、计算梯度(通常情况)。梯度是需要同步给集中的参数服务器的,参数服务器统一更新网络参数,然后周期性更新各个并行异步的环境。deepmind在用DQN算法训练Atari的49个游戏时,用了100个节点和30个参数服务器,总共130台机器。
A3C的算法框架也是沿袭Gorila,但是不使用单独的节点来做agent和参数服务器,而是用了多核cpu来跑,在一台机器节点上跑,显然节省了大量的通讯开销(梯度和网络参数更新的量是非常巨大的)和无锁的方式更新参数和训练。
而采用并行的不同的actors-learners就像在探索环境的不同部分,而且,每个人都可以采用不同的探索策略,这样的话能更全方位发现策略。通过不同的线程跑不同的探索策略,众多的actor-learners同时在线更新参数就像一个单独的agent更新一样,但是我们就不在需要replay memory和experience replay。
因此采用这种算法有多个好处,首先减少了训练时间,我们可以发现训练的时间和线程数目基本上是线性关系。其次因为不再依赖experience relay可以让我们采用基于on-policy的增强学习算法。
论文验证了多种增强学习的算法和框架的结合,包括one-step Sarsa,one-step Q-learning, n-step Q-learning, and advantage actor-critic,我们也可以通过这些算法来理解一下框架。
异步one-step Q-learning的算法流程:
n-step Q-learning算法流程:
主角出场asynchronousadvantageactor-critic算法:
算法还是非常清楚的,基本就是以前的one-step Sarsa, one-step、Q-learning, n-step Q-learning, and advantage actor-critic和异步并行线程框架结合,但是多个线程跑起来,确实如前面所讲,性质和性能都会发生质的变化。
另外关于A3C算法有两点:一是在关于策略的目标函数中增加了策略的熵模型对局部收敛进行惩罚,增加了策略的探索性,具体细节可以相关论文。二是梯度更新采用RMSProp with shared statistics,公式如下:
看一下A3C效果:
关于A3C的效果测试论文还做了很多,另外还对效果进行了解释(主要是因为效果好的出乎想象),刷新了state-of-the-art。从最新的一些基于DRL的论文来看,主流都采用了A3C的算法。