龙空技术网

并行强化学习算法:A2C/A3C

布谷AI 46

前言:

此时大家对“a2c算法实现”大约比较重视,你们都需要剖析一些“a2c算法实现”的相关内容。那么小编在网络上收集了一些关于“a2c算法实现””的相关资讯,希望兄弟们能喜欢,我们快快来了解一下吧!

背景介绍

在DQN中,为了保证数据的有效性,采用了Experience Replay Memory机制:

但是这种机制,存在几个问题:

会占据大块的内存;学习是按mini-batch逐批串行学习的,数据吞吐量有限,学习速度慢;off-policy,目标网络是旧的参数,生成sample data的网络参数也与当前不同。

探索既能提高数据吞吐量,又能保证数据有效性的并行算法,很有必要。

A3C模型

Asynchronous Advantage Actor-Critic是一种异步的基于优势函数的Actor-Critic并行学习算法:Actor指需要学习的Policy π,Critic指需要学习的Value Function。

模型的结构如下:

同时学习policy π 和 state-value function,这里设计的是两个网络公用特征层,只是在FC层参数不同,这是一种常用做法,但共享特征层不是必须的。

A3C损失函数

损失函数一般包含三项:策略梯度损失、值残差和策略熵正则。

需要注意的是:在进行策略梯度时,优势函数是通过采样数据计算好的,与当前value网络参数无关;策略熵正则项能够为了保证Actions的多样性,增加环境探索能力。

A3C学习过程

如图:

from SARKAR A Brandom-ian view of RL

学习过程是这样的:

开启多个线程(Worker),从Global Network同步最新的网络参数;每个Worker独立地进行采样、训练学习;每个Worker周期性地(Tmax)更新独立更新Global Network的参数,就是将自己累积的梯度更新到Global Network,然后更新最新的网络参数;重复2、3,直到收敛。

每个Worker学习更新的伪代码如下:

from DeepMind A3C paper

A2C

Advantage Actor-Critic是A3C的一种简化形式:

开启多个线程(Worker),从Global Network同步最新的网络参数。每个Worker独立地进行采样。当数据总量达到mini-batch size时,全部停止采样。Global Network根据mini-batch的数据统一训练学习。每个Worker更新Global Network的参数。重复2~5。

同时,可以看到,A2C的统一学习和A3C每个Worker的训练学习,采样数据的Policy与当前学习的Policy参数是一致的,即on-policy学习。

总结

A3C/A2C是通过利用多线程并行独立采样数据,一方面保证数据的多样性,另一方面提高学习效率,尤其是A3C通过异步学习,发挥多核同时学习的优势。

由于没有了DQN的Experience Replay Pool的设计,系统不必占用大块内存,更方便工业落地。

标签: #a2c算法实现