前言:
此时大家对“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学习过程
如图:
学习过程是这样的:
开启多个线程(Worker),从Global Network同步最新的网络参数;每个Worker独立地进行采样、训练学习;每个Worker周期性地(Tmax)更新独立更新Global Network的参数,就是将自己累积的梯度更新到Global Network,然后更新最新的网络参数;重复2、3,直到收敛。
每个Worker学习更新的伪代码如下:
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算法实现