强化学习-06--A3C


A3C解决了Actor-Critic难以收敛的问题,同时更重要的是,提供了一种通用的异步的并发的强化学习框架,也就是说,这个并发框架不光可以用于A3C,还可以用于其他的强化学习算法。这是A3C最大的贡献。目前,已经有基于GPU的A3C框架,这样A3C的框架训练速度就更快了。

一、A3C算法

A3C算法伪代码

二、A3C算法与AC算法的区别

A3C算法与AC算法相比,主要在3处进行了优化:

1、异步训练框架(最大的优化)

经典的A3C异步训练框架图
global network是公共的神经网络模型,包含了actor网络和critic网络两部分的功能;下面有n个worker线程,每个线程里有和公共的神经网络一样的网络结构,每个线程会独立的和环境进行交互得到经验数据,这些线程之间互不干扰,独立运行。

n个worker线程和公共神经网络的更新情况:每个线程和环境交互得到一定的数据之后,就计算在自己线程里的神经网络损失函数的梯度,但是这些梯度并不更新自己线程里的神经网络,而是去更新公共的神经网络。

2、网络结构的优化

在AC算法中,使用了两个不同的网络即actor和critic;

在A3C算法中,把两个神经网络放到了一起,即输入状态为s,输出状态为价值v和对应的策略 π \pi π 。当然,仍然可以把actor和critic看做独立的两块,分别处理,如下图所示:
网络结构的优化

3、critic评估点的优化

在AC算法中,使用了Q(s,a)作为critic的评估点;

在A2C算法中,使用了优势函数 A ( s , a ) = Q ( s , a ) − V ( s ) A(s,a)=Q(s,a)-V(s) A(s,a)=Q(s,a)V(s),其中Q(s)的值一般可以通过单步采样近似估计: Q ( s , a ) = r + γ ∗ V ( s ′ ) Q(s,a)=r+\gamma*V(s') Q(s,a)=r+γV(s) ,V(s)的值需要通过critic网络学习得到,最终把优势函数 A ( s , a ) = Q ( s , a ) − V ( s ) = r + γ ∗ V ( s ′ ) − V ( s ) A(s,a)=Q(s,a)-V(s)=r+\gamma*V(s')-V(s) A(s,a)=Q(s,a)V(s)=r+γV(s)V(s)作为critic评估点;

在A3C算法中,采样更近一步,使用了N步采样,以加速收敛,此时A3C算法中的优势函数为 A ( s 0 , a ) = Q ( s 0 , a ) − V ( s 0 ) = r 0 + γ r 1 + . . . . . γ n − 1 r n − 1 + γ n V ( s n ) − V ( s 0 ) A(s_{0},a)=Q(s_{0},a)-V(s_{0})=r_{0}+\gamma r_{1}+.....\gamma^{n-1} r_{n-1}+\gamma^n V(s_{n})-V(s_{0}) A(s0,a)=Q(s0,a)V(s0)=r0+γr1+.....γn1rn1+γnV(sn)V(s0)。对于Actor和Critic的损失函数部分,和Actor-Critic基本相同。还有一点小地方修改就是在actor网络的损失函数地方增加了策略π的熵,最终的损失函数为:
在这里插入图片描述
超参数 β \beta β 为控制熵正规化的强度。

三、A3C的算法流程

A3C的算法流程图

四、A3C算法的优缺点:

优点
(1)拥有更好的收敛属性;
(2)在高纬度和连续动作孔家更加有效;
(3)可以学习stochastic policy。

缺点
(1)通常得到的都是局部最优解;
(2)评价策略通常不是非常高效,并且有很高的偏差。

五、额外收获

1、GPU与CPU有什么区别?

当需要大量计算的时候,需要用到GPU;

CPU的内部结构异常复杂,里面除了计算单元外,还有存储单元,控制单元,相比之下计算能力只是CPU很小的一部分功能。

参考链接:CPU和GPU的设计区别

2、多线程是什么意思?

关于理解什么是线程,可以参考下面的链接,我认为这个博主讲的非常浅显易懂,让人明白。
什么是多线程?如何实现多线程?

3、异步(asynchronous)和同步有什么区别?

同步:一个任务执行完成之后才能进行下一个任务。
异步:多个任务可以同时进行。

4、经验回放机制存在的问题

为了缓解传统策略梯度方法与神经网络结合时出现的不稳定性,各类深度策略梯度方法(DQN、DDPG、SVG等)都采用了经验回放机制来消除训练数据间的相关性。

但是经验回放机制存在两个问题:
(1)agent与环境的每次实时交互都需要耗费很多的内存和就计算力。
(2)经验回放机制要求agent采用离策略(off-policy)方法来进行学习,而off-policy方法只能基于就策略生成的数据进行更新。

此外,过往DRL的训练都依赖于计算能力很强的图形处理器(如GPU)。

六、总结

A3C的代码值得多加研究,里面涉及了多进程的代码,而且这次把代码敲两遍之后,感觉是有那么点意思了,但是深究发现代码之间还有好多细节自己也没有弄明白。这里我提一个小的建议就是把先把A3C的伪代码彻底搞明白,明白之后多看几遍莫烦视频讲解,然后把敲敲代码,把代码弄明白。越往后面越难,大家不要放弃啊!

参考链接:

强化学习(十三 )–AC、A2C、A3C算法
A3C的算法原理和算法流程
一文读懂 深度强化学习算法 A3C (Actor-Critic Algorithm)
深度强化学习——A3C

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值