0

这个想法是在发布算法自行进化之前,先用一些先验知识来校准神经网络。为了使问题更简单,假设一个代理可以采取 10 个动作(离散空间)。我不想训练 PPO 算法自己找出最适合每个状态的动作,而是考虑在某些状态下执行某些动作来进行训练。我在健身房使用稳定基线。

我想过像这样创建一个动作包装器:

class RandomActionWrapper(gym.ActionWrapper):
            def __init__(self, env):
            super(RandomActionWrapper, self).__init__(env)
            def action(self, action):
                a = self.env.action_space.sample()
                return a

Ps:这个包装器只是一个概念证明,一直选择随机动作,但是模型并没有那样学习(我在非常简单的自定义环境中模拟了许多迭代,比如:“动作 2 总是导致奖励=1,而其他动作导致奖励=0)。显然,网络上的更新是考虑到模型选择的动作(模型总是自己预测动作),而奖励是根据定义的动作计算的我的包装。这种不匹配使学习变得不可能。

4

2 回答 2

0

由于 PPO 是一种 on-policy 方法,因此我生成的数据与算法的成本函数之间存在不匹配。这里没有理由坚持 PPO。我将研究离策略算法

于 2022-02-12T18:09:43.640 回答
0

我认为您正在寻找某种动作掩码实现。在一些游戏/环境中,某些操作在特定状态下是无效的(这不是你的情况,但它可能是第一种方法)。你可以查看这篇论文github

于 2022-02-12T12:31:31.827 回答