强化学习(Reinforcement Learning)背景介绍

强化学习前世今生

如今机器学习发展的如此迅猛,各类算法层出不群,特别是深度神经网络的发展,为非常经典的强化学习带来了新的思路,虽然强化学习一直在发展中,但在2013年这个关键点,DeepMind大神David Sliver使用了神经网络逼近函数值后,开始了新的方向,又一发不可收拾的证明了确定性策略等,纵观近四年的ICML,NPIS等会议论文,都有涉猎。因此本文在参考已有论文,博客、专栏、书籍、视频的基础上开始系列博客学习记录,如有写的错误地方,还望大家批评指教。


开始正文,说起强化学习,估计每本涉及到强化学习的书,视频等都会提一个名词 " AlphaGoZero " 本文不大肆吹起概念,具体自己 阅读其相关资料,:

Content:  https://deepmind.com/blog/alphago-zero-learning-scratch/
                 https://xijunlee.github.io/2017/11/03/Zero/
Paper:      https://deepmind.com/documents/119/agz_unformatted_nature.pdf
Code:       https://github.com/search?l=Python&q=alphaGo+zero&type=Repositories&utf8=%E2%9C%93


强化学习机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益。其灵感来源于心理学中的行为主义理论,即有机体如何在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的预期,产生能获得最大利益的习惯性行为。这个方法具有普适性,因此在其他许多领域都有研究,例如博弈论控制论运筹学信息论、仿真优化、多主体系统学习群体智能统计学以及遗传算法。在运筹学和控制理论研究的语境下,强化学习被称作“近似动态规划”(approximate dynamic programming,ADP)。在最优控制理论中也有研究这个问题,虽然大部分的研究是关于最优解的存在和特性,并非是学习或者近似方面。在经济学博弈论中,强化学习被用来解释在有限理性的条件下如何出现平衡。Wiki地址


1.1强化学习与监督学习,非监督学习之间的关系

强化学习是机器学习的一种方法,同样类似于深度学习,他们之间的关系可以用一幅图简单明了的描述:

RL与有监督学习、无监督学习的比较: 
  (1)有监督的学习是从一个已经标记的训练集中进行学习,训练集中每一个样本的特征可以视为是对该situation的描述,而其label可以视为是应该执行的正确的action,但是有监督的学习不能学习交互的情景,因为在交互的问题中获得期望行为的样例是非常不实际的,agent只能从自己的经历(experience)中进行学习,而experience中采取的行为并一定是最优的。这时利用RL就非常合适,因为RL不是利用正确的行为来指导,而是利用已有的训练信息来对行为进行评价。 
  (2)因为RL利用的并不是采取正确行动的experience,从这一点来看和无监督的学习确实有点像,但是还是不一样的,无监督的学习的目的可以说是从一堆未标记样本中发现隐藏的结构,而RL的目的是最大化reward signal。 
  (3)总的来说,RL与其他机器学习算法不同的地方在于:其中没有监督者,只有一个reward信号;反馈是延迟的,不是立即生成的;时间在RL中具有重要的意义;agent的行为会影响之后一系列的data。

1.2 强化学习的学习过程

强化学习它有自己的一套学习方法,下图是强化学习的示意图:

从图上我们可以看到强化学习它由两部分组成:智能体和环境。我们可以这样理解:

俗话解释一下:比如,我们从沙发旁走到门口,当我们起身之后,首先大脑获取路的位置信息,然后我们确定从当前位置向前走一步,不幸运的是我们撞墙了,这明显是个负反馈,因此环境会给我们一个负奖励,告诉我们这是一个比较差的走路方式,因此我们尝试换个方向走(走哪个方向比较好呢,后文会会讲到随机策略、确定性策略等策略决策《强化学习系列(3):强化学习策略讲解》),就这样不断的和环境交互尝试,最终找到一套策略,确保我们能够从沙发旁边走到门口。在这个过程中会得到一个最大的累计期望奖励。(求累计,期望,奖励的原因见后文)

基于以上过程,非常值得一提的是奖励函数的设置,因为这个强化学习过程中对智能体动作好坏的评价,我会在后文:《强化学习系列(4):强化学习中奖励函数的设置和使用方法 》陆续讲解

1.3   强化学习的应用方向

   说了这么多,为什么要学习这门技术呢,无非有两种原因,1、找到新方向,继续学术研究;2、将该技术能够实际的用到工业界中,产生效益。还是不谈人生谈技术,  那么强化学习目前有哪些应用呢?目前调查了有以下:

   1、控制类:机械臂控制、视频游戏(CNN获取图像信息,提取特征信息等处理),无人驾驶等

       https://www.youtube.com/watch?v=W_gxLKSsSIE&list=PL5nBAYUyJTrM48dViibyi68urttMlUv7e

       https://www.youtube.com/watch?v=CIF2SBVY-J0

       https://www.youtube.com/watch?v=5WXVJ1A0k6Q

       https://www.youtube.com/watch?v=-YMfJLFynmA

   2、文本序列预测,机器翻译等 https://zhuanlan.zhihu.com/p/22385421, https://zhuanlan.zhihu.com/p/29168803

   3、推荐系统:(https://m.aliyun.com/yunqi/articles/66158,http://geek.csdn.net/news/detail/112318)

还有很多的应用场景,陆续补充,但用一句话总结:只要涉及到智能决策问题,在符合强化学习的学习规则的情况下的都可以使用。

2、强化学习的environment和学习资料网址的一下简单汇总。


环境:
OpenAI (gym):官网(http://gym.openai.com/envs/),这上面有很多的控制游戏(过山车,二级立杆,Atari游戏等),并提供了非常好的接口可以学习,非常推荐:
具体的使用方法见github(https://github.com/openai/gym)



当然,也可以自己动手写环境。接下来说相关学习资料,目前本文总结了有以下资料,

学习资料:

书籍:

1、Sutton的书《Reinforcement learning: an introduction》,网上电子版(这点国外的非常良心,都是把手稿版放出来)

2、郭宪博士2017年写的深入浅出强化学习:原理入门》,这是一本入门级别的书,语言通俗易懂

3、《Algorithm for reinforcement learning》,Morgan&Claypool的书推荐大家看

4、《Reinforcement learning and dynamic programming using function approximators》

视频:

David Sliver在UCL的视频,youtube有对应资源(B站上有中文字幕,英语一般的伙伴有福气了)

总之,只要你想学习,总会找到很多资源的,同时搞科研和技术,建议学会科学上网,毕竟度娘有时候还是不给力,尤其搜索英文名称的时候就.......结合使用,还是相当给力!


写的若有错误之处,欢迎大家批评指正!


参考文献:

1、《深入浅出强化学习:原理入门》,2017,郭宪

2、《Reinforcement learning: an introduction》2017,second edition,Richard Sutton

3、http://blog.csdn.net/coffee_cream/article/details/57085729

猜你喜欢

转载自blog.csdn.net/wangh0802/article/details/84849241