我已经建立了一个健身房自定义环境,并用一个虚拟随机代理对其进行了测试:到目前为止一切都很好,根据我的游戏规则,应该发生的事情是正确的。
简而言之,我目前的空间是:
action_space = MultiDiscrete([6, 60, 1122])
observation_space = Box(low=0, high=1122, shape=(1182,), dtype=np.float32)
请注意,最初我想要以下观察空间:
observation_space = Dict({
'list1' : Box(low=0, high=6, shape=(1, 1122), dtype=np.uint32),
'list2' : Box(low=0, high=1122, shape=(1, 60), dtype=np.int32)
})
...但是由于没有一个稳定的基线可以处理字典空间,我不得不连接两个列表并使用一个盒子来获取两者的最高维度。
然后我尝试从 Stable Baselines 3 训练 PPO 代理。我对其进行了 100 万步(约 1000 万步)的训练,并在环境中对其进行了测试:受过训练的代理总是采取相同的(愚蠢的)动作,但没有任何反应。我用 A2C 代理重复了一遍,同样的事情发生了。
我是机器学习的新手,所以我现在有点迷茫,需要一些前进的方向:
- 问题是否来自我的观察和/或行动空间?我需要标准化吗?
- 对于这么大的空间,培训方式是否太短了?
- 问题是否来自超参数?
欢迎任何建议,因为我在制作环境相当长的一段时间后陷入困境......谢谢!