G-A3C的代码:

https://gitee.com/devilmaycry812839668/gpu_a3c

论文:

《Reinforcement Learning thorugh Asynchronous Advantage Actor-Critic on a GPU》

论文地址:

https://openreview.net/forum?id=r1VGvBcxl

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

G-A3C,原意是GPU版本的A3C,但是仔细读过后发现这个GPU版本的算法好像和CPU版本的并不相同。

其中最大的区别就是网络反传时副本是不是由多个进程持有;在A3C中,多个进程中均持有一份可以前后向传播的神经网络,也就是说在多个进程中都可以使用自有的神经网络进行前向推理来进行数据采样,同时也能使用后向计算来进行神经网络的训练;也就是说,在A3C中数据采样和训练用的是同一套神经网络的参数,因此在A3C中的并行算法的异步参数更新和监督学习的并行化异步更新更相似,因此在A3C中虽然使用异步更新的方式,虽然对收敛性造成影响但是也不至于完全发散。

G-A3C中,所有的采样进程并不持有神经网络,全局只有一个神经网络在GPU中,所以不论是神经网络的前向推理还是后向训练都是使用这个神经网络,但是由于异步更新的特点,所以各进程采样的数据时所用的神经网络参数和训练时的神经网络参数时存在一定滞后性的,因此就导致G-A3C中训练神经网络时使用的数据往往对收敛性造成更大的影响,这也implicit的将同策略强化学习算法变成了异策略的强化学习算法;在之前的blog中也讨论过类似的问题,那就是同策略的强化学习算法如果按照异策略强化学习算法那样使用的数据和训练时神经网络有一定滞后性,这样虽然会极大的影响收敛,并且严重时导致不收敛,但是在很多情况下(很多的game环境下)也是可以保证收敛的。

总的来说,A3C算法采集数据和训练数据使用的是同一套神经网络参数,虽然在参数更新时使用异步方式,但是该方式更类似于监督学习中的异步更新方式,虽然也会对算法收敛性造成影响但是要远远低于G-A3C;在G-A3C中,由于数据采样时的神经网络参数与训练时的神经网络参数存在一定的滞后性,而这种滞后性是一种概率分布上的不同,因此这种对收敛性的影响往往要高于A3C算法。

在G-A3C中,为了抑制滞后性造成的对收敛性的影响,使用了一种概率下限的方式,也就是说对于采样后的数据在训练时其概率值是设置了一个下限值的,如果某个采样数据的动作在训练时低于该值那么就应该使其至少不低于该值;在具体实现时,则是在运行时对采样动作的log概率加入一个极小项,也就是log(p+epsilon),即:

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

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

代码上的实现:

PS:

可以说在AC类算法中都是可以使用这个概率下限的操作的,这个可以作为一个trick来使用,这样可以抑制发散,对收敛性起到好的作用。

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

A3C与GA3C的收敛性分析的更多相关文章

  1. 再论EM算法的收敛性和K-Means的收敛性

    标签(空格分隔): 机器学习 (最近被一波波的笔试+面试淹没了,但是在有两次面试时被问到了同一个问题:K-Means算法的收敛性.在网上查阅了很多资料,并没有看到很清晰的解释,所以希望可以从K-Mea ...

  2. K-Means算法的收敛性和如何快速收敛超大的KMeans?

    不多说,直接上干货! 面试很容易被问的:K-Means算法的收敛性. 在网上查阅了很多资料,并没有看到很清晰的解释,所以希望可以从K-Means与EM算法的关系,以及EM算法本身的收敛性证明中找到蛛丝 ...

  3. 【题解】CF24D Broken Robots(收敛性)

    [题解]CF24D Broken Robots http://codeforces.com/problemset/problem/24/D 解1(不会写,口胡的) 获得一个比较显然的转移式子 \(dp ...

  4. [ML从入门到入门] 支持向量机:从SVM的推导过程到SMO的收敛性讨论

    前言 支持向量机(Support Vector Machine,SVM)在70年代由苏联人 Vladimir Vapnik 提出,主要用于处理二分类问题,也就是研究如何区分两类事物. 本文主要介绍支持 ...

  5. MINIX3 内核整体架构回顾及内核定 性分析

    MINIX3  内核整体架构回顾及内核定 性分析 12.1 注意事项 由于本文档不对 I/O 文件系统做出分析,所以在此不对 MINIX3 整体做出一个分 析,本章主要是针对内核进程分析.并且这里的模 ...

  6. 连续型变量的推断性分析——t检验

    连续型变量的推断性分析方法主要有t检验和方差分析两种,这两种方法可以解决一些实际的分析问题,下面我们分别来介绍一下这两种方法 一.t检验(Student's t test) t检验也称student ...

  7. 51nod1674:区间的价值2(分治,利用&和|的收敛性)

    lyk拥有一个区间. 它规定一个区间的价值为这个区间中所有数and起来的值与这个区间所有数or起来的值的乘积. 例如3个数2,3,6.它们and起来的值为2,or起来的值为7,这个区间对答案的贡献为2 ...

  8. 从软件project的角度写机器学习3——主要监督学习算法的project性分析

    主要机器学习算法的project适用性分析 前段时间AlphaGo跟李世石的大战及相关的深度学习的新闻刷了一遍又一遍的朋友圈.只是这件事情,也仅仅是在机器学习的深度上进一步拓展,而机器学习的广度(也即 ...

  9. [Anti-AV] 从攻防对抗辩证性分析jsp免杀(一)

    从攻防对抗辩证性分析jsp免杀 从最早的最朴素木马 <%@ page import="java.io.InputStream" %> <%@ page impor ...

  10. Mirantis OpenStack 8.0 版本大概性分析

    作为 OpenStack 领域标杆性企业之一的 Mirantis 在2016年3月初发布了最新的 MOS 8.0 版本.本文试着基于公开资料进行一些归纳分析. 1. 版本概况 1.1 概况 社区版本: ...

随机推荐

  1. linux安装redis完整步骤

    linux安装redis完整步骤 安装:1.获取redis资源 wget http://download.redis.io/releases/redis-4.0.8.tar.gz 2.解压 tar x ...

  2. email邮件(带附件,模拟文件上传,跨服务器)发送核心代码 Couldn't connect to host, port: smtp.163.com, 25; timeout -1;

    邮件(带附件,模拟文件上传,跨服务器)发送核心代码1.测试邮件发送附件接口 /** * 测试邮件发送附件 * @param multipartFile * @return */ @RequestMap ...

  3. 免费且离线的同声翻译利器「GitHub 热点速览」

    开源的翻译软件众多,但大多数依赖于翻译 API 服务,因此就需要联网.有次数限制.并非完全免费.然后,本周上榜的是一款可以离线使用的 Android 翻译软件:RTranslator,它创建于 4 年 ...

  4. .NET6 个人博客-推荐文章加载优化

    个人博客-推荐文章加载优化 前言 随着博客文章越来越多,那么推荐的文章也是越来越多,之前推荐文章是只推荐8篇,但是我感觉有点少,然后也是决定加一个加载按钮,也是类似与分页的效果,点击按钮可以继续加载8 ...

  5. Linux内核驱动:cdev、misc以及device三者之间的联系和区别

    Linux内核驱动:cdev.misc以及device三者之间的联系和区别 背景 我想在cdev中使用dev_err等log打印函数,但是跟踪了一下cdev中的原型,发现并不是我想要的. 常见的驱动是 ...

  6. 配置hive环境步骤(zookeeper高可用集群已搭建)

    安装mysql:1. 检查当前环境是否安装mysql服务(命令:rpm -qa | grep -i mysql)2. 卸载自带的mysql3. 卸载软件:rpm -e --nodeps mysql-l ...

  7. P6626 题解

    有一个很暴力的解法,就是以询问点为根 DFS. 考虑优化,我们考虑优化换根. 当根节点从父亲移动到它的某个孩子时,孩子的子树内所有点深度减 \(1\) 其余点深度加 \(1\). 同理,当根节点从某个 ...

  8. springboot 访问url 报404

    使用Springboot 写了一个后端服务,通过 postman 测试接口时,发现一直 404 (message: No message available) 把springboot 从启动 到 da ...

  9. Mac 每次都要执行source ~/.bash_profile 配置的环境变量才生效

    自己在 ~/.bash_profile 中配置环境变量, 可是每次重启终端后配置的不生效.需要重新执行 : $source ~/.bash_profile 发现zsh加载的是 ~/.zshrc文件,而 ...

  10. Vscode连接虚拟机报错

    Vscode 连接虚拟机报错问题解决 问题解释 Permission denied, please try again.出现这个问题通常表示身份验证失败. 可能的原因有 SSH用户密码错误 SSH端口 ...