问题标签 [rllib]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
410 浏览

python - RLLib 调整 PPOTrainer 但不调整 A2CTrainer

我正在将这两种算法与 CartPole 环境进行比较。进口为:

运行它完美地工作:

但是当我对 A2C 代理做同样的事情时:

它返回此异常:

谁能告诉我发生了什么事?我不知道这是否与我正在使用的库版本有关,或者我编码错误。这是一个常见问题吗?

0 投票
1 回答
155 浏览

python - Rllib 离线 SAC 的数据准备

我有一些离线体验: (s, a, r, s') 是用启发式方法生成的。我想在训练 SAC 代理时使用这些。使用示例save_experiences准备我的数据在与 SAC 一起使用时会出现错误。这是一个colab,其中暴露了 pendulum-v0 环境的问题。我从错误消息中了解到,除了作为离线数据生成的体验之外,SAC 还期待一些“权重”(有时是“不”?!)。我可以在 SAC 中仅使用离线体验(s、a、r、s')吗?

谢谢。

0 投票
1 回答
613 浏览

machine-learning - RLlib `rollout.py` 是否适用于评估?

TL;DR:RLlib 的rollout命令似乎是在训练网络,而不是评估。

我正在尝试使用 Ray RLlib 的 DQN 在定制的模拟器上训练、保存和评估神经网络。为此,我一直在使用 OpenAI Gym 的 CartPole-v0 环境对工作流程进行原型设计。这样做,我在运行rollout命令进行评估时发现了一些奇怪的结果。(我使用了在RLlib Training APIs - Evaluating Trained Policies 文档中编写的完全相同的方法。)

首先,我训练了一个普通的 DQN 网络,直到它达到episode_reward_mean200 分。然后,我使用该rllib rollout命令在 CartPole-v0 中测试了 1000 集的网络。前 135 集的episode_reward_mean分数很糟糕,从 10 到 200 不等。然而,从第 136 集开始,分数一直是 200,这在 CartPole-v0 中是满分。

所以,看起来更像rllib rollout是训练网络,而不是评估。我知道情况并非如此,因为rollout.py模块中没有用于培训的代码。但我不得不说,这看起来真的很像训练。不然怎么会随着情节的增多而逐渐增加分数呢?此外,网络在评估过程后期“适应”不同的起始位置,这在我看来是训练的证据。

为什么会发生这种情况?

我使用的代码如下:

  • 训练
  • 评估
  • 结果
0 投票
0 回答
155 浏览

python - 正确使用 a2c.A2cTrainer Rllib 与健身房和宠物动物园

我正在使用本文构建一个演讲者听众rllib培训环境。使用pettingzoo 和 supersuit

我遇到了以下错误:

尝试运行我的代码时,但由于我缺乏使用这些包的经验,我不明白问题是在我的代码中还是在使用这些包,因为它们应该足以使用rllib. 我最后附上了我的代码,这是有问题的行:

我相信我已经接近让它工作了,这是其余的代码:

0 投票
0 回答
180 浏览

tensorflow - 使用 DQN 训练良好,但没有使用 A2C 学习

我使用 Ray RLlib 的 DQN 在我的自定义模拟器中进行训练。它通常在 1500 万步后产生良好的结果。

在玩了一段时间 DQN 之后,我现在正在尝试在模拟器中训练 A2C。但是,如下图所示,它甚至还没有接近收敛。通常,在我的模拟器中,-50 被认为是最大值,使用 DQN 最多可以达到 1500 万步。

在此处输入图像描述

DQN 和 A2C 的模拟器完全相同:

  • 71 个离散观测
  • 3个离散动作。

我认为这两种算法的环境都不需要改变。也许我错了……

有人能想到 A2C 没有在我的模拟器中学习的原因吗?

A2C 的参数:

(与 Ray RLlib 上的默认配置相同)

0 投票
1 回答
367 浏览

reinforcement-learning - rllib 中的复杂动作掩码

rllib 示例中提供了参数/可变长度动作模型。该示例假设输出是单个分类操作 dist 的 logits。如何使用更复杂的输出来完成这项工作?

例如,一个盒子里有 200 个不同的球。每步 2 球被捡起并放回。动作空间可以定义为 Multidiscrete([200, 200]) 或 Tuple((spaces.Discrete(200), spaces.Discrete(200)))。

有 3 个限制使某些操作无效。

  1. 每次2个球都不一样。所以像 (1,1) 或 (2,2) 这样的动作是无效的。
  2. 相同颜色的球不允许一起捡。比如2号球和3号球都是黄色的,所以在某些状态下不能一起捡。所以 action(1,2) 在那个状态下是无效的。
  3. 有些球在特定状态下是不允许捡的。例如,当 2 号球被标记为不允许捡球时,所有与 2 号球类似的动作 (1, n) 或 (n,1) 的动作都无效。

如何通过 rllib 中的动作屏蔽来强制执行这 3 个约束。

假设我们的 obs 空间有 2 个部分。第一个约束是隐含的。可以在没有观察空间的情况下确定无效动作。对于第二个约束,A real_obs用一个表示颜色的数字标记每个球。相同号码的球不允许一起捡。对于第三个约束,一个指示是否允许捡球的action_mask 。

具体来说,如何在自定义模型中实现动作/观察空间和前向功能?

如果我对 obs 空间的假设是不可行的。您可以定义您的 obs 空间和相应的自定义模型。

rllib 中的 ParametricActionsModel 示例

0 投票
1 回答
107 浏览

reinforcement-learning - 从 ray.tune 中提取代理

我一直在使用 azure 机器学习来训练使用 ray.tune 的强化学习代理。

我的训练功能如下:

如何从检查点中提取代理,以便可以将我的健身房环境中的操作可视化,如下所示:

我知道我可以使用这样的东西:

但我不确定如何从 tune.run 中存在的代理中提取计算操作(和奖励)。

0 投票
0 回答
284 浏览

reinforcement-learning - 一步多动作,强化学习

我正在尝试编写一个自定义的 openAI Gym 环境,其中代理在每个步骤中执行 2 个动作,其中一个是离散动作,另一个是连续动作。我正在使用 Ray RLLib 并使用 SAC 算法,因为它同时支持离散和连续动作空间。我的问题是有没有人知道如何让代理每一步采取两个动作,一个是连续的,另一个是离散的

0 投票
0 回答
49 浏览

ray - Ray rllib 自定义训练流程

我想细化算法的步骤:默认情况下,动作选择为:

a = argmax Q(f(s), a; teta)

然后计算从旧状态到新状态的转换。然后将旧状态、动作、奖励和新状态存储在缓冲区中。

我想更改 get 操作函数并使其看起来像这样:

我该如何定制这个?

0 投票
0 回答
19 浏览

openai-gym - [Rllib]如何将定制的游戏http环境集成到Rllib中进行多环境训练

嗨,我将游戏环境打包到 HTTP API 中(在特定端口上,例如 33333)并将其集成到 Gym 接口中(例如,在 step 函数中,我调用特定 url 来获取游戏信息)。我可以在服务器的 33333 端口上运行此游戏服务,并且我想在多个环境中训练代理。该服务仅针对一集迭代,如何在 Rllib 上实现多 env 训练?

我是否必须为端口 33333-33433 手动启动多个环境,或者 Rllib 可以自动为我实现这一点?(如果是这样,如何使用这个现有的游戏环境和端口 33333?)