一、问题与贡献

存在的问题 
不同类型的深度神经网络为 DRL 中策略优化任务提供了高效运行的表征形式。 为了缓解传统策略梯度方法与神经网络结合时出现的不稳定性,各类深度策略梯度方法(如 DDPG、 SVG 等)都采用了经验回放机制来消除训练数据间的相关性。

然而经验回放机制存在两个问题:

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

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

论文贡献

  1. 异步地执行多个 agent, 通过并行的 agent 经历的不同状态,去除训练过程中产生的状态转移样本之间的关联性;

  2. 只需一个标准的多核CPU即可实现算法,在效果、时间和资源消耗上都优于传统方法。

适用范围: 
off-policy:sarsa, n-step methods, actor-critic 
on-policy:Q-Learning 
离散、连续型动作控制

二、RL背景知识

Value-Based(或Q-Learning)和Policy-Based(或Policy Gradients)是强化学习中最重要的两类方法,区别在于

  • Value-Based是预测某个State下所有Action的期望价值(Q值),之后通过选择最大Q值对应的Action执行策略,适合仅有少量离散取值的Action的环境;
  • Policy-Based是直接预测某个State下应该采取的Action,适合高维连续Action的环境,更通用;

根据是否对State的变化进行预测,RL又可以分为model-based和model-free:

  • model-based,根据State和采取的Action预测接下来的State,并利用这个信息训练强化学习模型(知道状态的转移概率);
  • model-free,不需对环境状态进行任何预测,也不考虑行动将如何影响环境,直接对策略或Action的期望价值进行预测,计算效率非常高。

因为复杂环境中难以使用model预测接下来的环境状态,所以传统的DRL都是基于model-free。

1. Value-Based & model-free

t时刻开始到情节结束时,总回报:

Rt=∑k=0∞γkrt+k

状态价值函数

Vπ(s)=E[Rt|st=s]

动作价值函数

Qπ(s,a)=E[Rt|st=s,a]

DQN的Loss Function

L(θi)=E[(TargetQ−Q(s,a;θi))2]
TargetQ=r+γmaxa′Q(s′,a′;θ−i)

上面的Loss Function基于one-step Q-learning。 
所谓one-step是计算Target Q值时只看下一个State,而n-step则是计算了后续n步的State,即

TargetQ=rt+γrt+1+⋯+γn−1rt+n−1+γnmaxa′Q(s′,a′;θ−i)

One-step的缺点: 
只直接影响产生回报r的pair(s, a)的Value,其他pairs的Value只能通过Q(s,a)间接影响,造成学习速度很慢。

n-step的优点: 
一个回报r直接影响先前n个pairs,学习更有效。

2. Policy-Based & model-free

直接将策略参数化

π(a|s,θ)

通过迭代更新  θ ,使总回报期望  E[Rt]  梯度上升。 
具体地 

①中,π(at|st;θ)表示在 st,θ 的情况下选择动作 at 的概率。概率的对数乘以该动作的总回报 Rt,对 θ 求梯度,以梯度上升的方式更新 θ 。该公式的意义在于,回报越高的动作越努力提高它出现的概率。

但是某些情形下,每个动作的总回报 Rt 都不为负,那么所有的梯度值都大于等于0,此时每个动作出现的概率都会提高,这在很大程度下减缓了学习的速度,而且也会使梯度的方差很大。因此需要对 Rt 使用某种标准化操作来降低梯度的方差。

②具体地,可以让 Rt 减去一个基线 b(baseline),b 通常设为 Rt 的一个期望估计,通过求梯度更新 θ,总回报超过基线的动作的概率会提高,反之则降低,同时还可以降低梯度方差(证明略)。这种方式被叫做行动者-评论家(actor-critic)体系结构,其中策略 π 是行动者,基线bt 是评论家。

③在实际中,Rt−bt(st) 可使用动作优势函数 Aπ(at,st)=Qπ(at,st)−Vπ(st)代替,因为 Rt 可以视为 Qπ(at,st) 的估计,基线 bt(st) 视为 Vπ(st)的估计。

三、异步RL框架

论文共实现了四种异步训练的强化学习算法,分别是one-step Q-learning, one-step Sarsa, n-step Q-learning, and advantage actor-critic(A3C)。

不同线程的agent,其探索策略不同以保证多样性,不需要经验回放机制,通过各并行agent收集的样本训练降低样本相关性,且学习的速度和线程数大约成线性关系,能适用off-policy、on-policy,离散型、连续型动作。

Asynchronous one-step Q-learning 

Asynchronous one-step Sarsa 
 
相比Q-learning的算法只有一处不同。 
Sara是on-policy,Q-learning是off-policy。

Asynchronous n-step Q-learning 

A3C 

A3C更新公式有两条,一条梯度上升更新策略 π 参数,如前面介绍actor-critic体系结构,

∇θ′logπ(at|st;θ′)A(st,at;θ′,θ′v)

A(st,at;θ′,θ′v) 是优势函数的估计(算法中表示为  R−V(si;θ′v) )

A(st,at;θ′,θ′v)=∑i=0k−1γirt+i+γkV(st+k;θ′v)−V(st;θ′v)

θ′  是策略  π  的参数, θ′v  是状态值函数的参数。 k  是可变化的,上界由n-step决定,即n。 
在实际操作中,论文在该公式中加入了策略  π  的熵项 β∇θ′H(π(st;θ′)) ,防止过早的进入次优策略。

另一条公式是使用TD方式梯度下降更新状态值函数的参数,即算法中的

∂(R−V(si;θ′v))2/∂θ′v

注意: 
A3C算法中已经没有了TargetNet,而且在控制离散动作时 π(at|st,θ) 和 Vπ(st;θv)用的是同一个网络,在网络的输出层分 π 和 Vπ。

四个算法都是等所有的异步agent执行完后再用累计的梯度信息更新网络参数。其中n-step的算法(后两个)需要每个异步agent复制一份子网络,每个anget执行n步后倒退算出每步的总回报和相关梯度,用累计梯度更新主网络参数(如果不复制子网络,则等单个agent执行完n-step耗时太多,而one-step可忽略这个影响)。

四、实验

论文共对4个实验平台进行了测试,分别是Atari 2600、TORCS 3D 赛车模拟器、MuJoCo 物理模拟器、Labyrinth (3D 迷宫),在这些实验中A3C取得了非常好的效果。

因为我当时主要研究的是连续动作控制,所以详细说一下MuJoCo的实验。

在论文中,相比Atari 2600离散动作控制的A3C,MuJoCo连续动作控制的A3C主要不同点在于:

网络输出层 
在离散动作控制中,策略的输出使用的是Softmax,对应每个动作被选中的概率。

而连续动作难以用Softmax表示动作的概率,但可以用正态分布表示,因此策略网络输出分两部分,一个是正态分布均值向量 μ (对应多维情况),另一个是正态分布方差标量 σ2。训练时使用两者构成的正态分布采样动作,实际应用时用均值 μ当动作。

(在实验中,我发现使用网络确定的 σ2很难训练出好的策略,可能是因为 σ2 容易很快变小,所以我通常用自己确定的 σ2。)

策略和值函数 
在其他实验里,策略网络和值函数网络是用一个,只是输出层分开;而在MuJoCo连续动作控制中,两个网络是分开的。

更新方式 
因为MuJoCo实验中情节长度一般最多只有几百步,所以将单个情节的所有样本作为一个minibatch更新网络

五、GPU版A3C

M Babaeizadeh等人提出了一种混合CPU/GPU版的A3C,并提供开源代码https://github.com/NVlabs/GA3C。

原版A3C存在的问题:

  • 原版A3C未用到GPU,而GPU可以加快网络训练速度;
  • 原版A3C训练时需要给每个并行的agent复制一份子网络来收集样本计算累计梯度,当并行的agent数量很多时耗内存。

     
    如上图所示,左边 (a) 是原版A3C,需要每个agent复制一份模型;右边 (b) 是GA3C,只需要一个模型,用GPU训练或预测动作。

具体地,GA3C主要分为:

  • Agent,和A3C功能一样,收集样本,但是不需要各自复制一份模型,只需要在每次选择Action前,将当前的State作为请求加入Prediction Queue;执行动作n步后倒退算出每步的总回报,得到的n个(st,at,R,st+1)加入 Trainning Queue;
  • Predictor,将 Prediction Queue 中的请求样本出队作为minibatch填入GPU的网络模型中,将模型预测的Action返回给各自的Agent,为减少延迟,可以使用多线程并行多个predictiors;
  • Trainer,将 Trainning Queue 的样本出队作为minibatch填入GPU的网络模型中,训练更新模型,同样,为减少延迟,可以使用多线程并行多个trainers;

GA3C带来的问题:

  • 需要协调Agent、Predictior和Trainer的个数;
  • 可能存在策略延迟,即产生当前训练样本的策略非当前要更新的策略,导致算法不稳定。

实验表明,相比A3C,GA3C的训练速度大幅度提升,且减少内存消耗。

强化学习——A3C,GA3C相关推荐

  1. 深度强化学习-A3C算法

    论文地址:https://arxiv.org/pdf/1602.01783v1.pdf A3C(异步优势演员评论家)算法,设计该算法的目的是找到能够可靠的训练深度神经网络,且不需要大量资源的RL算法. ...

  2. 今晚8点直播 | 深入浅出理解A3C强化学习

    强化学习是一种比较传统的人工智能手段,在近年来随着深度学习的发展,强化学习和深度学习逐渐结合在了一起.这种结合使得很多原来无法想象的工作有了可能,最令我们瞩目的莫过于AlphaGo战胜李世石,以及Op ...

  3. 今晚直播 | 深入浅出理解A3C强化学习

    强化学习是一种比较传统的人工智能手段,在近年来随着深度学习的发展,强化学习和深度学习逐渐结合在了一起.这种结合使得很多原来无法想象的工作有了可能,最令我们瞩目的莫过于AlphaGo战胜李世石,以及Op ...

  4. 公开课报名 | 深入浅出理解A3C强化学习

    强化学习是一种比较传统的人工智能手段,在近年来随着深度学习的发展,强化学习和深度学习逐渐结合在了一起.这种结合使得很多原来无法想象的工作有了可能,最令我们瞩目的莫过于AlphaGo战胜李世石,以及Op ...

  5. 深入浅出强化学习_直播 | 深入浅出理解 A3C 强化学习

    强化学习是一种比较传统的人工智能手段,在近年来随着深度学习的发展,强化学习和深度学习逐渐结合在了一起. 这种结合使得很多原来无法想象的工作有了可能,最令我们瞩目的莫过于 AlphaGo 战胜李世石,以 ...

  6. 强化学习(十五) A3C

    在强化学习(十四) Actor-Critic中,我们讨论了Actor-Critic的算法流程,但是由于普通的Actor-Critic算法难以收敛,需要一些其他的优化.而Asynchronous Adv ...

  7. 强化学习之AC系列算法(AC、A2C、A3C)

    文章目录 AC算法 AC A2C A3C AC算法 我们之前讲过基于价值的强化学习,我们也讲过基于策略的强化学习,这节课所讲的AC系列算法就是同时使用了这两种方法包含有:AC--Actor Criti ...

  8. 机器学习-54-RL-06-Actor-Critic(强化学习-A2C,A3C,Pathwise Derivative Policy Gradient)

    文章目录 Actor-Critic Actor-Critic Review – Policy Gradient Review – Q-Learning Actor-Critic Advantage A ...

  9. 强化学习算法A2C(Advantage Actor-Critic)和A3C(Asynchronous Advantage Actor-Critic)算法详解以及A2C的Pytorch实现

    一.策略梯度算法回顾 策略梯度(Policy Gradient)算法目标函数的梯度更新公式为: ▽ R ˉ θ = 1 N ∑ n = 1 N ∑ t = 1 T n ( ∑ t ′ = t T n ...

  10. 【强化学习】Asynchronous Advantage Actor-Critic(A3C)

    1 A3C简介 A3C全称Asynchronous Advantage Actor-Critic,顾名思义,它采用的是Actor-Critic的形式(需要回顾Actor-Critic的,可以点击这里[ ...

最新文章

  1. 《需求工程——软件建模与分析》读后感之三
  2. c ++查找字符串_C ++朋友功能| 查找输出程序| 套装1
  3. 【C++】For循环同时初始化两个变量
  4. 第二阶段团队项目冲刺第五天
  5. bzoj 3172: [Tjoi2013]单词 AC自动机
  6. 20 个百无一用的 Firefox 扩展
  7. Google 开源 VHP 震动触觉平台,降低触觉设备开发难度
  8. python笔记-find()函数的用法
  9. 消息系统——极光推送http://docs.jiguang.cn/
  10. 数据恢复原来是可以免费的!
  11. 老祖宗留下来的千古绝句,读完终身受益
  12. 二元函数泰勒公式例题_泰勒公式与函数展开的操作方法
  13. Golang的基础数据类型
  14. Java传输文件使用Base64优化传输速率。
  15. MySQL练习题全部
  16. 计算机考试打字题题库6,2018四至六年级电脑测试题
  17. 前端表单七牛云php,记录一下前端分片上传七牛云踩过的坑
  18. yershop商城系统开发(二)——新浪SAE配置
  19. 全球10位著名CEO成功之道-------皮埃尔·奥米迪亚
  20. Lazada开店流程介绍及需要的资料要求

热门文章

  1. idea 搭建flutter 安卓开发环境(因为有idea就不需安装Android Studio)
  2. pdf编辑器怎么使用
  3. cryptographic algorithms
  4. MATLAB连接API接口
  5. 什么是数据地图、血缘分析和数据资产?
  6. 开源在线客服系统源码h5|thinkphp在线客服完整源码|网页在线客服源码
  7. 基于ELK 7.50搭建elastalert 监控报警和权限控制
  8. 目前比较流行的网站开发框架
  9. Silvaco仿真学习
  10. 人工智能属于计算机科学研究方向,《人工智能》课程简介