如何使用已经进行的比赛中的动作来训练PPO



其想法是在发布算法自行进化之前,先用一些先验知识对神经网络进行初步校准。为了使问题更简单,假设一个代理可以采取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"(。显然,网络上的更新是在考虑模型选择的动作(模型总是自己预测动作(的情况下进行的,而奖励是根据我的包装中定义的动作计算的。这种不匹配使得学习变得不可能。

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

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

相关内容

  • 没有找到相关文章

最新更新