用于我对学习算法的基本评估我定义了一个自定义环境。现在有了稳定基线的标准例子似乎总是由稳定的基线自动启动(通过稳定的基线选择随机行动本身并评估奖励)。标准的学习似乎是这样完成的:
model.learn (total_timesteps = 10000)
,这将尝试不同的行动,并优化行动-观察-关系而学习。
我想尝试一种非常基本的方法:对于我的自定义环境,我会尝试生成示例列表,根据某些示例应该采取哪些行动相关情境(所以有一个预定义的观察-行动-奖励列表)。
我想用这个列表来训练模型。
用stablebaselines3实现这个最合适的方法是什么(使用pytorch) ?
附加信息:也许这个问题的意义可以与雅达利游戏的想法相比较,不要总是一次训练整个游戏序列(从游戏开始到结束,然后重新开始直到训练结束),而是只训练一些更具体,更有代表性的重要情况。或者在国际象棋中:让一个代理看起来有很大的不同随机选择自己选择或随机选择的动作或让他跟着大师下的棋特别有趣情况。
也许可以把这些列表作为环境反应的主要部分(例如,用环境1训练智能体1000步,然后在环境2中训练,例如1000步,以此类推)。这可能是一个解决方案。
但问题是,稳定的基线会选择动作本身,所以它不能学习一个完整的序列";correct"或者像象棋大师一样按顺序选择步骤。
因此,实际问题是:在训练/学习时,将稳定的基线用于训练预定义的行为而不是自我选择的行为是可能的,不重要吗?模仿学习本质上就是你要找的。有一个位于基线之上的模拟库,您可以使用它来实现这一点。
请参阅这个示例,了解如何创建一个模仿专家行为的策略来训练网络。这种情况下的行为来自一组动作序列或rollout。在本例中,rollout来自经过专业训练的策略,但是您可能可以创建一个手写的策略。查看如何创建rollout。