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