目录
0.1 先来看看强化学习都在干什么
简单来说,让智能体不断地在定义的环境中做出行为,并且通过反馈的信号来学习产生正确行为的过程
1.1 强化学习与监督学习,非监督学习之间的关系
1.2 强化学习的学习过程
1.3 强化学习的应用方向
1.4 强化学习运行环境和资料汇总
1.4.1 环境
1.4.2 资料
1.4.2.1 首先请阅读这篇文章:
1.4.2.2 推荐使用Richard S. Sutton and Andrew G. Barto: 的Reinforcement learning: an introduction这本书的预印本深入研究RL数学:
1.4.2..3《Algorithm for reinforcement learning》, Morgan&Claypool
1.4.2.4《Reinforcement learning and dynamic programming using function approximators》
资源打包dupan下载地址:
强化学习是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益。其灵感来源于心理学中的行为主义理论,即有机体如何在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的预期,产生能获得最大利益的习惯性行为。这个方法具有普适性,因此在其他许多领域都有研究,例如博弈论、控制论、运筹学、信息论、仿真优化、多主体系统学习、群体智能、统计学以及遗传算法。在运筹学和控制理论研究的语境下,强化学习被称作“近似动态规划”(approximate dynamic programming,ADP)。在最优控制理论中也有研究这个问题,虽然大部分的研究是关于最优解的存在和特性,并非是学习或者近似方面。在经济学和博弈论中,强化学习被用来解释在有限理性的条件下如何出现平衡。
强化学习是机器学习的一种方法,同样类似于深度学习,他们之间的关系可以用一幅图简单明了的描述:
RL与有监督学习、无监督学习的比较:
(1)有监督的学习是从一个已经标记的训练集中进行学习,训练集中每一个样本的特征可以视为是对该situation的描述,而其label可以视为是应该执行的正确的action,但是有监督的学习不能学习交互的情景,因为在交互的问题中获得期望行为的样例是非常不实际的,agent只能从自己的经历(experience)中进行学习,而experience中采取的行为并一定是最优的。这时利用RL就非常合适,因为RL不是利用正确的行为来指导,而是利用已有的训练信息来对行为进行评价。
(2)因为RL利用的并不是采取正确行动的experience,从这一点来看和无监督的学习确实有点像,但是还是不一样的,无监督的学习的目的可以说是从一堆未标记样本中发现隐藏的结构,而RL的目的是最大化reward signal。
(3)总的来说,RL与其他机器学习算法不同的地方在于:其中没有监督者,只有一个reward信号;反馈是延迟的,不是立即生成的;时间在RL中具有重要的意义;agent的行为会影响之后一系列的data。
强化学习它有自己的一套学习方法,下图是强化学习的示意图(非常简单):
从图上我们可以看到强化学习它由两部分组成:智能体和环境。我们可以这样理解:
俗话解释一下:比如,我们从沙发旁走到门口,当我们起身之后,首先大脑获取路的位置信息,然后我们确定从当前位置向前走一步,不幸运的是我们撞墙了,这明显是个负反馈,因此环境会给我们一个负奖励,告诉我们这是一个比较差的走路方式,因此我们尝试换个方向走(走哪个方向比较好呢,后文会会讲到随机策略、确定性策略等策略决策《强化学习系列(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)
还有很多的应用场景,陆续补充,但用一句话总结:只要涉及到智能决策问题,在符合强化学习的学习规则的情况下的都可以使用。
通过前面这个图我们可以清晰的看到,这里有两大主体
1.Agent
2.Environment
是的,这也是运行环境中的主题
Environment是给agent提供其行为评估和激励信号的程序模块(A toolkit for developing and comparing reinforcement learning algorithms.),自己写当然也是可以的,但是已经有人造好了轮子
OpenAI (gym):http://gym.openai.com/
GitHub /gym:: https://github.com/openai/gym
这上面有很多的控制游戏(过山车,二级立杆,Atari游戏等),并提供了非常好的接口可以学习
然后Agent,也是有人写过的,而且是与上面的gym相匹配的,我们要做的就是自己改写一下agent的抽象类然后放到上面的gym Environment里面就好
下面推荐一个我自己在用的:
GitHub - keras-rl : Deep Reinforcement Learning for Keras.
https://github.com/keras-rl/keras-rl
这是一个python以及Keras写的项目,上手起来相对容易
所有下载地址见文末
它将介绍使用深度Q-Network (DQN)来逼近对解决马尔可夫决策过程至关重要的值函数的思想。
所有下载地址见文末
所有下载地址见文末
所有下载地址见文末
链接:https://pan.baidu.com/s/1EP-SdOY0C8gwhHas8gPp4A&shfl=sharepset
提取码:kdgb