CEM-RL

论文链接:论文传送门
官方pytorch的代码实现:代码传送门

介绍

之前讲了ERL,ERL是进化算法和off-policy强化学习算法的结合。而这篇CEM-RL也是进化算法和off-policy强化学习算法的结合。ERL和CEM-RL的主要区别在于两者进化算法的区别。
先说一下,进化算法分四类:1、进化策略 2、进化规划 3、遗传算法 4、遗传规划
有兴趣的可以了解一下,但是目前据我了解,在强化学习当中应用比较多的是进化策略和遗传算法。至于进化规划和遗传规划似乎可以暂时忽略。
回到正题,ERL采用的进化算法是遗传算法。而CEM-RL采用的进化算法是进化策略。因此,两者区别就出来了。

背景

遗传算法和进化策略的区别在哪呢?
遗传算法从名字上看,遗传二字,就更加注重遗传亲本的基因。因此,遗传算法通常是选择亲本,然后亲本进行交叉,变异得到新的后代的过程。我之前发的ERL那篇也可以看出,需要选择亲本进行交叉变异生成一堆子代,子代有进行交叉变异,再生成下一代,不断重复下去。
进化策略从进化二字可以看出是强调进化,如果把亲本看作过去,那么遗传算法强调的是从过去那里遗传下来。而进化算法则是向未来进化。
推荐看看遗传算法和进化策略的具体实现就能更加清楚两者的差距。

原理

CEM-RL采用的是进化策略,CEM就是一种进化策略算法。进化的个体策略我们称为均值策略,用均值为µ,协方差矩阵为Σ的分布表示,为了进化,我们对均值策略引入方差为Σ高斯噪音得到一个种群,然后再从新的一代中选取精英策略,对精英策略求解新的均值策略µ和Σ。之后就是一直不断重复这个过程。
下图(a)是CEM-RL,图(b)是ERL的结构图。可以看出,CEM-RL每次维持的是一个均值µ和方差Σ,往Population中生成Actor,而ERL是通过亲本Selection(选择)和Mutation(变异)往Population生成Actor。
在这里插入图片描述

CEM-RL学习过程

CEM-RL生成的种群当中的个体一半用于训练Critic,并且用训练后的Critic对这一半个体进行策略梯度更新。而另一半个体不需要进行此操作。
接下来,把全部的个体拿去跟环境进行交互,评估全部个体的分数,取分数高的一半个体作为精英,用来更新得到新的均值为µ,协方差矩阵为Σ。更新规则如下。其中i从1到Ke是精英个数,zi表示第i个精英的神经网络权重,λi是该精英的权重。这些知识都是数学知识,这里不过多细说,有兴趣的可以看高数或者这篇论文里面给出了更细节的描述(论文链接
在这里插入图片描述
在这里插入图片描述

算法

论文作者给出了pytorch的实现版本—》(github项目代码
下面是算法的伪代码。
1-5行初始化
第6行开始循环
第7行是利用均值策略生成一个种群
8-13行对种群当中一半的个体进行训练critic以及利用训练的critic在训练个体
15-19行对全部个体进行评估
20行对评估后的个体选择分数最高的一半个体,更新均值策略
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值