当前位置:网站首页>深度强化学习发展史
深度强化学习发展史
2022-08-08 10:16:00 【正仪】
如今机器学习发展如此迅猛,各类算法层出不群,特别是深度神经网络在计算机视觉、自然语言处理、时间序列预测等多个领域更是战果累累,可以说这波浪潮带动了很多人进入深度学习领域,也成就了其一番事业。而强化学习作为一门灵感来源于心理学中的行为主义理论的学科,其内容涉及概率论、统计学、逼近论、凸分析、计算复杂性理论、运筹学等多学科知识,难度之大,门槛之高,导致其发展速度特别缓慢。
1. 1954年-2013年
- 1954年Minsky首次提出“强化”和“强化学习”的概念和术语。
- 1965年在控制理论中Waltz和傅京孙也提出这一概念,描述通过奖惩的手段进行学习的基本思想。他们都明确了“试错”是强化学习的核心机制。
- 1957年,Bellman提出了求解最优控制问题以及最优控制问题的随机离散版本马尔可夫决策过程(Markov Decision Process,MDP)的动态规划(Dynamic Programming)方法,而该方法的求解采用了类似强化学习试错迭代求解的机制。尽管他只是采用了强化学习的思想求解马尔可夫决策过程,但事实上却导致了马尔可夫决策过程成为定义强化学习问题的最普遍形式,加上其方法的现实操作性,以致后来的很多研究者都认为强化学习起源于Bellman的动态规划,随后Howard提出了求解马尔可夫决策过程的策略迭代方法。经过沉寂了了一段时间后。
- 1989年,Watkins提出的Q学习进一步拓展了强化学习的应用和完备了强化学习。Q学习使得在缺乏立即回报函数(仍然需要知道最终回报或者目标状态)和状态转换函数的知识下依然可以求出最优动作策略,换句话说,Q学习使得强化学习不再依赖于问题模型。此外Watkins还证明了当系统是确定性的马尔可夫决策过程,并且回报是有限的情况下,强化学习是收敛的,也即一定可以求出最优解。至今,Q学习已经成为最广泛使用的强化学习方法。
此后一段时间,强化学习被监督学习(supervised learning)的光芒所遮掩,像统计模式识别,人工神经网络均属于监督学习,这种学习是通过外部有知识的监督者提供的例子来进行学习的,但这种学习已经完全违背了强化学习的宗旨,因为监督学习有了“导师”(supervisor),有了预备知识(examples)的,这也是强化学习发展缓慢的原因,
2. 2013年-2020年
在2013年,DeepMind发表了利用强化学习玩Atari游戏的论文,至此强化学习开始了新的十年。
围棋作为人类的娱乐游戏中复杂度最高的一个,它横竖各有19条线,共有361个落子点,双方交替落子,状态空间高达 1 0 171 10^{171} 10171 (注:宇宙中的原子总数是 1 0 80 10^{80} 1080,即使穷尽整个宇宙的物质也不能存下围棋的所有可能性),但是
- 2015年10月,由Google DeepMind公司开发的AlphaGo程序击败了人类高级选手樊麾,成为第一个无需让子即可在19路棋盘上击败围棋职业棋手的计算机围棋程序,并写进了历史,论文发表在国际顶级期刊《Science》上。
2016年3月,透过自我对弈数以万计盘进行练习强化,AlphaGo在一场五番棋比赛中4:1击败顶尖职业棋手李世石。 - Master(AlphaGo版本)于2016年12月开始出现于弈城围棋网和腾讯野狐围棋网,取得60连胜的成绩,以其空前的实力轰动了围棋界。
- DeepMind 如约公布了他们最新版AlphaGo论文(Nature),其使用了蒙特卡洛树搜索与两个深度神经网络相结合的方法,其中一个是以估值网络来评估大量的选点,而以走棋网络来选择落子。在这种设计下,计算机可以结合树状图的长远推断,又可像人类的大脑一样自发学习进行直觉训练,以提高下棋实力,后使用了强化学习进行自我博弈,最终达到了战胜世界一流的人类围棋选手的成绩。其背后的原理成为每个人工智能爱好者都想了解的秘密。随后最强最新的版本AlphaGo Zero,使用纯强化学习,将价值网络和策略网络整合为一个架构,3天训练后就以100比0击败了上一版本的AlphaGo。AlphaGo已经退休,但技术永存。
- DeepMind已经完成围棋上的概念证明,接下来就是用强化学习创造改变世界的价值。
围棋被攻克证明了深度强化学习发展的潜力,作为AlphoGo的带头人,强化学习界的大神,David Sliver及其团队可以说盛名远扬,其以前沿的目光发表了人工智能的终极目标是: 人工智能 = DL(Deep Learning)+ RL(reinforcement learning) ==DRL
在深度学习已经取得了很大的进步的基础上,深度强化学习真正的发展归功于神经网络、深度学习以及计算力的提升,David就是使用了神经网络逼近值函数后,开启了一门新的研究方向:深度强化学习(Deep Reinforcement Learning,DRL),又一发不可收拾的证明了确定性策略等。纵观近6年的ICML,NPIS等顶级会议论文,强化学习的理论进步,应用领域逐渐爆发式增广,目前已经在如下领域有了广泛使用:
- 自动驾驶:自动驾驶载具(self-driving vehicle)
- 控制论(离散和连续大动作空间): 玩具直升机、Gymm_cotrol物理部件控制、机器人行走、机械臂控制。
- 游戏:Go, Atari 2600(DeepMind论文详解)等
- 理解机器学习:自然语言识别和处理, 文本序列预测
- 超参数学习:神经网络参数自动设计
- 问答系统:对话系统
- 推荐系统:阿里巴巴黄皮书(商品推荐),广告投放。
- 智能电网:电网负荷调试,调度等
- 通信网络:动态路由, 流量分配等
- 财务与财经系统分析与管理
- 智能医疗
- 智能交通网络及网络流
- 物理化学科学实验:定量实验,核素碰撞,粒子束流调试等
- 程序学习和网络安全:网络攻防等
以上是深度强化学习的部分发展例子,要说先进的技术,必然离不开顶尖的研究结构,而诸如:DeepMind、OpenAI、伯克利、CMU等都是强化学习的领跑者,他们并发明了很多最新前沿技术。强化学习作为机器学习的一个子领域,涉及内容的广泛、难度之高、研究的参考资料之少等因素让其一直处于不温不火的状态。但在国外研究比较热门,特别是2013年以来,国内也开始广泛的研究。一方面各个大公司掌握了核心技术,一方面培训机构高额的费用,让我等普通人查资料、学习出现重重障碍。本文的使命是 “让人人都可以享受强化学习带来的乐趣,让人人都可以用强化学习改变现有科技”。
2.1 强化学习是什么?
与我们所学习的机器学习算法(SVM, 贝叶斯、决策树)、深度学习(CNN、RNN、LSTM、GAN)等算法之间的又是什么关系呢?这可以说是每一个初学者的疑惑。其实,强化学习类似于人类的学习方法(小孩学走路例子,如图所示),其通过不断试错和尝试的进行学习,并以做某件事带来的奖励作为指导其行为改善的基础进行学习。它从根本上打破以前利用处理数据、选取算法模型、训练与测试这种思维,而是从策略、值函数、模型等角度进行解决问题。为了能够利用数学的进行通用表达,以序列决策问题为典型的马尔科夫决策过程被广泛的使用。此外,动态规划、蒙特卡罗、时序控制三种方法是探索马尔科夫序列最佳策略的重要方法而被使用,并从控制的角度教智能体如何在有限的状态下进行探索和利用。在以上的基础上,策略梯度及神经网络被广泛的应用于策略和值函数的逼近过程中。
2.2 强化学习的试脚石–“模拟环境”
通常情况下,人类的学习是在真实的环境下,但强化学习目前还不能普及到高复杂,具有逻辑推理与情感分析的阶段,所以拥有一个仿真环境是强化学习学习的重要基础。可以说强化学习的成功来自于其在游戏领域的成功,因为游戏只涉及策略的决策,而不需要复杂的逻辑推理(围棋计算落子概率)。目前仿真环境比较多,著名的有OpenAI开发的Gym游戏, Google DeepMind开发的dm_control套件等,Gym中有很多直接可以训练强化学习算法的小游戏,其包括了经典的Atari, Box2D,Classic Control、MuJoCo、Robotics和Toy text等大类,每个类中又包含很多小游戏,例如:CartPole-V1等,在没有人工干预的前提下,可以用强化学习算法让一个小车自己学会如何爬上山坡、也可以让一个看起来傻乎乎的多关节机器人跑起来(在没有任何人类知道下完成)、还可以让一个打砖块游戏一路通关,让机器人手臂拿起东西挪动在固定区域(搬东西)、让游戏小人教会如何滑雪得分以及很多文字生成的游戏等。但俗话说:“工欲善其事,必先利其器”,安装一个属于自己的强化学习仿真环境是一件多么炫酷的事,再也不用在youtube上看别人家的游戏,而是真正的在自己的机器上完成各种打怪升级,完成自己梦想。然而幸运中的不幸是,这些环境只能为我们提供一个特定的,验证和提高算法、开发算法的基础,这已经满足了大多数人的需要,对于那些想要在自己从事的领域、感兴趣的领域做点事的同学来说还远远不够,需要独立自定义一个真正属于自己的开发环境,设置一个合理的奖励方式、来解决一些实际的问题才能真正的有成就感。
2.3 神经网络助推剂
随着计算力的提升,深度学习发展势头特别猛,深度学习三驾马车(Yann LeCun、Geoffrey Hinton和Yoshua Bengio)出版的花书(Deep Learning)可以说是每个深度学习者必备的圣经,也正是深度学习的发展促使了深度强化学习的发展。2013年DeepMind使用了神经网络在Atari游戏中完成了多个游戏超越人类玩家的水平而名声大噪,其通过策略梯度和深度神经网络逼近了值函数和策略,使用了神经网络逼近一定程度上避免了表格存储序列空间大,查询慢等令人窒息的诟病,成为了强化学习发展的新的方向。同时使用Actor-Critic的学习方式巧妙的实现了将值函数和策略分开进行学习的方法,让策略达到最优的时候去指导值函数的更新。从此,深度强化学习成为了一个解决问题的标配,利用神经网络实现了鸟枪换大炮的跨越。同时Actor-Critic思想的重要性更是在Q-learning的实际问题开发中发挥了中流砥柱的作用。
2.4 百花齐放的DRL算法
深度学习的学习元素是数据、算法模型和计算力,同样对于深度强化学习来说也是需要对应的基础,而深度强化学习则和深度学习大不相同,它需要的是仿真模拟环境、算法模型和计算力,这也是深度强化学习算法区别于其他人工智能算法的独特点,在强化学习原理与基础、强化学习的仿真模拟环境以及深度强化学习算法基础上,真正的深度强化学习算法是什么样的?它是如何训练地?如何确定模型以及如何调整超参数等一系列的问题接踵而来。最作为深度强化学习领域里程碑式的标志算法,DQN(Deep Q Network,如图)完成了Atari游戏登上Nature宝座的使命。它通过神经网络逼近值函数,利用了experience-replay和独立Target网络的思路解决了两个独立分布的问题,为后文的深度确定性策略等算法的发展奠定了基础,继而在DeepMind、OpenAI等大佬公司的推动一下,一系列的诸如DDQN等算法刷新了新的游戏记录,最终综合了各种算法优势的RainBow刷新的三观。除此之外,在诸如MuJoCo的游戏中,由于机器人的关节都是连续性变量控制,普通的DQN等由于大规模的存储很难进行学习,由David sliver提出的确定性策略解决了很难收敛等问题,成功的在连续性控制中发挥了重要作用,从此深度确定性策略得到了进一步发展,分布式的深度确定性策略等算法进一步提升了效率,但确定性策略只是确保了能够尽快的收敛,而不能够确保最优,就像深度学习中的SGD,有可能会进入局部最优。于是伯克利大学的John Schulman提出了一种置信域策略优化方法,该方法给出了一个单调的策略改善方法,效率得到了进一步的提升。然而大佬们并不满足,OpenAI和DeepMind几乎同一时间提出了PPO和DPPO算法,同样PPO的思想是限制新策略的更新幅度,不要被冲昏头脑,避免了"物极必反",技术上采用采用了单线程,而DeepMind的DPPO则是采用了多线程解决。说起多线程,可以说大家目前追随的是GPU加速了,其性能也是非常明显的,甚至可以说在深度学习的发展过程中发挥了助推剂作用,然而高昂的价格让很多人开始思考,到底有没有方法可以使得CPU也可以玩起深度强化学习算法,答案是肯定的。A2C,A3C异步方法就是利用了CPU多核的属性完成了在Atari游戏中的性能,其以模型能力好、训练时间断短赢得了美誉,同时Nvida为了进一步提升性能,实现了GPU版的加速A3C,可以说整个算法发展史百花齐放。
2.5 进化之路
随着深度强化学习在Atari游戏等领域的成功应用的逐渐活跃,各行各业领域的专家开始探索在其所在行业中的应用,并硕果累累,比如无人车、空调电力控制等。然而普通的深度强化学习在解决复杂的问题的时候,仍然有时候会显得力不从心,包括很多譬如奖励函数等使得学习效果并不是特别的明显。于是,科学家们提出了许多新的高级深度强化学习算法。当环境维度特别大的时候,传统的强化学习算法会出现维度灾难,导致很难学习,分层强化学习借鉴了我们以前在数据结构与算法中学过的分治法的思想,将一个复杂的强化学习问题分解为几个子问题并分别解决,并取得良好效果,解决了大规模的强化学习问题。此外,面对大多数强化学习算法从头开始学习的方法,新的一种将meta learning学习应用到强化学习中的算法应用而生,其通过大量的学习任务,获得先验知识,使得面对新的的任务的时候学习起来更快、效果更好、同时又能使得泛化能力更强。目前元强化学习(meta-Reinforcement Learning)已经取得了非常不错的成果。然而基于以上所有的强化学习算法,回报函数仍然大多数是人为根据情况设定的,具有很强的主观性和经验性,回报函数(奖励、回报函数后文单独章节讲解)直接影响了模型的收敛等,而逆向强化学习是为了解决回报函数的问题而被提出了的,紧接着学徒学习、最大边际分割规划将会详细进行解释。除此之外,受博弈论二人对弈的思想影响产生的生成对抗网络(Generative Adversarial Network,GAN),其利用一个生成一个评判的思想使得模型能够在很多领域,特别是图像生成方面做到天衣无缝的水平,成为强化学习以后发展的一个重要借鉴之处而被本文进行提及。并且,模仿学习和进化学习作为比较古老经典的算法也是重中之重,因为其根据原始的学习模仿人类操作和自然进化规律的原理是当今其他算法发展的基础,而且基于在近年来计算力的提升,AutoML自动学习在深度强化学习的策略网络、值函数网络等网络结构方面发挥不可估量的潜力。
2.6 分布式计算应用
深度强化学习算法的发展与进步让各个行业享受了科技带来的乐趣与进步,然而一个复杂的应用场景和大规模的工业应用对算法的要求也特别高,然而深度强化学习试错学习的模式需要大量的进行探索学习,在建模方面的计算时间长、收敛速度慢导致整个模型的迭代速度慢而抑制了行业的快速发展,传统的单机CPU、GPU等计算已经远远不能够满足大数据时代的要求,经典的分布式集群(多机)、GPU集群运算开始进入了深度强化学习领域。幸运的是诸如RLlib、Raylib、IMPALA(如图)等开源分布式强化学习框架让每个人都可以在云上(购买云服务)进行计算并训练自己的复杂模型。在计算力得到进一步解决后,多个智能体之间的协作与竞争可以说是生活的直接体现,而这种竞争或者协作的直接目的就是取得最大收益,以博弈论为基础的协作与竞争对多智能体的研究起了很多的指导作用。
3. 2020年-未来
在以上强化学习进步的基础上,未来强化学习的道路到底怎么样?
这个谁也说不明白,但技术的发展总是有趋势,我相信,未来强化学习的发展在于解决以下18个问题关键问题的情况:
- 问题1: 预测与策略评估
- 问题2: 控制与最佳策略选择
- 问题3:不稳定与不收敛问题
- 问题4: End-to-End下的训练感知与控制
- 问题5: 数据利用效率
- 问题6: 无法取得激励
- 问题7: 探索-利用问题(最经典的问题)
- 问题8: 基于模型的学习
- 问题9: 无模型规划
- 问题10: CV,NLP等技术基础
- 问题11:长时间数据储存
- 问题12: 无回报训练
- 问题13: 跨领域学习
- 问题14: 有标签数据与无标签数据混合学习
- 问题15: 多层抽象差分空间的表示与推断
- 问题16: 不同任务环境快速适应
- 问题17: 巨型搜索空间
- 问题18: 神经网络架构设计
更多关于深度强化学习文章请移步:深度强化学习知识总结
原文链接:深度强化学习发展史
边栏推荐
- 业务缓存之体系化设计与开发
- 2.5W 字详解线程与锁了,面试随便问!!
- Mobile/Embedded-CV Model-2018: MobileFaceNets
- Dubins curve study notes and related thinking
- 左益豪:用代码创造一个新世界|OneFlow U
- Flutter 游戏教程之使用 Flutter 和 Flame 重现著名的 T-Rex 游戏
- 以技术御风险,护航云原生 | 同创永益 X 博云举办产品联合发布会
- 开源一夏 | 牛plus,多层嵌套动态JSON该如何解析总结
- 牛刀小试基本语法,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang基本语法和变量的使用EP02
- MongoDB是什么,怎么用?
猜你喜欢
"Weekly Translate Go" This time we have something different!-- "How to Code in Go" series launched
STM32F103ZE+SHT30检测环境温度与湿度(IIC模拟时序)
以技术御风险,护航云原生 | 同创永益 X 博云举办产品联合发布会
功夫再高也怕菜刀,产品经理的那些事
snmptrapd+snmptt接收告警并用py脚本发送
嵌入式C编程中错误异常该如何统一处理?
Machine learning model too slow?Look at Intel (R) extension to accelerate
01-MQ介绍以及产品比较
vs2019+boost library (boost_1_67_0) installation
开源一夏 | 牛plus,多层嵌套动态JSON该如何解析总结
随机推荐
使用.NET简单实现一个Redis的高性能克隆版(三)
Jingkai Safety Supervision App technical service support
面试突击72:输入URL之后会执行什么流程?
关系数据库是怎么确定关系表中的数据的呢?
功夫再高也怕菜刀,产品经理的那些事
Web优化躬行记(6)——优化闭环实践
In ASP.NET Core 2.0, solve the configuration problem of large file upload
The entity List to excel
COMSOL Multiphysics 6.0 software installation package and installation tutorial
业务缓存之体系化设计与开发
英文token预处理,用于将英文句子处理成单词
文档数据库是怎么定位一个文档的呀?
重载与重写有什么区别?
PCL calculates the intersection of two straight lines in space
xgboost 加速
In the.net core, the use of c # realize fastdfs batch file upload more
小程序使用formdata格式传参
NoSQL数据库有哪些优势吗?又有哪些劣势呢?
嵌入式C编程中错误异常该如何统一处理?
Service Mesh迁移原则