1 绪论
1.1 这是一本什么书
强化学习算法?
AlphaGo大胜世界围棋冠军李世石和柯洁事件,核心算法就用到了强化学习算法。
1.2 强化学习解决什么问题
案例1 非线性系统二级倒立摆
案例2 AlphaGo与柯洁的第二局棋
案例3 机器人学习站立
......
智能决策问题==强化学习要解决的问题,更准确的是序贯决策问题(即需要连续不断地做出决策,才能实现最终目标的问题)
1.3 强化学习如何解决问题
强化学习解决序贯决策问题,监督学习解决智能感知问题。
1. 监督学习
最典型的例子是数字手写体识别,当给出手写数字时,监督学习需要判别该数字是多少。也就是说,监督学习需要感知到当前的输入到底长什么样子,当智能体感知到输入长什么样子时,智能体就可以对它进行分类了。智能感知其实就是在学习输入长得像什么(特征),以及与该长相一一对应得是什么(标签)。所以,智能感知必不可少的前提是需要大量长相差异化的输入以及输入相关的标签。因此,监督学习解决问题的方法就是输入大量带有标签的数据,让智能体从中学到输入的抽象特征并分类。
2.强化学习
强化学习要解决的是序贯决策问题,它不关心输入长什么样子,只关心当前输入下应该采取什么动作才能实现最终的目标。(当前采用什么动作与最终的目标有关。)
这就需要智能体不断地与环境进行交互。智能体通过动作与环境进行交互时,环境会返给智能体一个当前的回报,智能体则根据当前的回报评估所采取的动作,有利于实现目标的动作被保留,不利于实现目标的动作被衰减。
3.强化学习和监督学习的异同
同:两者都需要大量的数据进行训练
异:但两者所需要的数据类型不同。监督学习需要的是多样化的标签数据,强化学习需要的是带有回报的交互数据。
4.强化学习算法获取数据
有自己的获取数据、利用数据的独特方法。
5.强化学习算法的发展历史
两个关键的时间点
(1)1998年,Richard S. Sutton出版了他的强化学习导论第一版
(2)2013年,DeepMind提出来了DQN(Deep Q Network),将深度网络与强化学习算法结合形成强化深度学习。2013年之后,随着深度学习的火热,深度强化学习也越来越引起大家的注意。特别的,2016和2017年,谷歌的AlphaGo连续两年击败世界围棋冠军。
1.4 强化学习算法分类
强化学习算法种类繁多,一般按以下几个标准来分类
(1)根据是否依赖模型:基于模型的强化学习算法、无模型的强化学习算法。
共同点是通过环境交互获得数据,不同点是利用数据的方式不同。基于模型的强化学习算法利用与环境交互得到的数据学习系统或者环境模型,再基于模型进行序贯决策。无模型的强化学习算法则是直接利用环境交互获得的数据改善自身的行为。
两种方法各有优劣。基于模型的比无模型的算法效率更高,因为智能体在探索环境时可以利用模型信息。但是,有些无法建立模型的只能选后者。无模型的不需要建模,因此相较于有模型的,更具有通用性。
(2)根据策略的更新和学习方法:基于值函数的强化学习算法、基于直接策略搜索的强化学习算法、AC算法。
基于值函数的强化学习算法:指学习值函数,最终的策略根据根据值函数贪婪得到。也就是说,任意状态下,值函数最大的动作为当前最优策略。
基于直接策略搜索的强化学习算法:一般是将策略参数化,学习实现目标的最优参数。
AC算法:联合使用前两种方法。
(3)根据环境返回的回报函数是否已知:正向强化学习和逆向强化学习。
在强化学习中,回报函数是人为指定的,回报函数指定的强化学习算法是正向强化学习。很多时候,回报无法人为指定,如无人机的特效表演,这时可以通过机器学习的方法由函数自己学出来回报。
机器学习常被分为:监督学习、非监督学习和强化学习。
1.5 强化学习仿真环境构建
学习算法的共同点是从数据中学习,因此数据是学习算法最基本的组成元素。监督学习的数据独立于算法本身。而强化学习的数据是智能体与环境的交互数据。
仿真环境必备的两个要素是物理引擎和图像引擎。
1.物理引擎
用来计算仿真环境中物体是如何运动的,其背后的原理是物理定律,如刚体动力学、流体力学、柔性体动力学等。
常用的开源的物理引擎有ODE(open Dynamisc Engine)、Bullet 、Physx等。
2.图像引擎
用来显示仿真环境中的物体,包括绘图、渲染等。
常用的图像引擎大都基于OpenGL(Open Graphics Library)
学习中,使用的仿真环境是openAI 的gym.
https://github.com/openai/gym