当前位置: 首页 > 编程日记 > 正文

强化学习70年演进:从精确动态规划到基于模型

作者 | Nathan Lambert

译者 | 泓礼

编辑 | 夕颜

出品 | AI科技大本营(ID: rgznai100)

【导读】这是一份帮你了解强化学习算法本质的资源,无需浏览大量文档,没有一条公式,非常适合学生和研究人员阅读。

作为强化学习研究人员,我经常需要提醒自己算法之间的细微差异。在这里,我想创建一个算法列表,并为每个算法概括一句或两句总结,以将其与同类算法中的其他算法区分开。另外,我将结合该领域的简短历史进行介绍。

强化学习起源于最优控制。这个故事始于20世纪50年代的精确动态规划(exact dynamic programming),广义上讲,精确动态规划是一种结构化的方法,它将一个有限的问题分解成更小的、可解决的子问题,这归功于理查德·贝尔曼。值得了解的是,克劳德·香农和理查德·贝尔曼在20世纪50年代和60年代为许多计算科学带来了革命性的变化。

在整个1980年代,出现了一些有关强化学习和控制之间联系的初步工作,第一个显著成果是Tesauro在1992年创造的基于时间差异模型的西洋双陆棋程序。在1990年代,出现了更多的算法分析倾向于我们现在所谓的强化学习。罗纳德·威廉姆斯(Ronald J. Williams)撰写了一篇开创性论文“用于连接主义强化学习的简单统计梯度跟踪算法”,其中介绍了现在的基本梯度策略。请注意,在标题中,他使用了术语“连接主义者”来描述强化学习——这是他按照人类认知的设计来指定他的模型算法的方式。这些现在被称为神经网络,但在25年前还仅仅是一个很小的研究领域。

直到2000年代中期,随着大数据的出现和计算革命,强化学习才转变为基于神经网络的算法,具有许多基于梯度的收敛算法。现代的强化学习通常分为两种,一种是无模型的,另一种是基于梯度的模型,我认可这种模型分类,下面我将按照这两大类进行分别介绍。

无模型强化学习

无模型强化学习直接为参与者生成策略。我喜欢把它看作是对如何行动的端到端的学习,所有的环境知识都嵌入到这个策略中,具体的算法包括下面这些。

策略梯度算法:

策略梯度算法修改代理的策略以跟踪那些为其带来更高奖励的操作。这使这些算法符合策略,因此它们只能从算法内采取的操作中学习。

用于连接主义强化学习的简单统计梯度跟踪算法(Simple Statistical Gradient-Following Algorithms for Connectionist Reinforcement Learning (REINFORCE) )--1992年:

该文提出了政策梯度的概念,提出了系统地增加产生高回报的行为的可能性的核心思想。

基于价值的算法:

基于价值的算法会根据给定状态的感知价值来修改代理策略。这使得这些算法脱离策略,因为代理可以通过从任何策略中读取奖励函数来更新其内部状态结构。

Q学习--1992年:

Q学习是现代强化学习中基于价值的经典方法,其中代理存储每个动作状态对的感知值,然后通知策略动作。

深度Q网络(DQN)--2015年:

深度Q学习仅应用神经网络来模拟Q函数的每个动作和状态,这可以节省大量的计算资源,并有可能扩展到连续的时间动作空间。

Actor-Critic算法:

行为者批判算法将基于策略和基于价值的方法结合在一起--通过对价值(critic)和行为(actor)使用单独的网络近似值。这两个网络相互配合,使彼此规范化并有望获得更稳定的结果。

Actor-Critic算法--2000年:

该文介绍了具有两个单独的但相互交织的模型来生成控制策略的想法。

让我们从基础开始说起:

十年后,我们发现自己处于深度强化学习算法的爆炸式增长中。请注意,在您阅读的所有出版物中,最核心的部分是使用神经网络近似的方法。

策略梯度算法经常遭受噪声梯度的困扰。我谈到了最近在另一篇文章中提出的梯度计算中的一个变化,当时他们使用了一系列最新的“最新技术”算法来解决这一问题,包括TRPO和PPO。

信任区域政策优化(TRPO)--2015年:

基于actor critic途径,TRPO的作者希望在每个训练迭代中调整策略的变化,他们引入了一个关于KL散度的硬约束,即新策略分布中的信息变化。约束的使用,而不是惩罚,允许更大的训练步骤和更快的收敛在实践中。

近端政策优化(PPO)--2017年:

PPO建立在与TRPO具有KL散度的相似思想上,并通过使用考虑KL散度的代理损失函数,解决了实现TRPO的困难(包括估算Fisher信息矩阵的共轭梯度)。PPO使用剪切来代替损失并帮助收敛。

深度确定性策略梯度(DDPG)--2016年:

DDPG将Q学习的改进与策略梯度更新规则结合在一起,该规则允许Q学习应用于许多连续控制环境。

深度强化学习的综合改进(Rainbow)--2017年:

Rainbow结合并比较了许多改进深度Q学习(DQN)的创新。这里引用了许多论文,它可以是一个了解DQN进展的好地方:

  • Prioritization DQN:在Q学习中重播过渡,那里存在更多不确定性,即要学习更多。

  • Dueling DQN:分别估算状态值和操作优势,以帮助泛化操作。

  • A3C:从多步引导中学习,以将更快将新知识传播到网络中。

  • 分布式DQN:学习奖励的分配,而不仅仅是方法。

  • Noisy DQN:采用随机层进行探索,这使得动作选择的利用性降低。

接下来的两个对actor critic算法进行了类似的更改。请注意,SAC并不是TD3的后继产品,因为它们几乎是同时发布的,但是SAC使用了TD3中也使用的一些技巧。

双延迟深度确定性策略梯度(TD3)--2018年:TD3在DDPG的基础上进行了3个主要更改:1)“Twin”:同时学习两个Q函数,采用较低的Bellman估计值以减少方差,2)“Delayed”:与Q函数相比,更新策略的频率更低;3)向目标操作添加噪音,以降低攻击性策略。

Soft Actor Critic(SAC)--2018年:为了在机器人实验中使用无模型的RL,作者希望提高样本效率,数据收集的广度和勘探的安全性。他们使用基于熵的RL来控制探索,并使用DDPG样式Q函数逼近进行连续控制。注意:SAC还像TD3一样实现了裁剪,并且使用随机策略,它可以从规范操作选择中受益,这类似于平滑操作。

随着样本复杂度下降和结果上升,许多人对无模型强化学习的应用感到非常兴奋。最近的研究已将这些方法的越来越多的部分用于物理实验,这使广泛使用的机器人的前景更近了一步。

基于模型的强化学习

基于模型的强化学习尝试建立环境知识,并利用这些知识采取明智的措施。这些方法的目标通常是降低更接近端到端学习的无模型变量的样本复杂性。

学习控制的概率推断(PILCO)--2011:

本文是基于模型的强化学习的先驱之一,它提出了一种基于高斯过程(GP)动态模型(建立在不确定性估计中)的策略搜索方法(本质上是策略迭代)。使用多个高斯过程进行学习的应用已经很多了,但是目前为止还没有那么多的核心算法。

带有轨迹采样的概率集成(PETS)--2018:

PETS将三个部分组合成一个功能算法:1)由多个随机初始化的神经网络组成的动力学模型(模型集合);2)基于粒子的传播算法;3)和简单模型预测控制器。这三个部分以潜在的通用方式利用了动力学模型的深度学习。

基于模型的元策略优化(MB-MPO)--2018年:

本文使用元学习来选择集成中哪个动态模型最能优化策略并减少模型偏差。这种元优化允许MBRL在更低的样本中更接近于渐进的无模型性能。

模型集成信任区域策略优化(ME-TRPO)--2018年:

ME-TRPO是TRPO在模型集成上的应用,该模型集成被认为是环境的基本事实。对无模型版本的一个细微的添加是策略训练的停止条件,只有在策略迭代时,用户定义的模型比例不再看到改进时才会停止。

Atari的基于模型的强化学习(SimPLe)--2019:

SimPLe将基于模型的RL区域中的许多技巧与像素动态变化编码器相结合。这显示了Atari游戏中MBRL的最新技术(我个人认为这是很酷的文章,并希望人们能够尽快在其基础上进行开发)。

近年来,基于模型的强化学习背后的宣传越来越多。由于它缺乏无模型的同类产品的渐近性能,因此经常被忽略。我对它特别感兴趣,因为它已经启用了许多试验,令人兴奋的应用包括:四轴飞行器和步行机器人。

注释:

KL散度,也被称为Kullback-Leibler散度,是两个概率分布之间差异的度量。最好把它理解为两个分布p(原)和q(新)H(p,q)的交叉熵和原分布p, H(p)的熵之差。它由KL(P | Q)表示,是对信息增益的度量。

原文链接:

https://towardsdatascience.com/getting-just-the-gist-of-deep-rl-algorithms-dbffbfdf0dec

(*本文为AI科技大本营翻译文章,转载请微信联系 1092722531)

精彩推荐

1、评选进行中,参与投票即有机会参与抽奖,60+公开课免费学习

2、【Python Day——北京站】现已正式启动,「新春早鸟票」火热开抢!2020年,我们还将在全国多个城市举办巡回活动,敬请期待!活动咨询,可扫描下方二维码加入官方交流群~

CSDN「Python Day」咨询群 ????

来~一起聊聊Python

如果群满100人,无法自动进入,可添加会议小助手微信:婷婷,151 0101 4297(电话同微信)


推荐阅读

  • 你点的每个“在看”,我都认真当成了AI

相关文章:

Android ActionBar相关

1.Android 5.0 删除ActionBar下面的阴影 于Android 5.0假设你发现的ActionBar下面出现了阴影&#xff0c;例如&#xff0c;下面的设置&#xff0c;以消除阴影&#xff1a; getActionBar().setElevation(0); Android 5.0之前能够用以下代码消除阴影&#xff1a; <item name&q…

Redis源码解析——字典遍历

之前两篇博文讲解了字典库的基础&#xff0c;本文将讲解其遍历操作。之所以将遍历操作独立成一文来讲&#xff0c;是因为其中的内容和之前的基本操作还是有区别的。特别是高级遍历一节介绍的内容&#xff0c;充满了精妙设计的算法智慧。&#xff08;转载请指明出于breaksoftwar…

开发者在行动!中国防疫开源项目登上GitHub TOP榜

整理 | 唐小引出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;【导读】用开发者们的方式支援这场没有硝烟的战争&#xff01;截止北京时间 1 月 28 日下午 15:47&#xff0c;全国确诊新型冠状病毒的数字已经到达了 4586 例&#xff0c;疑似高达 6973 例&#xff0c…

像童话一样学习OSPF原理

可以把整个网络&#xff08;一个自治系统AS&#xff09;看成一个王国&#xff0c;这个王国可以分成几个 区(area)&#xff0c;现在我们来看看区域内的某一个人(你所在的机器root)是怎样得到一张 世界地图(routing table)的。   首先&#xff0c;你得跟你周围的人&#xff08;…

队列——PowerShell版

继续读啊哈磊《啊哈&#xff01;算法》感悟系列——队列 地铁售票处排队&#xff0c;先来的人先到队首先买完先走&#xff0c;后来的人排在队尾等候后买完后走。 想买票&#xff0c;必须排在队尾&#xff1b;买完票&#xff0c;只能从队首离开。 这种先进先出&#xff08;First…

Redis源码解析——双向链表

相对于之前介绍的字典和SDS字符串库&#xff0c;Redis的双向链表库则是非常标准的、教科书般简单的库。但是作为Redis源码的一部分&#xff0c;我决定还是要讲一讲的。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 基本结构 首先我们看链表元素的结构。因为…

12月第三周安全要闻回顾:浏览器安全不容忽视,SSL弱点影响网站安全

本周&#xff08;081215至081221&#xff09;安全方面的新闻众多&#xff0c;主要集中在***与威胁趋势方面。浏览器安全方向波澜起伏&#xff0c;微软推出了针对上周公开的IE7新漏洞的紧急安全补丁&#xff0c;但目前互联网上针对该漏洞的大规模***仍在继续&#xff0c;******的…

GPT2文本生成有问题?这里有些潜在解决思路

作者 | Leo Gao译者 | 凯隐编辑 | 夕颜出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09; 【导读】在过去的一年中&#xff0c;人们对文本生成模型的兴趣重新燃起&#xff0c;这在很大程度上要归功于GPT2&#xff0c;它主要展示了使用更大模型、更大数据和更大计算量的…

HTML5学习之二:HTML5中的表单2

&#xff08;本内容部分节选自《HTML 5从入门到精通》) 对表单的验证 ———————————————————————————————————————————————————————— •1、required属性 required属性主要目的是确保表单控件中的值已填写。在提交时&…

Redis源码解析——有序整数集

有序整数集是Redis源码中一个以大尾&#xff08;big endian&#xff09;形式存储&#xff0c;由小到大排列且无重复的整型集合。它存储的类型包括16位、32位和64位的整型数。在介绍这个库的实现前&#xff0c;我们还需要先熟悉下大小尾内存存储机制。&#xff08;转载请指明出于…

GitHub标星1.2w+,Chrome最天秀的插件都在这里

作者 | Rocky0429来源 | Python空间&#xff08;ID: Devtogether&#xff09;大家好&#xff0c;我是 Rocky0429&#xff0c;一个沉迷 Chrome 不能自拔的蒟蒻...作为一个在远古时代用过什么 IE、360、猎豹等浏览器的资深器哥&#xff0c;当我第一次了解 Chrome 的时候&#xff…

基础篇 第四节 项目进度计划编辑 之 任务关联性设定

1.任务关联性的类型 ◎完成 —— 开始 FS ◎开始 —— 开始 SS ◎开始 —— 完成 SF 完成 —— 完成 FF 2.设定任务关联性 三种方法&#xff1a; ◎在条形图中直接拖拽 ◎在“前置任务”列中编辑 ◎在“任务信息”中的“前置任务”选项卡中编辑 3.设定“延隔时间” 延隔时间小于…

开坑,写点Polymer 1.0 教程第3篇——组件注册与创建

之前一篇算是带大家大致领略了一下Polymer的风采。这篇我们稍微深入一丢丢&#xff0c;讲下组件的注册和创建。 创建自定义组件的几种方式 这里我们使用Polymer函数注册了一个自定义组件"my-element" // register an element Polymer({is: my-element,created: funct…

Redis源码解析——Zipmap

本文介绍的是Redis中Zipmap的原理和实现。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 基础结构 Zipmap是为了实现保存Pair(String,String)数据的结构&#xff0c;该结构包含一个头信息、一系列字符串对&#xff08;之后把一个“字符串对”称为一个“元素…

IIS7入门之旅:(3)CGI application和FastCGI application的区别

前言&#xff1a; 一如既往地&#xff0c;IIS支持通过提供pluggable module来提供对第3方script的支持,例如php等。在IIS7中&#xff0c;对于CGI的支持有了一个新的变化&#xff0c;就是同时提供了2种CGI支持模块&#xff0c;分别为&#xff1a;CGIModule (cgi.dll)和FastCGIMo…

抗击疫情!阿里云为加速新药疫苗研发提供免费AI算力

1月29日&#xff0c;阿里云正式宣布&#xff1a;疫情期间&#xff0c;向全球公共科研机构免费开放一切AI算力&#xff0c;以加速本次新型肺炎新药和疫苗研发。 目前&#xff0c;中国疾控中心已成功分离病毒&#xff0c;疫苗研发和药物筛选仍在争分夺秒地进行。新药和疫苗研发期…

SpriteBuilder中如何平均拉伸精灵帧动画的距离

首先要在Timeline中选中所有的精灵帧&#xff0c;可以通过如下2种的任意一种办法达成&#xff1a; 1按下Shift键的同时鼠标单击它们 2鼠标在Timeline空白区拖拽直到拉出的矩形包围住所有精灵帧方块后放开鼠标。 你可以通过查看Timeline中精灵帧方块上是否有阴影来辨识是否选中…

C++拾趣——类构造函数的隐式转换

之前看过一些批判C的文章&#xff0c;大致意思是它包含了太多的“奇技淫巧”&#xff0c;并不是一门好的语言。我对这个“奇技淫巧”的描述颇感兴趣&#xff0c;因为按照批判者的说法&#xff0c;C的一些特性恰巧可以让一些炫耀技术的同学有了炫耀的资本——毕竟路人皆知的东西…

数十名工程师作战5天,阿里达摩院连夜研发智能疫情机器人

作者 | Just出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;新型肺炎疫情防控战在各大互联网科技公司拉响&#xff0c;阿里、百度等公司陆续对外提供相应技术和产品。当前&#xff0c;疫情当前防控一线人员紧缺&#xff0c;多地政务热线迎来大波问询市民&#xff0c;…

路由器互联端口处于不同网段的路由方法和原理

如下图&#xff1a;两台cisco路由器相连接的两个端口不在同一个网络&#xff0c;如何实现两台路由器的互联&#xff1f;初看似乎绝对不可能&#xff0c;但是这是可行的&#xff0c;而且我已经把这个变成了现实。这里讲述配置的方法&#xff0c;以及解释原理。这个就要讲到路由原…

上网行为管理产品选型简单考量

信息化浪潮汹涌向前&#xff0c;人们的生活、工作、学习越来越离不开IT&#xff0c;离不开网络。 对于很多组织来讲&#xff0c;网络就意味着效率、甚至生产力&#xff0c;协同办公、决策、科研、资金划拨等等都对网络有了前所未有的依赖。网络应用日益复杂、多变、动态特征发展…

码农技术炒股之路——配置管理器、日志管理器

配置管理器和日志管理器是项目中最为独立的模块。我们可以很方便将其剥离出来供其他Python工程使用。文件的重点将是介绍Python单例和logging模块的使用。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 配置管理器 在《码农技术炒股之路——架构和设计》中我…

“数学不好,干啥都不行!”资深程序员:别再瞎努力了!

之前很多程序员读者向我们反馈&#xff1a;1&#xff09;做算法优化时&#xff0c;只能现搬书里的算法&#xff0c;遇到不一样的问题&#xff0c;就不会了。2&#xff09;面试一旦涉及到算法和数据结构&#xff0c;如果数学不行&#xff0c;面试基本就凉凉了。3&#xff09;算法…

受限列表 队列与栈

2019独角兽企业重金招聘Python工程师标准>>> 队列与栈为受限列表&#xff0c;队列为先入先出型列表&#xff0c;而栈为先入后出型列表&#xff0c;有关列表的实现可以查看 http://my.oschina.net/u/2011113/blog/514713 。 结构图为 Queue实现了IQueue接口&#xff…

码农技术炒股之路——数据库管理器、正则表达式管理器

我选用的数据库是Mysql。选用它是因为其可以满足我的需求&#xff0c;而且资料多。因为作为第三方工具&#xff0c;难免有一些配置问题。所以本文也会讲解一些和Mysql配置及开发相关的问题。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 数据库管理器 Mysq…

Overview of ISA and TMG Networking and ISA Networking Case Study (Part 1)

老方说&#xff1a;此篇文章摘自ISASERVER.ORG网站&#xff0c;出自Thomas Shinder达人之手。严重建议ISA爱好者看看。Published: Dec 16, 2008 Updated: Jan 21, 2009 Author: Thomas Shinder What ISA/TMG firewall Networks are about and how the firewall uses these ne…

阿里云免费开放一切AI算力,加速新型冠状病毒新药和疫苗研发

近日&#xff0c;阿里云宣布&#xff0c;为了帮助加速新药和疫苗研发&#xff0c;将向全球公共科研机构免费开放一切AI算力。目前&#xff0c;中国疾控中心已成功分离病毒&#xff0c;疫苗研发和药物筛选仍在争分夺秒地进行。新药和疫苗研发期间&#xff0c;需要进行大量的数据…

ASP.net(C#)批量上传图片(完整版)

来自&#xff1a;http://blog.itpub.net/9869521/viewspace-667955/ 这篇关于ASP.Net批量上传图片的文章写得非常好&#xff0c;偶尔在网上看到想转载到这里&#xff0c;却费劲了周折。为了更新这篇文章&#xff0c;我用了近半个小时&#xff0c;网上的转载都残缺不全&#xff…

码农技术炒股之路——任务管理器

系统任务和普通任务都是通过任务管理器调度的。它们的区别是&#xff1a;系统任务在程序运行后即不会被修改&#xff0c;而普通任务则会被修改。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 为什么要有这样的设计&#xff1f;因为我希望它是一个可以不用停…