A3C与GA3C的收敛性分析
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的收敛性分析的更多相关文章
- 再论EM算法的收敛性和K-Means的收敛性
标签(空格分隔): 机器学习 (最近被一波波的笔试+面试淹没了,但是在有两次面试时被问到了同一个问题:K-Means算法的收敛性.在网上查阅了很多资料,并没有看到很清晰的解释,所以希望可以从K-Mea ...
- K-Means算法的收敛性和如何快速收敛超大的KMeans?
不多说,直接上干货! 面试很容易被问的:K-Means算法的收敛性. 在网上查阅了很多资料,并没有看到很清晰的解释,所以希望可以从K-Means与EM算法的关系,以及EM算法本身的收敛性证明中找到蛛丝 ...
- 【题解】CF24D Broken Robots(收敛性)
[题解]CF24D Broken Robots http://codeforces.com/problemset/problem/24/D 解1(不会写,口胡的) 获得一个比较显然的转移式子 \(dp ...
- [ML从入门到入门] 支持向量机:从SVM的推导过程到SMO的收敛性讨论
前言 支持向量机(Support Vector Machine,SVM)在70年代由苏联人 Vladimir Vapnik 提出,主要用于处理二分类问题,也就是研究如何区分两类事物. 本文主要介绍支持 ...
- MINIX3 内核整体架构回顾及内核定 性分析
MINIX3 内核整体架构回顾及内核定 性分析 12.1 注意事项 由于本文档不对 I/O 文件系统做出分析,所以在此不对 MINIX3 整体做出一个分 析,本章主要是针对内核进程分析.并且这里的模 ...
- 连续型变量的推断性分析——t检验
连续型变量的推断性分析方法主要有t检验和方差分析两种,这两种方法可以解决一些实际的分析问题,下面我们分别来介绍一下这两种方法 一.t检验(Student's t test) t检验也称student ...
- 51nod1674:区间的价值2(分治,利用&和|的收敛性)
lyk拥有一个区间. 它规定一个区间的价值为这个区间中所有数and起来的值与这个区间所有数or起来的值的乘积. 例如3个数2,3,6.它们and起来的值为2,or起来的值为7,这个区间对答案的贡献为2 ...
- 从软件project的角度写机器学习3——主要监督学习算法的project性分析
主要机器学习算法的project适用性分析 前段时间AlphaGo跟李世石的大战及相关的深度学习的新闻刷了一遍又一遍的朋友圈.只是这件事情,也仅仅是在机器学习的深度上进一步拓展,而机器学习的广度(也即 ...
- [Anti-AV] 从攻防对抗辩证性分析jsp免杀(一)
从攻防对抗辩证性分析jsp免杀 从最早的最朴素木马 <%@ page import="java.io.InputStream" %> <%@ page impor ...
- Mirantis OpenStack 8.0 版本大概性分析
作为 OpenStack 领域标杆性企业之一的 Mirantis 在2016年3月初发布了最新的 MOS 8.0 版本.本文试着基于公开资料进行一些归纳分析. 1. 版本概况 1.1 概况 社区版本: ...
随机推荐
- FreeRTOS简单内核实现3 任务管理
0.思考与回答 0.1.思考一 对于 Cotex-M4 内核的 MCU 在发生异常/中断时,哪些寄存器会自动入栈,哪些需要手动入栈? 会自动入栈的寄存器如下 R0 - R3:通用寄存器 R12:通用寄 ...
- HBase2版本的修复工具HBCK2
一.hbase出现的问题 1.元数据表hbase:namespace 不在线 导致查询数据时 master is initing 2.一些表的region一直处于opening状态 3.region ...
- WPF 做一个超级简单的 1024 数字接龙游戏
这是一个我给自己做着玩的游戏,没有什么复杂的界面,就一些简单的逻辑 游戏的规则十分简单,那就是有多个列表.程序会给出一个数字,玩家决定数字放在哪个列表里面.如果放入列表里面的数字和列表里面最后一个数字 ...
- linux中cp复制时处理软链接的两种方式
linux中cp复制时处理软链接的两种方式 cp -r -L 复制原始文件 cp -r -P 复制软链接本身
- WPS中导入endnote插件
WPS中导入endnote插件 1. 找到 Endnote 插件的目录: D:\Program Files (x86)\EndNote 20\Product-Support\CWYW 2. 把Cw ...
- 记录liunx服务器和docker时区修改
记录服务器和docker时区修改 前言 我的博客是部署在docker里面的,然后我发现评论和留言的时间和北京时间是有差别的,相差8个小时,然后发现是因为容器中的时区设置与服务器是不一致的,所以需要设置 ...
- 高通Andriod开机流程与镜像说明
# 高通Andriod开机流程与镜像说明 Android镜像说明 Android设备刷机时都需要ROM包,ROM包下面有很多的.img和其他的相关镜像文件,其中这里面包含了Android很多的分区,A ...
- SpringBoot集成Nacos配置中心和服务注册
安装Nacos https://blog.csdn.net/Soldoros_/article/details/118943062 引入nacos依赖包 <!-- Spring Boot 启动父 ...
- 你有对 Vue 项目进行哪些优化?
(1)代码层面的优化 v-if 和 v-show 区分使用场景 computed 和 watch 区分使用场景 v-for 遍历必须为 item 添加 key,且避免同时使用 v-if 图片资源懒加载 ...
- 洛谷P1077
这道题和上一道题也是比较像的,基本采用的也是线性dp的思路 状态数组稍微有点不同,这里表示的是当前种数的花时一共的花的数量 #include<iostream> #include<u ...