• 强化学习 IMPALA算法


    论文:https://arxiv.org/pdf/1802.01561.pdf

    参考:https://zhuanlan.zhihu.com/p/58226117

    https://zhuanlan.zhihu.com/p/34074929

    以下是论文的选择性(个人向)翻译QAQ

    摘要:

    在这篇论文中,我们致力于解决使用单强化学习智能体和一组参数来解决多任务问题。LMPALA(Importance Weighted Actor-Learner Architecture)是为了解决增长的数据量和训练时间而出现的,它不但在单机训练的时候能更有效的利用资源,而且在数千台机器的训练中不牺牲数据效率和资源利用率。通过将acting和learning解耦,并和一种叫V-trace的新矫正方法结合,我们获得了稳定且高的吞吐量。我们在DMLab-30(这是DeepMind Lab的一个有30个任务的环境)和Atari-57中用多任务强化学习证明了IMPALA的有效性,我们的结果表明IMPALA在只需要更少的数据就能比以前的智能体表现更好。

    简介:

    深度强化学习方法通过试错法已经精通很多领域。虽然围棋和Atari的进步引人注目,但是由于智能体在训练的时候是独立的,所以进步就只在单一领域。我们有兴趣开发一种既能掌握各种任务集也能适应各种环境的新方法。

    训练一个智能体处理多个任务的主要挑战是可扩展性。因为现行的方法像A3C或者UNREAL要精通一个领域需要花大量的时间,一次在几十个领域上训练他们太慢了。

    我们在表1展示了IMPALA。IMPALA足以胜任数千个机器的学习,并且不牺牲数据效率和资源利用率。

     基于A3C的智能体,worker从中心参数服务器获取参数,IMPALA的actor上传轨迹经历(状态,动作,回报的序列)给一个集中学习的learner。因为在IMPALA中learner能获得完整的轨迹经历,当我们并行且独立执行操作时,我们可以用GPU通过mini-batch去执行更新,这种解耦的结构可以获得很高的吞吐量。然而,由于在几次更新之后产生轨迹的策略会落后于learner的策略,学习变成了off-policy。因此,我们引入V-trace离线actor-critic算法来矫正这个有害差异。

    通过结合可拓展结构和V-trace, IMPALA获得了非常高的吞吐量,使得他比单机的A3C快30倍,更关键的是,IMPALA也比A3C数据利用率更高,在超参数和网络结构的健壮性更好,这让我们能构建更深的网络。我们在DIMab-30上用训练一个智能体来验证IMPALA的有效性。

    2、关联网络

    最早提升DRL规模的尝试依赖于多个worker的分布式异步SGD。例如分布式A3C和Gorila,一种分布式版本的DQN。异步SGDRL的替代方案包括进化算法,分布式BA3C和有分布式存储池但是同步的learner的Ape-X。

    还有一种拓宽强化学习的方式是通过使用GPU。最简单的方案之一是Batched A2C。在每一步中,Batched A2C产生一个batch的动作并应用于环境中。因此,每个batch中最慢的环境代表了每一步的时间。换句话说,环境速度的高方差会严重限制性能。Batched A2C在Atari环境中运行的非常好,因为相比于复杂的张量计算,回报和游戏逻辑很容易计算。然而,在更复杂的视觉或物理环境中,模拟的速度可能会变得更慢,而且每一步所需的时间差异也很大。环境或许也会有可变长的episode使得初始化episode的时候变慢。

    和IMPALA结构最像的是GA3C,它也使用了异步数据收集以便更好的利用GPU。它通过使用动态batch将acting和gradient calculation解耦,forward和gradient backward解耦。actor/learner在GA3C是异步的,这导致了学习过程中的不稳定,只通过在动作的概率熵添加小常数来缓解。作为对比,IMPALA使用了更好的V-trace算法。

    和之前最接近的算法熵Retrace算法,它介绍了一种对多步RLoff-policy进行修正的方法,它已经被使用很多个智能体结构中。Retrace需要学习状态-动作的Q值以便让off-policy是正确的。然而,很多的actor-critc方法例如A3C学习状态函数V替代状态-动作函数Q。V-trace是状态价值函数。

    3、IMPALA

    IMPALA使用了actor-critic架构来学习policy和baseline。产生经验的过程从学习参数中解耦。这个结构包含若干组actor,不断产生轨迹经历,之后一个或者更多的learner使用这些从actor送来的经历进行off-policy学习。

    在每个轨迹的开始,一个actor更新自己的本地policy为最新的learner的policy,并在环境中运行n步。在n步之后,actor通过一个队列将状态-动作-回报和策略分布并且初始化LSTM给learner。learner通过一组轨迹持续更新侧拉,每一组都是从很多的actor中收集到的。这个简单的结构使learner可以使用GPU来加速,actor也可以分布在很多机器上。然而,learner的policy是可能比actor的policy更新的,因此在actor和learner之间需要policy-lag。V-treace矫正这个lag获得了极高的吞吐率也保持的数据的有效性。通过使用actor-learner结构,提供了像分布式A3C算法那样的容错率,但是由于actor发送的是观察数据而不是参数/梯度所以通信开销更低。

    随着引入非常深的模型结构,单个GPU的速度经常变成训练中的限制因子。IMPALA可以和分布式learner一起有效训练大型神经网络。参数分布在learner中,actor并行的从所有的learner中检索参数而只将观察到的数据送给一个learner。IMPALA使用同步参数更新,这在扩展至很多机器时对保持数据有效性很重要。

    3.1. 效率优化

     GPU和多核CPU擅长少量的大的并行操作,而不是小型操作。因为IMPALA的learner是在整个的轨迹batch上执行更新,这使得它可以比在线智能体A3C并行执行更多计算。比如,一个典型的DRL智能体先有一个卷积网络,之后跟着LSTM网络,在LSTM后跟一个全连接层。IMPALA的learner通过将时间纬度变为batch纬度将所有输入并行放入卷积网络。与此相似,当所有的LSTM状态被计算后,输出层也将并行的执行所有的时间步。这个优化将有效的batch大小提升至上千。基于LSTM的智能体通过利用网络结 构依赖和操作融合使learner也可以获得有效的加速。

    4、V-trace

    off-policy学习在解耦的分布式actor-learner结构中是非常重要的,因为actor产生动作和learner产生梯度存在时间差。为此,我们为learner推出一个新的off-policy actor-critic算法:V-trace

    首先,让我们介绍一些注意事项。我们考虑马尔可夫过程中的折扣无限水平问题,当目标是找到一个策略使得最大化未来回报总和的期望。

     off-policy RL算法的目标是通过其它策略mu来生成轨迹,mu叫做behaviour policy, 学习pi的价值函数叫做目标策略。

     4.1 V-trace 的目标

    V-trace的目标的定义式:

     当on-policy时会变成n步自举法的更新。

    需要注意的是ci和ρi用了不同的规则,ρt在了时序差分误差中并定义了这个更新规则的不动点。

    当ρ趋向0时,策略就会变成behaviour policy

    ci和ρ很像。ci用来测量时序差分误差能多大程度的影响更新。两种策略相差越大,方差就会越大。ci可以用来减小方差,但是不会影响侧策略的收敛(策略收敛只会受ρ的影响)

     4.2 Actor-Critic算法

  • 相关阅读:
    判断一个点是否在一个不规则多边形内算法
    vue-cli 3.0 安装和创建项目流程
    微信小程序分享朋友圈的实现思路与解决办法
    vue2.0中关于active-class
    Nginx服务启动脚本
    Linux系统优化
    URL检测脚本
    Mysql读写分离php脚本
    Memcahed服务异常监控脚本
    一致性哈希算法PHP测试片段
  • 原文地址:https://www.cnblogs.com/pkgunboat/p/14606260.html
Copyright © 2020-2023  润新知