文章目录

  • 强化学习简介
  • gym简介
  • CliffWalking-v0

强化学习简介

我们知道,强化学习广泛应用于玩一些较为简单的游戏,其思想就是:过一段时间(例如0.1秒)拍一张(游戏)图片,然后机器看一下,看完之后做出决定,下一步应该干些什么,例如是往左移动还是往右移动,还是射击。执行完这一步动作之后,机器会读取游戏的分数,如果分数高机器就会记住,以后遇到那个图片的时候就走这一步,相反,如果分数低或者直接被敌人杀了,机器就会记住下次再遇到那个图片,就不走那一步了。如此反复下去,直到学会怎么玩游戏。
在这个例子中,机器(玩家)就是agent,state就是图像,Environment就是游戏,reward就是当前得分,action就是左移,右移等玩家可以执行的游戏动作。如下:

gym简介

import gym

gym是大名鼎鼎的openai组织开发的,其还开发过GPT3。

其初衷是:We provide the environment; you provide the algorithm.

也就是说gym来提供强化学习的环境,而研究人员提供强化学习的算法。

可以看到,环境是强化学习甚至gym中非常重要的概念,gym中内置了一些环境(http://gym.openai.com/envs/#classic_control,http://gym.openai.com/envs/),其中一个就就是我们今天要玩的游戏CliffWalking-v0,如下:

初始默认你会在左下角,黑色代表悬崖,踩上去并不会game over,但是会获得非常大的惩罚(reward=-100),黄色是我们的终点,一旦踩到终点,这局游戏结束,于是agent开始反思这局玩得怎么样(这是强化学习算法的核心,目前有很多算法),并调整策略,比如下次再也不踩悬崖了。

下面我们就来实战玩一局游戏,但是由于本文的篇幅限制,我们并不会涉及玩完一局游戏之后agent如何反思,调整,这个内容之后会专门出一篇文章来总结当今流行的算法。

CliffWalking-v0

那么我们如何开启这个环境呢?如下即可:

env=gym.make("CliffWalking-v0")#v0表示版本一

然后env就有了如下的方法。

env.reset()#初始化这个游戏,返回36,即机器玩家的初始位置,是下面的x
env.render()#返回一个图像


注意到一行12个位置,x的位置是36(本来是37,但是从0开始编码)。

其中C表示cliff,悬崖。T表示terminal终点。

然后我们使用接口(2),即让机器玩家执行动作的接口。比如我们向上移动一个位置,在这个游戏中,0,1,2,3分别代表上,右,下,左。

print(env.step(0))#向上走一步
env.render()#重绘图像(提交)

24代表位置,-1代表奖励,由于没有走到终点,所以奖励为负数,为什么不是奖励为0呢,奖励为负数的好处在于可以让我们尽快的走到终点。False就是说没有到达终点,本局游戏还没有结束。最后一个字典类型用不到,是辅助信息不用管。

一个注意的点是:如果走到了终点T,那么需要我们手动去重置游戏reset(),否则你继续step的话,其仍然还是在原地不动。

强化学习之gym初战实战案例:悬崖案例CliffWalking-v0。相关推荐

  1. 深度强化学习之gym扫地机器人环境的搭建(持续更新算法,附源码,python实现)

    想要源码可以点赞关注收藏后评论区留下QQ邮箱 本次利用gym搭建一个扫地机器人环境,描述如下: 在一个5×5的扫地机器人环境中,有一个垃圾和一个充电桩,到达[5,4]即图标19处机器人捡到垃圾,并结束 ...

  2. 【开发随笔】以强化学习环境 gym 库为例:为什么日常中我应该试图标准化接口?

    前言: 这两天在看 openAI 的 gym ,并尝试用其测试自己写的 Sarsa .一塌糊涂,这里来记录下经验教训.官网对于 gym 的文档不多,也不详细,读了 gym 的源码,很直观,也确实用不着 ...

  3. 强化学习使用gym时出现错误:ValueError: too many values to unpack (expected 4)

    目录 1.问题描述 2.问题分析 (1)env.step()的返回值问题 (2)ale-py包问题 3.问题解决 4.总结 1.问题描述 最近在学强化学习,用parl和gym实现Pong游戏的策略梯度 ...

  4. 强化学习Openai Gym基础环境搭建

    ​ Gym提供了一些基础的强化学习环境,并且集成了许多有意思的环境,下面我们来一起看下如何在你的电脑上搭建Gym的开发环境吧. ​ Gym的Github地址. 1. ReadMe解读 ​ Gym 是一 ...

  5. 唐宇迪强化学习笔记之项目实战(flabby bird)

    强化学习: 学习系统没有像很多其它形式的机器学习方法一样被告知应该做出什么行为,必须在尝试了之后才能发现哪些行为会导致奖励的最大化,当前的行为可能不仅仅会影响即时奖励,还会影响下一步的奖励以及后续的所 ...

  6. 利用强化学习进行股票操作实战(四)

    本次实战代码仍是在之前基础上进行了一些修改.之前只在一支股票上进行训练,这次我将模型放在多支股票上训练,并在多支股票上进行了测试.对于多支股票的训练策略,没有参考过别人的训练方案(做这个的比较少).我 ...

  7. 利用强化学习进行股票操作实战(三)

    与上一篇文章相同之处 对于交易策略,与上一篇文章相同,当发出买入指令时,一次性全部买入:当发出卖出指令时,一次性全部卖出.还没有添加加减仓操作. 模型仍然用的是DQN模型. 新增内容 在之前的基础上加 ...

  8. 强化学习之Q-learning算法实战2

    之前用Q-learning算法实现了一维和二维空间的探宝游戏,取得了不错的效果,证明了Q-learning算法对于状态不大的或离散状态下的RL问题有较好的收敛效果,为了强化对Q-learning的认识 ...

  9. Ubuntu16.04LTS下搭建强化学习环境gym、tensorflow

    1.安装Anaconda. 去清华镜像下载anaconda3_4.3.0-linux-x86_64.sh,然后在终端中输入以下命令进行安装: cd downloads bash anaconda3_4 ...

最新文章

  1. qt chart 如何使网格填满整个窗口_Qt实现截屏的关键函数
  2. 如何在Spring Boot中玩转智能合约
  3. Nginx 虚拟主机 VirtualHost 配置
  4. vscode设置代码编辑时组合键代替方向键移动光标
  5. DL之MobileNet:MobileNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  6. 全文索引 排名计算问题
  7. linux sftp创建多用户,linux下SFTP多用户创建
  8. 图论 Make Unique:有向图和无向图的一些算法
  9. 如何拼局域网所有ip_求助 家庭网络如何布线让所有网口在同一个局域网内
  10. rn项目 假如cocoapods_React Native 如何集成到原生IOS项目中?
  11. 《Unix网络编程(第3版)》代码编译的一些问题
  12. cefsharp 网页打印不好用_WinFrom 的 WebBrowser 替换为 CefSharp
  13. 算法:874. 模拟行走机器人
  14. 华硕Y450拆机清灰、拆下光驱助散热、卸载无用软件
  15. 我的Java学习历程03【Java8接口新特性-下】
  16. 详解LVDS通信协议
  17. 百度翻译vs谷歌翻译
  18. 【3D目标检测】点云数据 To 360度全景图
  19. vue项目出现错误component lists rendered with v-for should have explicit keys
  20. 2018-12-22-jekyll-theme-H2O

热门文章

  1. 北京智源研究院招募社区编辑:我在国内AI研究者密度最大的办公室等你
  2. 智源论坛报名 | 自然语言处理
  3. 程序员们,不妨高调一点儿!2021,一起冲!
  4. CVPR2018上关于目标检测(object detection)
  5. java.util.ServiceLoader源码分析
  6. IntelliJ IDEA WEB项目的部署配置
  7. 独家 | 一文读懂人工神经网络
  8. 刚刚!饶毅再次撰文,回应耿美玉,称其未遵守学术规范
  9. 你的厨房被水淹了!别担心,这只是3D深度估计做出的特效
  10. 2021阿里全球数学竞赛获奖名单出炉!北大获奖人数最多!