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 概况 社区版本: ...
随机推荐
- 网络诊断工具nslookup的使用
nslookup 是一个网络诊断工具,用于查询域名系统(DNS)记录,将域名解析为IP地址,或者查询其他DNS记录类型,如MX(邮件交换记录).CNAME(别名记录)等.以下是一些常见Linux发行版 ...
- JavaScript实现防抖节流函数
review 防抖函数 防抖函数一般是短时间内多次触发,但是只有最后一次触发结束后的delay秒内会去执行相对应的处理函数. 相当于一个赛道里面一次只能跑一辆赛车,如果此时已经有一辆赛车在跑道里面跑, ...
- leetcode | 107. 二叉树的层序遍历 II | javascript实现 | c++实现
题目 给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 . (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 思路 题目的要求相当于是求层序遍历数组的转置,我们只需利用js的 ...
- 如何使用JavaScript实现在线Excel附件的上传与下载?
前言 在本地使用Excel时,经常会有需要在Excel中添加一些附件文件的需求,例如在Excel中附带一些Word,CAD图等等.同样的,类比到Web端,现在很多人用的在线Excel是否也可以像本地一 ...
- shell中各个括号的用法区别
在 shell 脚本中,[ ].[[ ]].( ).(( )).{ } 和 {{ }} 都有各自特定的用法和区别.下面是对这些结构的详细解释: 1. [ ] (test 命令) [ ] 是 shell ...
- IdentityServer4 获取发现文档 提示 Keyset is missing
客户端请求提示 Keyset is missing 解决办法 添加以下代码 services.AddIdentityServer(options => { options.Events.Rais ...
- flutter 一直卡在Running Gradle task 'assembleDebug'...运行不起来
大概率只有一个原因:gradle下载不完整! 要想办法让他下载完整! 解决方法: 方法一:修改远程maven仓库地址(2024.7.9下列地址可用) repositories{ maven{ url' ...
- Sql Client Show All Conten Of A Field
Terminate the query with \G in place of ; For example: SELECT content_txt FROM sometable\G
- 面试官:Dubbo一次RPC调用会经过哪些环节?
大家好,我是三友~~ 今天继续探秘系列,扒一扒一次RPC请求在Dubbo中经历的核心流程. 本文是基于Dubbo3.x版本进行讲解 一个简单的Demo 这里还是老样子,为了保证文章的完整性和连贯性,方 ...
- acwing 875
acwing875 题目大意:快速幂模板题 Train of thought 此题如果采用暴力的做法时间复杂度为0(n*b); n为样例的数目,b是幂 我们想要优化暴力的做法,首先样例的数量是没有办法 ...