当前位置: 首页 > news >正文

强化学习入门:RL开发框架Gym简介

前言

 最近想开一个关于强化学习专栏,因为DeepSeek-R1很火,但本人对于LLM连门都没入。因此,只是记录一些类似的读书笔记,内容不深,大多数只是一些概念的东西,数学公式也不会太多,还望读者多多指教。本次阅读书籍为:马克西姆的《深度强化学习实践》
 限于篇幅原因,请读者首先看下历史文章:
 马尔科夫过程
 马尔科夫奖励过程
 马尔科夫奖励过程二
 上述三篇博客已经介绍完书中的第一章内容了,本篇开始介绍第二章内容:openai的RL开源框架Gym。在介绍之前,先用python写一个简单的脚本:

1、demo RL

 我这里直接粘贴下书中提供的:示例代码

import randomclass Environment:def __init__(self):self.steps_left = 10def get_observation(self):return [0.0, 0.0, 0.0]def get_actions(self):return [0, 1]def is_done(self):return self.steps_left == 0def action(self, action):if self.is_done():raise Exception("Game is over")self.steps_left -= 1return random.random()class Agent:def __init__(self):self.total_reward = 0.0def step(self, env):current_obs = env.get_observation()actions = env.get_actions()reward = env.action(random.choice(actions))self.total_reward += rewardif __name__ == "__main__":env = Environment()agent = Agent()while not env.is_done():agent.step(env)print("Total reward got: %.4f" % agent.total_reward)# Total reward got: 3.6443# Total reward got: 4.1748

 上述代码很简单,也没有什么复杂的依赖,能够直接执行。可以发现,每次执行智能体所获得的奖励是不同的。
在这里插入图片描述

2、示例解释

 上述代码定义RL中最关键的两个类:环境和智能体;智能体比较简单:主要.step方法,首先从环境中获取观察–> 选择动作–>从环境中得到奖励–>累加奖励。
 与之对应的环境则是初始化智能体与其交互的总步数,告诉智能体何时游戏结束,并构造一些针对智能体不同的动作,而给予不同奖励的函数。(代码中奖励是用了random)。

3、openai Gym

 Gym是openai开源的RL框架包,下面将简单介绍下核心基类:

3.1.空间

 如下图所示:Space容器类是Gym的一个核心类,定义了RL中的动作空间和观察空间,这两类空间包含:连续动作空间Box类(连续的控制量)、离散动作空间Discrete(上下左右移动)、Tuple类则是定义了一系列Spaces类的元祖。
 另外,还有两个方法:sample()采样一个动作;contains()判断这个动作是否包含在Space类里。
在这里插入图片描述

3.2.环境

 环境类Env是RL的一个基本类:主要包含四个方法:

step():返回奖励、智能体下一步动作、下一个观察等;
reset():当前片段结束,重置环境;
action_space():环境中允许出现的动作;
observation_space():环境中允许出现的观察;

总结

 本篇主要从代码角度介绍了RL的一些基本组件,以及Gym的基类,后面会提供实际代码,从实战中才能掌握Gym框架。

相关文章:

  • Docker run命令-p参数详解
  • 计算机网络-MPLS VPN报文转发
  • vue3中RouterView配合KeepAlive实现组件缓存
  • JavaWeb 开发流程
  • 阿里发布扩散模型Wan VACE,全面支持生图、生视频、图像编辑,适配低显存~
  • LeetCode-链表-反转链表+链表的中间结点
  • Android Handler/Looper线程管理实战攻略:从零到企业级开发
  • Java详解LeetCode 热题 100(18):LeetCode 73. 矩阵置零(Set Matrix Zeroes)详解
  • 【面试题】Session 和 Cookie 的区别
  • C++之内存分配new与 delete
  • 云计算与大数据进阶 | 28、存储系统如何突破容量天花板?可扩展架构的核心技术与实践—— 分布式、弹性扩展、高可用的底层逻辑(下)
  • 计算机网络学习(一)—— OSI vs TCP/IP网络模型
  • 【Linux】第二十五章 运行容器
  • 量子计算与云计算的融合:技术前沿与应用前景
  • COMPUTEX 2025 | 广和通创新解决方案共筑AI交互新纪元
  • Ubuntu 20.04卸载并重装 PostgreSQL
  • 【算法创新+设计】灰狼算法GWO+扰动算子,求解大规模TSP问题利器
  • 基于python的机器学习(七)—— 数据特征选择
  • (八)深度学习---计算机视觉基础
  • 大语言模型 16 - Manus 超强智能体 Prompt分析 原理分析 包含工具列表分析
  • 域名分类网站/哈尔滨百度网站快速优化
  • 外贸官网建设/谷歌seo快速排名软件首页
  • 网站建设功能介绍/市场营销师报名官网
  • 做外贸网站渠道/最近的国际新闻热点
  • 网站建设那家好/网络营销好学吗
  • 上海嘉定区网站建设/如何获取热搜关键词