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

  • Post author:
  • Post category:其他



目录


背景介绍


A3C模型


A3C损失函数


A3C学习过程


A2C


总结



背景介绍

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

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


1,

会占据

大块的内存




2,

学习是按mini-batch逐批

串行

学习的,数据吞吐量有限,学习

速度慢




3,


off-policy

,目标网络是旧的参数,生成sample data的网络参数也与当前不同。

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

A3C模型


A

synchronous

A

dvantage

A

ctor-

C

ritic是一种

异步

的基于

优势函数



A

ctor-

C

ritic

并行

学习算法:


A

ctor指需要学习的policy π,

C

ritic指需要学习的Value Function。

模型的结构如下:

同时学习policy π 和 state-value function,

这里设计的是两个网络公用特征层,只是在FC层参数不同,

这是一种常用做法,但共享特征层不是必须的。

A3C损失函数

损失函数一般包含三项:

策略

梯度损失、值

残差

和策略



正则。

需要注意的是:

在进行策略梯度时,优势函数是通过采样数据计算好的,与当前value网络参数无关;

策略熵正则项能够为了保证Actions的多样性,增加环境

探索

能力;

A3C学习过程

如图:

from ATRISHA SARKAR 《A Brandom-ian view of Reinforcement Learning towards strong-AI》

学习过程是这样的:


1,

开启多个线程(Worker),从Global Network同步最新的网络参数;


2,

每个Worker

独立

地进行采样、训练学习;


3,

每个Worker周期性地(Tmax)更新

独立

更新Global Network的参数,就是将自己累积的梯度更新到Global Network,然后更新最新的网络参数;


4,

重复2、3,直到收敛。

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

from DeepMind 《Asynchronous Methods for Deep Reinforcement Learning》

A2C


A

dvantage

A

ctor-

C

ritic是A3C的一种简化形式:


1,

开启多个线程(Worker),从Global Network同步最新的网络参数;


2,

每个Worker

独立

地进行采样;


3,

当数据总量达到mini-batch size时,

全部停止

采样;


4,

Global Network根据mini-batch的数据

统一

训练学习;


5,

每个Worker更新Global Network的参数


6,

重复2~5。

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

on-policy

学习。

总结

A3C/A2C是通过利用多线程

并行独立

采样数据,

一方面保证数据的

多样性



另一方面提高学习效率,尤其是A3C通过异步学习,发挥多核同时学习的优势;

由于没有了DQN的Experience Replay Pool的设计,系统不必占用

大块内存

,更方便工业落地。



版权声明:本文为huibiannihao原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。