我试图训练强化学习代理使用Unity-ML玩无尽的亚军游戏。
游戏很简单:障碍物正在从侧面靠近,而特工必须在正确的时机跳跃以克服障碍。
作为观察,我到下一个障碍物有一段距离。可能的动作是0-空闲; 1-跳。奖励可以延长游戏时间。
不幸的是,特工甚至无法可靠地克服第一个障碍。我想这是由于这两种操作之间的失衡过大,因为理想的策略通常大部分时间不执行任何操作(0),而仅在非常特定的时间点执行跳跃(1)。另外,由于特工无法在空中跳跃,因此跳跃过程中的所有动作都是没有意义的。
我如何才能改善学习以使其融合?有什么建议值得探讨吗?
当前教练配置:
EndlessRunnerBrain:
gamma: 0.99
beta: 1e-3
epsilon: 0.2
learning_rate: 1e-5
buffer_size: 40960
batch_size: 32
time_horizon: 2048
max_steps: 5.0e6
谢谢!
答案 0 :(得分:1)
如果不查看用于强化学习算法的确切代码,很难说。以下是一些值得探索的步骤:
Frameskip
对象的Academy
属性进行的实验。这允许代理仅在经过多个帧之后才采取措施。增大此值可以提高在更简单的游戏中学习的速度。time_horizon
和max_steps
为游戏提供足够的跑道来完成一集吗?希望这会有所帮助,并祝您好运!