技术标签: 顶会期刊论文阅读笔记 人工智能
在强化学习算法中agent
所观测到的data
是非平稳和强相关( non-stationary
和strongly correlated
)。通过设置memory
的方式可以减少非平稳性和解耦轨迹之间的相关性,但是这样会限制这些方法只能去使用off-policy
的RL
算法,并且会增加额外的运算。
作者主要是通过多个智能体并行地采样数据,以一种更加平稳的处理方式(more stationary process
,传递梯度参数) 来解耦智能体数据采样数据之间的相关性,并且可以使用on-policy
的策略。
在此之前也有一些研究,比如The General Reinforcement Learning Architecture (Gorila)中:actor
与环境互动采样(多台电脑),将数据放入replay memory
中,learner
从replay memory
中获取数据,并计算DQN
算法所定义的Loss
梯度,但是这个梯度并不用于更新learner
的参数,梯度信息被异步地分发到参数服务中心(central parameter server
),去更新一个中心模型的副本,更新完的policy
参数在隔固定步数发送到actor
中去。(learner
的target
拿central parameter server
所更新的参数更新learner
)。流程图如下所示:
还有一些研究将Map Reduce framework
引入用于加快矩阵运算,(并不是加快采样)。也还有一些工作是learner
之间通过通讯共享一些参数信息。
作者所使用的方法与Gorila
框架的方法类似,但是并没有用多台机器和参数服务器(parameter server
),而是使用一个多线程的GPU
在单台机器上运行,每一个线程上都有一个learner
,它们采样的数据就更加丰富了,多个learner online
更新最后汇总梯度,其实也是相当于切断了数据之间的关联性。因此作者没有使用replay memory
而是对每个learner
使用不同的exploration policy
,因此这种方法也可以使用on-policy
的强化学习算法,比如sarsa
这种。将其用于Q-Learning
算法的话,可以得到如下单线程learner
伪代码:
对于actor-critic
框架,单线程learner
伪代码如下所示:
所需的计算资源更小,使用一个multi-core CPU
就可以进行训练。比较了在Nvidia K40 GPU
上训练的DQN
算法的学习速度和在五个Atari 2600
游戏上使用16个CPU
核心训练的异步方法:
还有一些什么鲁棒性地分析可以参考原文,这里就不说了,在讨论部分作者强调了,并不是说experience replace
不好,把其引入进来可能效果会改进采样效率,可能会使得效果更好。
整个网络中有多个local worker
,一个global worker
。多个local worker
异步更新,更新完的参数传到global worker
中去。local worker
采样到新的样本之后,在更新之前需要把global worker
中的参数拉取过来之后再进行更新,更新之后再传到global worker
中去。
这种方式只能是CPU
层面的并行,之后的A2C
,同步版本的,每一个worker
仅采集数据,然后集中起来通过GPU
进行更新,只传数据。
这篇文章是ICML2016
上面的一篇文章。第一作者Volodymyr Mnih
是Toronto
大学的机器学习博士,师从Geoffrey Hinton
,同时也是谷歌DeepMind
的研究员。硕士读的Alberta
大学,师从Csaba Szepesvari
。
Nairetal.,2015
) performs asynchronous training of reinforcement learning agents in a distributed setting. The gradients are asynchronously sent to a central parameter server which updates a central copy of the model. The updated policy parameters are sent to the actor-learners at fixed intervals.Chavez et al., 2015
).Li & Schuurmans, 2011
) applied the Map Reduce framework to parallelizing batch reinforcement learning methods with linear function approximation. Parallelism was used to speed up large matrix operations but not to parallelize the collection of experience or stabilize learning.Grounds & Kudenko, 2008
) proposed a parallel version of the Sarsa algorithm that uses multiple separate actor-learners to accelerate training. Each actor learner learns separately and periodically sends updates to weights that have changed significantly to the other learners using peer-to-peer communication. 基于value estimation
的critic
方法。广泛应用于各种领域,但有一些缺点使它的应用受到局限。如 :
stochastic policy
)和连续的动作空间。value function
的微小变化会引起策略变化巨大,从而使训练无法收敛。尤其是引入函数近似(function approximation,FA
)后,虽然算法泛化能力提高了,但也引入了bias
,从而使得训练的收敛性更加难以保证。 而基于actor
方法通过将策略参数化,从而直接学习策略。这样做的好处是与前者相比拥有更好的收敛性,以及适用于高维连续动作空间及stochastic policy
。但缺点包括梯度估计variance
比较高,且容易收敛到非最优解。另外因为每次梯度的估计不依赖以往的估计,意味着无法充分利用老的信息。
但对于AC
算法来说其架构可以追溯到三、四十年前。 最早由Witten在1977年提出了类似AC
算法的方法,然后Barto, Sutton
和Anderso
n等大牛在1983年左右引入了actor-critic
架构。但由于AC
算法的研究难度和一些历史偶然因素,之后学界开始将研究重点转向value-based
方法。之后的一段时间里value-based
方法和policy-based
方法都有了蓬勃的发展。前者比较典型的有TD
系的方法。经典的Sarsa
, Q-learning
等都属于此列;后者比如经典的REINFORCE
算法。之后AC
算法结合了两者的发展红利,其理论和实践再次有了长足的发展。直到深度学习(Deep learning, DL
)时代,AC
方法结合了DNN
作为FA
,产生了化学反应,出现了DDPG
,A3C
这样一批先进算法,以及其它基于它们的一些改进和变体。可以看到,这是一个先分后合的圆满故事。
我的微信公众号名称:小小何先生
公众号介绍:主要研究分享深度学习、机器博弈、强化学习等相关内容!期待您的关注,欢迎一起学习交流进步!
文章浏览阅读1.6k次。安装配置gi、安装数据库软件、dbca建库见下:http://blog.csdn.net/kadwf123/article/details/784299611、检查集群节点及状态:[root@rac2 ~]# olsnodes -srac1 Activerac2 Activerac3 Activerac4 Active[root@rac2 ~]_12c查看crs状态
文章浏览阅读1.3w次,点赞45次,收藏99次。我个人用的是anaconda3的一个python集成环境,自带jupyter notebook,但在我打开jupyter notebook界面后,却找不到对应的虚拟环境,原来是jupyter notebook只是通用于下载anaconda时自带的环境,其他环境要想使用必须手动下载一些库:1.首先进入到自己创建的虚拟环境(pytorch是虚拟环境的名字)activate pytorch2.在该环境下下载这个库conda install ipykernelconda install nb__jupyter没有pytorch环境
文章浏览阅读5.2k次,点赞19次,收藏28次。选择scoop纯属意外,也是无奈,因为电脑用户被锁了管理员权限,所有exe安装程序都无法安装,只可以用绿色软件,最后被我发现scoop,省去了到处下载XXX绿色版的烦恼,当然scoop里需要管理员权限的软件也跟我无缘了(譬如everything)。推荐添加dorado这个bucket镜像,里面很多中文软件,但是部分国外的软件下载地址在github,可能无法下载。以上两个是官方bucket的国内镜像,所有软件建议优先从这里下载。上面可以看到很多bucket以及软件数。如果官网登陆不了可以试一下以下方式。_scoop-cn
文章浏览阅读4.5k次,点赞2次,收藏3次。首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker>在data里面data() { return {headcolor: ’ #278add ’ //这里可以选择一个默认的颜色} }然后在你想要改变颜色的地方用v-bind绑定就好了,例如:这里的:sty..._vue el-color-picker
文章浏览阅读640次。基于芯片日益增长的问题,所以内核开发者们引入了新的方法,就是在内核中只保留函数,而数据则不包含,由用户(应用程序员)自己把数据按照规定的格式编写,并放在约定的地方,为了不占用过多的内存,还要求数据以根精简的方式编写。boot启动时,传参给内核,告诉内核设备树文件和kernel的位置,内核启动时根据地址去找到设备树文件,再利用专用的编译器去反编译dtb文件,将dtb还原成数据结构,以供驱动的函数去调用。firmware是三星的一个固件的设备信息,因为找不到固件,所以内核启动不成功。_exynos 4412 刷机
文章浏览阅读2w次,点赞24次,收藏42次。Linux系统配置jdkLinux学习教程,Linux入门教程(超详细)_linux配置jdk
文章浏览阅读3.3k次,点赞5次,收藏19次。xlabel('\delta');ylabel('AUC');具体符号的对照表参照下图:_matlab微米怎么输入
文章浏览阅读119次。顺序读写指的是按照文件中数据的顺序进行读取或写入。对于文本文件,可以使用fgets、fputs、fscanf、fprintf等函数进行顺序读写。在C语言中,对文件的操作通常涉及文件的打开、读写以及关闭。文件的打开使用fopen函数,而关闭则使用fclose函数。在C语言中,可以使用fread和fwrite函数进行二进制读写。 Biaoge 于2024-03-09 23:51发布 阅读量:7 ️文章类型:【 C语言程序设计 】在C语言中,用于打开文件的函数是____,用于关闭文件的函数是____。
文章浏览阅读3.4k次,点赞2次,收藏13次。跟随鼠标移动的粒子以grid(SOP)为partical(SOP)的资源模板,调整后连接【Geo组合+point spirit(MAT)】,在连接【feedback组合】适当调整。影响粒子动态的节点【metaball(SOP)+force(SOP)】添加mouse in(CHOP)鼠标位置到metaball的坐标,实现鼠标影响。..._touchdesigner怎么让一个模型跟着鼠标移动
文章浏览阅读178次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot + mybatis + Maven +mysql5.7或8.0+html+css+js等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。_基于java技术的停车场管理系统实现与设计
文章浏览阅读3.5k次。前言对于MediaPlayer播放器的源码分析内容相对来说比较多,会从Java-&amp;gt;Jni-&amp;gt;C/C++慢慢分析,后面会慢慢更新。另外,博客只作为自己学习记录的一种方式,对于其他的不过多的评论。MediaPlayerDemopublic class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal..._android多媒体播放源码分析 时序图
文章浏览阅读2.4k次,点赞41次,收藏13次。java 数据结构与算法 ——快速排序法_快速排序法