问题标签 [stable-baselines]

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 回答
299 浏览

reinforcement-learning - 具有稳定基线的自定义 Openai 健身房环境

我正在尝试创建一个简单的 2D 网格世界 Openai Gym 环境,代理从网格世界的任何地方前往终端单元。例如,在 5x5 网格世界中,X 是当前代理位置,O 是代理前往的终端单元。

我的动作空间被定义为离散值 [0,4),分别代表上、左、下和右。并且,观察空间是一个 1D 框,表示代理在网格世界中的当前位置,例如 [12](索引从 0 开始到 size*size-1)。我想知道定义观察空间的方式之间有什么区别。例如,除了我目前的定义,同一环境的观察空间可以定义如下,仅举几例。

  1. i 的离散值,其中 i 代表 agent 的当前位置。
  2. 一个除代理当前位置为 1 外全为零的二维矩阵。
  3. 也许其他人在稳定基线算法或其他方面有什么不同?
0 投票
0 回答
409 浏览

recurrent-neural-network - Understanding Stable Baselines Custom Policies

I am trying to understand the structure of the custom recurrent policy introduced in the documentation of the Stable Baselines:

How exactly is the Lstm NN constructed? (check code below)

From what I understood from the documentation: in this case net_arch=[8, 'lstm'] means, that before the LsTm there is a NN with hidden layers of size 8. A crude illustration would be:

observation (input) -> 8 hidden nodes -> Lstm -> action (output)

Let's say, I want to construct the following Network:

observation -> hidden layer of 8 nodes -> hidden layer of 16 nodes -> Lstm -> hidden layer of 16 nodes -> output layer (outputs: from policy and value network)

Would I have to write net_arch=[8,16, 'lstm',16] ? Is this correct? Also, what exactly does it mean feature_extractor='mlp'] ?

0 投票
0 回答
216 浏览

python-3.x - “发生异常:迁移到 stable_baselines3 时,AttributeError 'list' 对象没有属性 'get'”

我已经在 stable_baselines 中进行了试验,效果不错,并且一直想在 stable_baselines3 上进行尝试。

我正在使用 A2C 模型来训练库存环境。使用了目前正在使用 stable_baselines 的自定义环境。我在训练过程中看到了不稳定,并希望迁移到 stable_baselines3 以防万一。

自定义环境如下。调试时,在环境中的第一个“步骤”之后立即弹出错误。可能是因为退货问题。我确实将状态的返回类型更改为 np.array 并且问题没有解决。

我得到的错误是在model.learn过程中:

发生异常:AttributeError 'list' object has no attribute 'get'

0 投票
0 回答
242 浏览

python - 健身房定制环境和 PPO:训练有素的代理总是采取相同的行动,有什么建议吗?

我已经建立了一个健身房自定义环境,并用一个虚拟随机代理对其进行了测试:到目前为止一切都很好,根据我的游戏规则,应该发生的事情是正确的。

简而言之,我目前的空间是:

请注意,最初我想要以下观察空间:

...但是由于没有一个稳定的基线可以处理字典空间,我不得不连接两个列表并使用一个盒子来获取两者的最高维度。

然后我尝试从 Stable Baselines 3 训练 PPO 代理。我对其进行了 100 万步(约 1000 万步)的训练,并在环境中对其进行了测试:受过训练的代理总是采取相同的(愚蠢的)动作,但没有任何反应。我用 A2C 代理重复了一遍,同样的事情发生了。

我是机器学习的新手,所以我现在有点迷茫,需要一些前进的方向:

  1. 问题是否来自我的观察和/或行动空间?我需要标准化吗?
  2. 对于这么大的空间,培训方式是否太短了?
  3. 问题是否来自超参数?

欢迎任何建议,因为我在制作环境相当长的一段时间后陷入困境......谢谢!

0 投票
1 回答
711 浏览

subprocess - SubprocVecEnv 不适用于自定义环境(稳定基线 - 健身房)

我已经使用gym.Env 作为父类制作了一个自定义环境,并且在单核运行时一切正常。我已经开始如下代码:

但是,如果我尝试使用 SubprocVecEnv 来使用我所有的 24 个 CPU 内核来加速学习过程,我会收到消息: ValueError: could not broadcast input array from shape (24,24) into shape (24,1)

我已经测试了 DummyVecEnv,它运行良好,但由于此功能不允许多处理,我想像通常使用 Atari/Gym 环境一样使用 SubprocVecEnv。

PS:我的自定义环境非常简单,基本上我使用的是一个有 567 行和 4 列的数据集,代理一次访问一行并从这个观察中预测两个值。观察空间和动作空间如下:

我像往常一样使用稳定基线的 PPO2 训练代理。

我错过了什么重要的东西吗?

0 投票
0 回答
49 浏览

google-cloud-datastore - 要提醒的 Cloud Datastore 指标基线

在我的公司中,有一个请求要求对 Cloud DataStore 服务配置上的以下指标发出警报,但他们不知道每个指标的基线是什么。

它们是否必须像一个固定计数(即:request_count > 100)或者可能是一个平均值。

我在这里检查免费配额限制,但我不确定哪些值可以用作基线。

0 投票
2 回答
327 浏览

python - 如何在稳定的基线中获得 action_propability() 3

我刚刚开始使用稳定基线 3 自学强化学习。我的长期目标是训练代理玩特定的回合制棋盘游戏。不过,目前我对新事物感到不知所措。

我已经实现了一个健身房环境,我可以用它来手动玩我的游戏或让它选择随机动作。

目前,我一直在努力寻找一个模型来响应观察结果。我的环境的动作空间是一个DiscreteSpace(256). 我创建环境为model = PPO('MlpPolicy', env, verbose=1). 当我后来打电话时model.predict(observation),我确实得到了一个看起来像一个动作的号码。当重复运行时,我得到不同的数字,我认为这是在未经训练的模型上预期的。

不幸的是,在我的游戏中,大多数行为在大多数州都是非法的,我想过滤它们并选择最好的合法行为。或者简单地将所有操作的输出结果转储出来,以了解正在发生的事情。

在浏览其他人的代码时,我看到了对model.action_probability(observation). 不幸的是,据我所知,方法不是稳定基线 3 的一部分。从稳定基线 2 迁移到 v3 的指南只提到它没有被实施 [ 1 ]。

你能给我一个关于如何继续的提示吗?

0 投票
0 回答
822 浏览

lstm - 在稳定的基线中使用 LSTM

我正在为 RL 使用稳定基线的 PPO2。我的观察空间的形状为 (100,10),我想用 LSTM 替换策略中使用的网络,你知道这是否可能吗?

谢谢

0 投票
1 回答
758 浏览

python-3.x - 稳定baselines3库中的“deterministic=True”是什么意思?

我正在尝试将来自 stable baselines3 库https://stable-baselines3.readthedocs.io/en/master/的 PPO 算法应用到我制作的自定义环境中。

我不明白的一件事是以下行:

我应该总是让确定性等于真吗?当我保持确定性 =“真”时,我的自定义环境“以某种方式”总是得到解决(即,总是返回 1 +/- 0 标准的奖励)。

当我将其更改为“False”时,它开始以合理的方式表现(即,有时它成功(reward=1),有时它失败(reward=0)。

0 投票
0 回答
361 浏览

python - 了解 OpenAI 健身房和稳定基线中的多智能体学习

如本文所述,我正在尝试使用 OpenAI 稳定基线和健身房开发多智能体强化学习模型。

我对我们如何指定对手代理感到困惑。似乎对手被传递到环境中,agent2如下所示:

ks_env.train()方法似乎来自kaggle_environments.Environment

Q1。然而我很困惑。为什么ConnectFourGym.__init__()调用train()方法?那就是为什么环境应该做培训?我觉得,train()应该是模型的一部分:上面的文章使用了包含train()方法的 PPO 算法。PPO.train()当我们调用时,它会被调用PPO.learn(),这是有道理的。

Q2。但是,阅读PPO.learn()的代码,我看不出它是如何训练当前代理对抗多个对手代理的。模型算法不应该这样做吗?读错了吗?或者模型不知道代理的数量,它只是环境已知,这就是为什么环境包含train()?在那种情况下,为什么我们有明确的Environment.train()方法?环境将根据多个代理行为返回奖励,模型将从中学习。

还是完全搞砸了基本概念?somoene 能帮帮我吗?