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

介绍

上一篇讲的进化强化学习ERL(evolutionary reinforcement learning)是简单的将进化算法和强化学习算法进行结合。
而本文则是对这种结合提出了几个改进,并将改进方法命名为Proximal Distilled Evolutionary Reinforcement Learning

背景

在传统的进化算法与强化学习算法结合后,进化算法当中的种群的个体是神经网络。因此,我们需要对神经网络进行交叉和变异。而本文认为传统的n点交叉和高斯变异着两个遗传算子不适合用于神经网络,会导致灾难性遗忘问题,即交叉变异后的后代并不具备亲本的策略优势,且后代效果容易变得更差。
因此本文提出了两种遗传算子(蒸馏选择和近端变异)替代n点交叉和高斯变异。

快速理解

传统的交叉选择就是两个亲本神经网络的部分权重交换然后得到新的一个神经网络,这样的神经网络很明显更具有随机性,而蒸馏选择是将一个亲本的参数直接赋值得到一个一模一样的新神经网络,然后这个新神经网络再训练亲本的经验。这样新的神经网络似乎更代表了亲本的能力。
传统的高斯变异是直接将神经网络权重加上一个小的误差值,得到变异后的新网络。而近端变异是计算神经网络权重对结果(动作)的敏感程度,敏感度大则该权重变化小一点,敏感度低的权重则变化大一些。很明显这种变异更加的稳定,不会说权重一突变效果变化太大。

原理

1.蒸馏选择
为了实现蒸馏选择,我们需要为每一个种群个体单独设立一个经验池(Genetic Memory),存放每个个体的独立经验。
蒸馏选择是选择两亲本神经网络,然后将儿子的神经网络初始化和其中一个亲本相同,接着,在两个亲本经验池中各取一半的经验放到儿子的经验池中,然后儿子利用Q-network来对自己的经验池中的经验进行学习,值得注意的是,两个亲本可能对同一个状态作出不同的动作,那儿子在训练的时候,应该选取谁的动作学习呢?这里我们就利用Q-network进行评分,那个亲本的采取动作带来的分数更高,儿子网络就学习谁的动作。
下图解释了蒸馏选择和n点交叉的区别。其中,有四个图蓝色的等高图,这四个图表示的是状态访问的频率、颜色越深表示该位置状态访问次数多。图左上的等高图是亲本1的,右上是亲本2的。左下是蒸馏选择的儿子的等高图,右下是n点交叉的儿子的等高图。可以看出蒸馏选择的儿子等高图的阴影区域更像两个亲本的,因此,蒸馏选择能更好的继承亲本的特性。

2.近端变异
本文的想法借鉴的PPO和TRPO当中的置信度思想。在PPO和TRPO中,通过KL散度来保证策略变化的稳定性。本文也是希望变异大小能更加稳定,而本文衡量变异大小的稳定性即敏感度,是通过神经网络每一个权重的变动对最终选取动作的变动程度进行衡量的。
说白了,就是某一个权重变动一点点,对最终动作影响大的化,我们就突变的少一点。
以下公式计算的s就是参数变动的影响程度,即敏感度。

然后,我们利用下式更新参数,可以看到s作为分母,当s越大(越敏感),这个值也就越小,即参数变动就小了。

代码实现与算法

论文作者给出了pytorch的代码实现----->代码传送门
下面是蒸馏选择算法伪代码
1,2行表示从两个亲本x,y中分别取最近的一半经验,放到儿子z的经验池Rz中
第3行是打乱Rz的经验顺序
第4行将儿子z的神经网络初始化和其中一个亲本一样
第5-9行是儿子网络的训练

近端变异算法伪代码
近端变异只需要一个亲本就行,对该亲本进行变异
第1行代码初始化儿子的经验池Ry,以及儿子策略ux
第2行采样经验
第3行根据经验利用上面我们将的公式计算动作对结果的敏感度s
第4行对参数进行更新

Proximal Distilled Evolutionary Reinforcement Learning相关推荐

  1. Reinforcement Learning

    https://www.bilibili.com/video/av9770302/?p=24 https://www.bilibili.com/video/av24724071/?p=3 https: ...

  2. 李宏毅Reinforcement Learning强化学习入门笔记

    文章目录 Concepts in Reinforcement Learning Difficulties in RL A3C Method Brief Introduction Policy-base ...

  3. 2021 牛津大学:Recent Advances in Reinforcement Learning in Finance

    Recent Advances in Reinforcement Learning in Finance 1 本文概述 本文是牛津大学2021年对 深度强化学习在金融领域内各种决策的应用 的综述文章. ...

  4. 【论文阅读】2021年牛津大学的 Survey:Recent Advances in Reinforcement Learning in Finance

    1 本文概述 本文是牛津大学2021年对 深度强化学习在金融领域内各种决策的应用 的综述文章.文章分为四个部分,第一部分是整体介绍:第二部分详细介绍了强化学习的基础知识,包括马尔科夫决策过程的定义.基 ...

  5. 深度强化学习综述论文 A Brief Survey of Deep Reinforcement Learning

    A Brief Survey of Deep Reinforcement Learning 深度强化学习的简要概述 作者: Kai Arulkumaran, Marc Peter Deisenroth ...

  6. 深度强化学习—— 译 Deep Reinforcement Learning(part 0: 目录、简介、背景)

    深度强化学习--概述 翻译说明 综述 1 简介 2 背景 2.1 人工智能 2.2 机器学习 2.3 深度学习 2.4 强化学习 2.4.1 Problem Setup 2.4.2 值函数 2.4.3 ...

  7. Reinforcement learning book 学习笔记 第一章

    RL学习 写在前面: 本专栏是学习由Richard S. Sutton and Andrew G. Barto 所著 <Reinforcement learning>的学习笔记,如有指正请 ...

  8. DDPG:CONTINUOUS CONTROL WITH DEEP REINFORCEMENT LEARNING

    CONTINOUS CONTROL WITH DEEP REINFORCEMENT LEARNING 论文地址 https://arxiv.org/abs/1509.02971 个人翻译,并不权威 T ...

  9. 18 Issues in Current Deep Reinforcement Learning from ZhiHu

    深度强化学习的18个关键问题 from: https://zhuanlan.zhihu.com/p/32153603 85 人赞了该文章 深度强化学习的问题在哪里?未来怎么走?哪些方面可以突破? 这两 ...

最新文章

  1. html5自适应团购,基于HTML5的O2O团购平台的设计与实现
  2. java日期存入数据库_怎样在Java中将日期转化插入到数据库
  3. SQL 必知必会·笔记14更新和删除数据
  4. 工厂支持多数据库开发的三层结构模式随笔(一)
  5. 境内区块链信息服务备案清单(第二批)
  6. 完全激活win server 2012 R2 的方法(亲测可行!)
  7. python︱六款中文分词模块尝试:jieba、THULAC、SnowNLP、pynlpir、CoreNLP、pyLTP
  8. java实用教程第五版_java2实用教程(第5版)重要点及遗漏点(一)
  9. magicbook16使用心得,小技巧
  10. PeopleSoft概述及开发工具(application desinger)介绍
  11. 软件经验|使用消费级无人机干测绘(四)ContexCapture软件介绍
  12. C3P0访问数据库死锁,com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@128e59b3 -- APPARENT
  13. rsa加密前后端分段解密出现中文部分乱码解决方法
  14. 金蝶cloud 常用数据库表
  15. 修改时序约束改变slack_改变我们使用Slack的方式解决了我们的透明度和筒仓问题
  16. mac安装nvm报错 :HTTP/2 stream 1 was not closed cleanly before end of the underlying stream 解决方案
  17. 丹尼尔·克雷格詹姆斯·邦德锻炼培训
  18. 社区医生工作平台-体检软件
  19. vue字符串换行(绝对管用)
  20. 在word中方便的输入公式

热门文章

  1. Rust机器学习之Linfa
  2. 快递单上关键信息开始“隐身” 个人信息不再“裸奔”
  3. Chrome浏览器上传和下载就会崩溃的解决方法
  4. 再见了,铁饭碗!2020年全部完成!取消事业编制成定局
  5. 解读照明设备欧洲能效认证新版Erp法规要求
  6. 吃一堑长一智!象棋游戏java编程
  7. 手机app开发制作流程是怎样的?
  8. 搭建网站,和把大象装冰箱一样简单?
  9. HTMLcss怎样让文字覆盖在图片上面,图片上加字
  10. 来自清华大学开源镜像站LinuxToy的公开信~