《深入浅出强化学习原理入门》学习笔记(一)总结与绪论

1、《深入浅出强化学习》总结

深入浅出强化学习》包含绪论和四个篇章,全书分为两条线索:

第一条线索是强化学习的基本算法

绪论讲解了强化学习的是什么,可以解决什么问题,怎样解决问题,并详细阐释了gym环境的安装构建。

第一篇是强化学习基础,包括第二章马尔科夫决策过程和第三章动态规划方法。

第二篇是基于值函数的强化学习方法,包括第四章基于蒙特卡罗的强化学习方法,第五章基于时间差分的强化学习方法和第六章基于值函数逼近的强化学习方法。

第三篇是基于直接策略探索的强化学习方法,包括第七章策略梯度的强化学习方法,第八章基于置信域策略优化的强化学习方法,第九章基于确定性策略探索的强化学习方法和第十章基于引导策略探索的强化学习方法。

第四篇是强化学习前沿研究。包括第十一章的逆向强化学习算法,十二章的组合策略梯度和值函数方法,第十三章的值迭代网络和第十四章的PILCO方法和拓展。

第二条线索是强化学习算法中用到的基础知识

第2章介绍了概率学基础和随机策略。当模型已知时,值函数的求解转化为线性方程组的求解。

第3 章介绍了线性方程组的数值求解方法——高斯-赛德尔迭代法,并利用时变与泛函分析中的压缩映射证明了算法的收敛性。

第4章介绍了在强化学习算法中需要的统计学重要技术,如重要性采样、拒绝性采样和 MCMC 方法。强化学习中值函数是累积回报的期望,利⽤采样数据计算期望是统计学讨论的主题。

第6章介绍了基本的函数逼近方法:基于非参数的函数逼近和基于参数的函数逼近。在基于参数的函数逼近中,我们重点介绍了神经网络,尤其是卷积神经网络DQN及其变种算法。

第8章介绍了基本的信息论概念和基本的优化方法。在TRPO中,替代目标函数用到了信息论的熵和相对熵的概念,同时 TRPO的求解需要用到各种优化算法。

第10章介绍了大型监督算法常用的 LBFGS优化算法,及其学习中的并行优化算法ADMM算法和KL散度及变分推理。引导策略搜索强化学习的优化目标用到了KL散度和变分推理,以及大型的并行优化算法。

2、强化学习

强化学习又称增强学习,是机器学习一个重要的分支,重点是解决决策优化问题,在什么状态(State,S),采取什么行动(Action,A),才能取得最大的收益(Reward,R)。

3、序贯决策问题

一句话概括强化学习所能解决的问题:序贯决策问题。需要连续不断地做出决策,才能实现最终目标。游戏,驾驶,投资,课程安排,动作模仿,下棋等等都是序贯决策问题,都与决策优化紧密相关。

4、马尔科夫决策过程

强化学习最简单的数学模型是马尔科夫决策过程(Markov Decision Process,MDP),状态S数量有限,采取的行动a数量有限,对于特定的S,反馈收益R是明确的。在某时刻t,采取行动方案at,状态从当前的st转换为s(t+1),但是状态转换只和st有关,和之前时刻的状态无关。

5、动态规划算法

解决MDP问题采用动态规划算法(Dynamic Programming),对马尔科夫决策过程的各项限制不断扩大(即提升问题难度)并研究相应的算法就是强化学习的目标,可以区分为两大演进方向:一是不断挑战更难的问题,从次优解向最优解逼近;二是在不严重影响算法精度的前提下,降低算法的计算成本。

6、强化学习算法演进的两个关键时间节点

1、1998年,Richard S.Sutton 出版了强化学习导论Reinforcement Learning:An Introduction,系统总结了1998年以前强化学习算法的各种进展,强化学习基本理论框架已经形成。
2、DeepMind 提出DQN,将深度网络和强化学习算法结合形成深度强化学习。

7、强化学习算法分类

可以参考我之前整理的内容
链接: 莫烦强化学习课程笔记(一)

8、强化学习基本框架

强化学习的数据和算法是交互的,而非独立的,因此强化学习需要构建一个用于与智能体进行交互的环境。

智能体通过施加动作对环境当前状态进行改变,环境反馈给智能体和动作及环境状态关联的观测回报,并达到新的状态。
在这里插入图片描述

9、强化学习仿真环境gym

原则上来说,凡是能提供智能体与环境进行交互的软件都可以用来作为训练强化学习的仿真环境。必备的两个要素是物理引擎和图像引擎。

物理引擎用来计算仿真环境中物体是如何运动的,其背后的原理是物理定律,如刚体动力学, 流体力学和柔性体动力学等。常用的开源物理引擎有ODE(Open Dynamics Engine)、Bullet、Physx和Havok等。

图像引擎则用来显示仿真环境中的物体,包括绘图、渲染等。常用的图像引擎大都基于 OpenGL(Open Graphics Library)。

《深入浅出强化学习原理入门》一书中,使用的仿真环境为OpenAIgym环境链接: https://github.com/openai/gym。这也是莫烦强化学习课程的项目代码中一直使用的环境。

(1)选用gym平台的原因

第一,gym 是 OpenAI 开发的通用强化学习算法测试平台,背后有Pieter Abbeel、Sergey Levine 等⼈率领的强大团队的支持。

第二,学会了gym的基本应用,可以自己学习使⽤OpenAI的其他开源强化学习软件,如universe、roboschool 和baselines等。

第三,gym本身集成了很多仿真环境,如经典控制中的车摆环境,小车爬山环境、雅达利游戏、棋盘环境等。利用这些写好的环境,可以学习强化学习算法的基本原理。另外,gym是用Python语言写的,可以和深度学习的开源软件如TensorFlow等无缝衔接。

(2)gym环境的安装

详见我另一篇博客。
链接: gym环境在Windows系统下的安装步骤

(3)深入剖析gym环境的构建

下面第一个函数是创建环境,后两个函数是每个环境文件中都包含的函数。在这里插入图片描述

Cartpole的环境⽂件位置:你的gym⽬ 录/gym/envs/classic_control/cartpole.py.
该⽂件定义了⼀个CartPoleEnv的环境类,该类的成员函数有: seed()、step()、reset()和render()。

reset()函数是重新初始化函数。在强化学习算法中,智能体需要⼀次次地尝试并累积经验,然后从经验中学到好的动作。每⼀次尝试我们称之为⼀条轨迹或⼀个episode,每次尝试都要到达终止状态。⼀次尝试结束后,智能体需要从头开始,这就需要智能体具有重新初始化的功能。

def_reset ()
self.state=self.np_random.uniform(low=-0.05, high=0.05, Size=(4,))
 
# 利用均匀随机分布初始化环境状态
self.steps_beyond_done = None
# 设置当前步数为none
return np.array(self.state)

#返回环境的初始化状态

render()函数起到图像引擎的作用,可以直观看到环境中物体的状态,方便代码调试。

Def_render(self,mode='human',close=False):if close:
...
if self.viewer is None:from gym.envs.classic_control import rendering

#这一句导入 rendering 模块,利用 rendering 模块中的画图函数进行图形的绘制

#如绘制 600*400 的窗口函数为
self.viewer = rendering.viewer(screen_width,screen_height)其中 screen width=600,screen height=400 #创建小车的代码为



l,r,t,b =-cartwidth/2,cartwidth/2,cartheight/2,-cartheight/2 axleoffset =cartheight/4.0
cart = rendering.FilledPolygon([(1,b),(1,t),(r,t),(r,b)])


#rendering.FilledPolygon为填充⼀个矩形

#创建完cart的形状,接下来给cart添加平移属性和旋转属性。将⻋的位 移设置到cart 的平移属性中,cart 就会根据系统的状态变化左右运动

step()函数起到物理引擎的作用。输⼊是动作a,输出是:下⼀步状态、⽴即回报、是否终⽌、调试项。它描述了智能体与环境交互的所有信息,是环境文件中最重要的函数。在本函数中,⼀般利用智能体的 运动学模型和动力学模型计算下⼀步的状态和⽴即回报,并判断是否达到 终止状态。
在这里插入图片描述

全部的具体代码实现
链接: https://github.com/gxnk/reinforcement-learning-code.

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值