论文地址:

https://arxiv.org/pdf/1802.01561v2.pdf

论文《IMPALA: Scalable Distributed Deep-RL with Importance Weighted Actor-Learner Architectures》是基于论文《Safe and efficient off-policy reinforcement learning》改进后的分布式版本,基础论文《Safe and efficient off-policy reinforcement learning》的地址为:

https://arxiv.org/pdf/1606.02647.pdf

相关资料:

Deepmind Lab环境的python扩展库的安装:

https://www.cnblogs.com/devilmaycry812839668/p/16750126.html

=========================================

2022年10月13日  更新

官方的代码:https://gitee.com/devilmaycry812839668/scalable_agent

经过修改后将python2.7代码升级为python3.6版本后,通过配置已经可以在单机模式下运行,具体参见:读论文《IMPALA: Scalable Distributed Deep-RL with Importance Weighted Actor-Learner Architectures》——(续)实验部分

单机情况下运行:

python experiment.py --num_actors=1 --batch_size=1

成功运行:

=========================================

官方的代码地址:(现已无法运行

https://gitee.com/devilmaycry812839668/scalable_agent

需要注意的一点是这个offical的代码由于多年无人维护,现在已经无法运行,只做留档之用。

=========================================

2022年10月10日再读

本文主要做的工作就是off-policy correction。本文给出了大量的公式证明,不过说实话,也就看了个大概,细节没有看懂,说一下一些自己的理解。

其实本文的主要的内容就是on-policy的AC算法分布式改进,我们知道由于分布式计算会引起非常多的同步问题,由于AC算法本身是on-policy的,所以分布式的AC会对网络的同步操作有较强的要求,但是为了实现AC算法的高吞吐量,A3C算法被提出。A3C算法采用不强制同步的方法对AC算法进行分布式计算,这样就势必会造成behaviour policy和target policy的不同,甚至分布的差距很大,而这种差距对算法的性能会造成harmful,为此A2C算法被提出,与A3C一样其本质就是对AC算法进行分布式计算,但是不同于A3C算法,A2C算法强制 different 的actor需要定期同步target policy,这样就使A2C算法成了AC算法在算法性能上不受坏的影响的分布式方法。但是A2C算法虽然保证了AC算法的on-policy本质特性,但是这无疑会影响算法的吞吐量,在计算的时钟周期上会有很大的提升空间。为此《IMPALA: Scalable Distributed Deep-RL with Importance Weighted Actor-Learner Architectures》论文提出一种新的AC算法的分布式方法,在同步上采用A3C的方式,不对不同actor采用强制同步,但是对于由此造成的behaviour policy和target poliy的分布不同采用了一种off-policy correction,格外说的一点是在论文IMPALA中主要的对比算法(baseline)使用的是A3C,但是从算法的特性上来看IMPALA算法的真正应该的对比算法是A2C,这样才能更好的保证公平性,对于IMPALA和A2C算法性能的对比在论文中还是有很大空白空间的。

--------------------------------------------

AC算法的基本原理(公式):

这个公式的背景是对环境的充分抽样,也就是理想上可以认为是假设对所有的环境状态都进行了充分的遍历,当然这个假设是在现实计算中难以实现的,现实计算中都是对一个特定policy下对环境采取一点episodes的采样,然后更新获得一个新的policy,我们是无法在一个policy下就对环境进行足够充分的采样的,这是现实计算所不能够允许的。

在实际的AC算法计算中,采用的真正的计算公式为:

通过上面的计算公式也可以看出,AC算法是on-policy的,但是如果训练的策略在收到采样数据之前已经update几次了,那么再用这个采样的数据来训练policy就变成了off-policy。虽然我们可以像A3C算法那样忽略由于采样时延和不强制同步造成的off-policy,而是已然按照on-policy的方式进行计算,但是这样势必造成的算法性能损失和训练的不稳定性,为此可以采样重要性采样的方式来对采样的数据进行修正,由此得到使用重要性采样修正后的off-policy来近似on-policy,公式:

其中,u为behaviour policy,pi为target policy。

  为重要性采样的系数。

  为target policy策略下的Q值。

通过上面的公式我们可以知道,这个target policy策略下的Q是唯一不能通过采样直接获得的,而且我们也不能直接从behaviour policy的数据上来训练得到这个Q值,因为这个Q值指的是target policy下的。

本文的主要工作就是在《Safe and efficient off-policy reinforcement learning》基础上给出了off-policy下target policy的V值的计算。《Safe and efficient off-policy reinforcement learning》给出了一种off-policy下target policy的Q值的计算方式。

可以说本文的主要工作就是给出了一种off-policy下target policy的Q值的计算方式,公式:

其中,vs为修正后近似的target policy下的state value值,V则是target policy下的state value值。

本文假设vs近似等于V,vs所属的修正后的target policy为:

可以看到,修正后的target policy和真正的target policy是不同的,修正后的target policy为:

而target policy则为:

而behaviour policy为:

可以看到,这三个policy是不同的。

本文的假设和推导就是,target policy 和修正后的target policy 是相近的,在经过足够的训练后收敛时,target policy和修正后的target policy是相当的。

------------------------------------------------------------------

对V的训练公式为:(V为target policy,V是有参数的,修正后的target policy的state value是vs,vs也是基于V的参数的)

vs是在target policy的V的基础上进行修正的,修正的方法就是在V的数值基础上加上 behaviour policy采样下的数据在target policy下的TD error乘以系数,具体:

为什么这个vs的策略为:

实在是没有看懂,这个地方也就忽略吧。

----------------------------------------------------------------------------------

在训练时:

先对target policy下的V进行训练,因为作者证明了target policy收敛到最优策略时vs等于V,因此这里对V的训练采用了下面的方式:

对target policy的策略参数进行训练:

因为作者证明了target policy收敛到最优策略时vs等于V,因此target policy下的q为:

所以使用重要性采样后的策略训练为:

而这个训练公式也可以写为上面刚才给出的模式:

--------------------------------------------------------------

可以说本文的主要贡献就是给出了一种off-policy下通过behaviour policy采样的数据表示、训练的修正后的target policy,然后又通过是修正后的target policy下的state value近似于target policy下的state value,来获得对target policy下的q值表示。

=========================================

读论文《IMPALA: Scalable Distributed Deep-RL with Importance Weighted Actor-Learner Architectures》的更多相关文章

  1. 读论文《BP改进算法在哮喘症状-证型分类预测中的应用》

    总结: 一.研究内容 本文研究了CAL-BP(基于隐层的竞争学习与学习率的自适应的改进BP算法)在症状证型分类预测中的应用. 二.算法思想 1.隐层计算完各节点的误差后,对有最大误差的节点的权值进行正 ...

  2. BP神经网络算法改进

    周志华机器学习BP改进 试设计一个算法,能通过动态调整学习率显著提升收敛速度,编程实现该算法,并选择两个UCI数据集与标准的BP算法进行实验比较. 1.方法设计 传统的BP算法改进主要有两类: - 启 ...

  3. 【Java】 大话数据结构(8) 串的模式匹配算法(朴素、KMP、改进算法)

    本文根据<大话数据结构>一书,实现了Java版的串的朴素模式匹配算法.KMP模式匹配算法.KMP模式匹配算法的改进算法. 1.朴素的模式匹配算法 为主串和子串分别定义指针i,j. (1)当 ...

  4. 大话数据结构(8) 串的模式匹配算法(朴素、KMP、改进算法)

    --喜欢记得关注我哟[shoshana]-- 目录 1.朴素的模式匹配算法2.KMP模式匹配算法 2.1 KMP模式匹配算法的主体思路 2.2 next[]的定义与求解 2.3 KMP完整代码 2.4 ...

  5. Self-organizing Maps及其改进算法Neural gas聚类在异常进程事件识别可行性初探

    catalogue . SOM简介 . SOM模型在应用中的设计细节 . SOM功能分析 . Self-Organizing Maps with TensorFlow . SOM在异常进程事件中自动分 ...

  6. POJ 3155 Hard Life(最大密度子图+改进算法)

    Hard Life Time Limit: 8000MS   Memory Limit: 65536K Total Submissions: 9012   Accepted: 2614 Case Ti ...

  7. 排序系列 之 简单选择排序及其改进算法 —— Java实现

    简单选择排序算法: 基本思想: 在待排序数据中,选出最小的一个数与第一个位置的数交换:然后在剩下的数中选出最小的数与第二个数交换:依次类推,直至循环到只剩下两个数进行比较为止. 实例: 0.初始状态 ...

  8. bp神经网络算法

    对于BP神经网络算法,由于之前一直没有应用到项目中,今日偶然之时 进行了学习, 这个算法的基本思路是这样的:不断地迭代优化网络权值,使得输入与输出之间的映射关系与所期望的映射关系一致,利用梯度下降的方 ...

  9. 读论文系列:Deep transfer learning person re-identification

    读论文系列:Deep transfer learning person re-identification arxiv 2016 by Mengyue Geng, Yaowei Wang, Tao X ...

  10. KMP及其改进算法

    本文主要讲述KMP已经KMP的一种改进方法.若发现不正确的地方,欢迎交流指出,谢谢! KMP算法的基本思想: KMP的算法流程: 每当一趟匹配过程中出现字符比较不等时,不需回溯 i 指针,而是利用已经 ...

随机推荐

  1. jsp表单提交中的逻辑判断

    针对于表单 通常情况下  我们都是表单提交 提交的路径为以下: 提交的按钮的type="submit" 当我们想在表单提交前增加一个逻辑判断   我们就需要把button中的typ ...

  2. NumPy 舍入小数、对数、求和和乘积运算详解

    舍入小数 在 NumPy 中,主要有五种方法来舍入小数: 截断 去除小数部分,并返回最接近零的浮点数.使用 trunc() 和 fix() 函数. 示例: import numpy as np arr ...

  3. IDEA生成类和方法注释模板详细说明 绝对好用

    吐槽 今天心血来潮,将使用了很久的IDEA旗舰版卸载了,想换社区版用一段时间,毕竟社区版开源免费.精简不卡顿,如果够用的话以后就省去了破解的烦恼,而且可以紧跟官网使用最新版 旧的IDEA配置忘记保存了 ...

  4. 如何应用 matrix3d 映射变幻

    如何应用 matrix3d 映射变幻 先上 demo 记得是在 2015 看到过的一个 html5 演示效果, 很惊艳 当时没明白如何实现,现在我会了,做一个类似的: 又弄了一个拖动的 demo 我数 ...

  5. css定位 position:sticky

    今天在做css定位的时候遇到一个问题,我想用fixed定位下来,但是发现这个时候定义的百分百宽度不随着父元素走了而是整个屏幕的百分百,这个就很尴尬了,也不能固定宽度吧,毕竟还要宽度自适应. 这个时候发 ...

  6. python3 安装pymssql失败 pip3 install pymssql

    python3 安装pymssql失败 报错信息: AttributeError: module 'platform' has no attribute 'linux_distribution' 解决 ...

  7. ubuntu 同时安装python2 和 python3 版本的 gunicorn

    前言 最近在学习使用 gunicorn 部署 flask 项目.发现使用 pip3 安装完 gunicorn后,如如果再使用 pip2 安装 gunicorn,后安装的 gunicorn 就会覆盖掉原 ...

  8. SpringCloud学习篇

    什么是SpringCloud Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成.Spring cloud Task,一个生 ...

  9. BigDecimal加减乘除、比较

    // 加 a+b a.add(b); // 减 a-b a.subtract(b); // 乘 a*b a.multiply(b); // 除 a/b a.divide(b); // 绝对值 a.ab ...

  10. yb课堂实战之轮播图接口引入本地缓存 《二十一》

    轮播图接口引入缓存 CacheKeyManager.java package net.ybclass.online_ybclass.config; /** * 缓存key管理类 */ public c ...