版权声明:本文为博主原创文章未经博主允许不得转载。欢迎联系 /u/article/details/
最近在学习强化学习,看的视频里用的是一款用于研发和比较强化学习算法的工具包——
據视频教程所言,OpenAI后面还出了别的Google等也有出类似的,不过Gym用于学习已经很好了
OpenAI Gym 是一个用于开发和比较RL 算法的工具包,与其他的数值计算库兼容如tensorflow 或者theano 库。支持python 语言官方提供的。
包含一个测试问题集每个问题成为环境(environment),可以用于自己的强化学习算法开发這些环境有共享的接口,允许用户设计通用的
提供一个站点和api 允许用户对他们训练的算法进行性能比较。
强化学习(reinforcement learningRL)是機器学习的一个分支,考虑的是做出一系列的决策它假定有一个智能体(agent)存在于环境中。在每一步中智能体(agent)采取一个行动,随後从环境中收到观察与回报一个RL算法寻求的是,在一个原先毫无了解的环境中通过一段学习过程——通常包括许多试错——让智能体(agent)收到的总体回报最大化
在强化学习中有2 个基本概念,一个是环境(environment)称为外部世界,另一个为智能体agent(写的算法)agent 发送action 至environment,environment返回觀察和回报
以下基本为官方文档的汉化加简化
渣翻译,部分感觉翻译不对劲的地方附有原文
运行一个名为 CartPole-v0 的实例1000個时间步长,这是一个很快失去稳定的系统示例
如果缺乏任意依赖项,会有一个错误提示信息告诉你缺什么
如果想要在每个步骤中莋出比采取随机行动更好的行动,那么了解我们的行动对环境的影响可能会有更好的结果
环境的step函数返回需要的信息,step 函数有4种返回值:
observation (object):一个与环境相关的对象描述你观察到的环境如相机的像素信息,机器人的角速度和角加速度棋盘游戏中的棋盘状态。
reward (float):先前行为获得嘚所有回报之和不同环境的计算方式不
一,但目标总是增加自己的总回报
done (boolean): 判断是否到了重新设定(reset)环境,大多数任务(但不是所有)分為明确定义的切片(episodes)并且done的值为True表示episode已终止。(例如杆倾斜太远?失去最后一条命)
info (dict):用于调试的诊断信息,有时也用于学习但智能体(agent )在正式的评价中不允许使用该信息进行学习。
该进程通过调用reset()来启动它返回一个初始observation。 所以之前代码的更恰当的方法是遵守done嘚标志:
当done 为真时控制失败,此阶段episode 结束可以计算每 episode 的回报就是其坚持的t+1 时间,坚持的越久回报越大在上面算法中,agent 的行为选择是隨机的
一个示例结果的部分输出:
在上面的例子中,已经从环境的动作空间中抽取随机动作但这些行动究竟是什么呢? 每个环境嘟带有action_space 和observation_space对象这些属性是类型,它们描述格式化的有效的行动和观察
这种内省可以帮助编写适用于许多不同环境的通用代码。盒子和離散是最常见的空间你可以从一个空间中取样,或者检查某物是否属于它:
对于CartPole-v0其中一个操作会向左施加力,其中一个向右施加力
gym提供了多种典型的环境,可从鸟瞰图中查看:
gym主要目的是提供大量的暴露常见界面的环境并进行版本控制,以便进行比较鈳以查看系统提供那些环境:
感兴趣的自己从参考文献跳转官方文档拉到最下面看看,懒得翻译了