一、小雅自带tutorial文件教程

下载压缩包

这是elegantrl的开源地址: ElegantRL
在这里插入图片描述

我使用的是云服务器平台,上传压缩包之后,使用Linux解压缩命令,将压缩包解压。

在这里插入图片描述

使用conda新建一个虚拟环境

conda create -n ElegantRL
conda activate ElegantRL

在这里插入图片描述

安装elegantrl包

pip install elegantrl

如果出现以下报错,是因为,问题出在安装 box2d-py 时缺少 swig 工具。swig 是一个用于将 C/C++ 代码与 Python 集成的工具,而 box2d-py 依赖于它来编译其 C++ 扩展
在这里插入图片描述

sudo apt update
sudo apt install swig

再重新运行pip install elegantrl
在这里插入图片描述

打开jupyter,我需要把创建的虚拟环境ElegantRL加入到kernel中

在这里插入图片描述
在虚拟环境中安装 ipykernel,这是一个用于将虚拟环境添加到 Jupyter Kernel 的工具。

pip install ipykernel
python -m ipykernel install --user --name=ElegantRL --display-name "Python (ElegantRL)"

–name=ElegantRL:指定 Kernel 的名称(内部标识)。

–display-name “Python (ElegantRL)”:指定在 Jupyter Notebook 中显示的名称。
在这里插入图片描述
现在选择kernel时,可以选择我创建的虚拟环境了
在这里插入图片描述

先学习一下发布的几个教程文件

如果刚才没有在虚拟环境中安装elegantrl包,在教程文件ipynb中,作者首先提供了通过github下载elegantrl的方式,点击运行即可。

# install elegantrl library
!pip install git+https://github.com/AI4Finance-LLC/ElegantRL.git

在这里插入图片描述
第二部分是要导入需要用到的包
在这里插入图片描述
关于包的结构,如下图所示。
在这里插入图片描述
gym.logger.set_level(40) 是 OpenAI Gym 库中的一个设置,用于控制日志输出的级别。具体来说,这行代码的作用是将 Gym 的日志级别设置为 40,即 ERROR 级别,从而屏蔽掉所有低于 ERROR 级别的日志信息(如 WARNING、INFO、DEBUG 等)。

日志级别说明
在 Python 的 logging 模块中,日志级别从低到高分为以下几种:
DEBUG (10):详细的调试信息。
INFO (20):一般的信息性消息。
WARNING (30):警告信息,表示潜在的问题。
ERROR (40):错误信息,表示程序出现了问题。
CRITICAL (50):严重错误,可能导致程序崩溃。

通过设置日志级别,可以控制哪些级别的日志信息会被输出。例如:
如果设置为 WARNING (30),则只会输出 WARNING、ERROR 和 CRITICAL 级别的日志。
如果设置为 ERROR (40),则只会输出 ERROR 和 CRITICAL 级别的日志。
gym.logger.set_level(40) 的作用
屏蔽警告信息:
Gym 在某些情况下会输出警告信息(如环境过时、参数不推荐等)。
通过将日志级别设置为 ERROR,可以屏蔽这些警告信息,使输出更加简洁。
减少干扰:
在训练强化学习模型时,过多的日志信息可能会干扰对训练过程的观察。
屏蔽不必要的日志信息可以让输出更加专注于关键信息。

第三部分是创建环境
在这里插入图片描述

代码解释

gym.make(“BipedalWalker-v3”)
这是 OpenAI Gym 的标准方法,用于创建 BipedalWalker-v3 环境。
BipedalWalker-v3 是一个双足机器人行走任务,目标是让机器人在复杂地形上行走。

get_gym_env_args(env, if_print=False)
这是一个ElegantRL 库中的自定义函数,用于从 Gym 环境中提取关键信息。

参数:
env:Gym 环境对象。
if_print:是否打印提取的信息。这里设置为 False,表示不打印。

输出结果解释

  1. env_name
    环境名称:BipedalWalker-v3。

表示这是一个双足机器人行走任务。

  1. num_envs
    环境数量:1。

表示当前只使用了一个环境实例。

  1. max_step
    每个 episode 的最大步数:1600。

如果智能体在 1600 步内没有完成任务,episode 会自动终止。

  1. state_dim
    状态空间的维度:24。

表示观测空间是一个 24 维的向量,通常包括机器人的关节角度、速度、地形信息等。

  1. action_dim
    动作空间的维度:4。

表示动作空间是一个 4 维的向量,通常用于控制机器人的关节角度或力度。

  1. if_discrete
    动作空间是否为离散:False。

表示动作空间是连续的,而不是离散的。

第四部分:指定强化学习智能体(Agent)和环境(Environment)
在这里插入图片描述
初始化配置
args = Config(AgentPPO, env_class=env_func, env_args=env_args)
Config 是一个ElegantRL库中的配置类,用于初始化训练参数。
参数:
AgentPPO:指定使用的强化学习算法,这里是 PPO(Proximal Policy Optimization)。
env_class:环境创建函数,这里是 gym.make。
env_args:环境参数,这里是前面定义的 env_args 字典。

在这里插入图片描述
这段代码用于设置强化学习训练中的超参数(Hyper-parameters)。以下是代码的详细解释:


1. args.target_step = args.max_step * 4

  • 作用:设置每次训练的目标步数。
  • 解释
    • args.max_step 是每个 episode 的最大步数(在之前的代码中设置为 1600)。
    • args.target_step 是每次训练的目标步数,这里设置为 args.max_step * 4,即 6400
    • 这意味着每次训练会收集 6400 步的经验数据。

2. args.gamma = 0.98

  • 作用:设置折扣因子(Discount Factor)。
  • 解释
    • gamma 是强化学习中的一个重要超参数,用于衡量未来奖励的重要性。
    • gamma 的取值范围是 [0, 1],值越大表示未来奖励越重要。
    • 这里设置为 0.98,表示未来奖励的权重较高。

3. args.eval_times = 2**2

  • 作用:设置评估次数。
  • 解释
    • args.eval_times 是每次评估时运行的 episode 次数。
    • 这里设置为 2**2,即 4 次。
    • 评估用于测试智能体在训练过程中的表现。

4. args.repeat_times = 8

  • 作用:设置每次更新时的重复次数。
  • 解释
    • args.repeat_times 是每次更新策略时重复使用经验数据的次数。
    • 这里设置为 8,表示每次更新会重复使用经验数据 8 次。
    • 这有助于提高数据利用率,但可能会增加过拟合的风险。

总结

这段代码设置了以下超参数:

  1. 目标步数:每次训练的目标步数为 6400
  2. 折扣因子gamma 设置为 0.98,表示未来奖励的权重较高。
  3. 评估次数:每次评估运行 4 个 episode。
  4. 重复次数:每次更新策略时重复使用经验数据 8 次。

这些超参数对强化学习算法的性能和收敛速度有重要影响。通过调整这些参数,可以优化训练过程。

如果 args.eval_times = 4,则每次评估会运行 4 个 episode,然后计算这 4 个 episode 的平均表现。
为什么需要多次评估:
强化学习中的环境通常具有随机性(如初始状态、动作效果等)。
通过多次运行 episode 并取平均值,可以减少随机性对评估结果的影响,得到更稳定的性能指标。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

解忧AI铺

你一打赏我就写得更来劲儿了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值