gpt4 book ai didi

unity-game-engine - 如何让强化学习代理学习无尽跑者?

转载 作者:行者123 更新时间:2023-11-30 09:46:57 25 4
gpt4 key购买 nike

我尝试使用 Unity-ML 训练强化学习代理来玩无尽的运行游戏。

游戏很简单:障碍物从侧面接近,代理必须在正确的时机跳跃才能克服它。

作为观察,我知道到下一个障碍物的距离。可能的操作是 0 - 空闲; 1 - 跳跃。玩时间越长就会获得奖励。

不幸的是,代理甚至无法学会克服第一个可靠的障碍。我猜想这是由于这两个操作的不平衡性太高,因为理想的策略在大多数情况下什么也不做(0),并且仅在非常特定的时间点跳跃(1)。此外,跳跃过程中的所有 Action 都毫无意义,因为代理无法在空中跳跃。

如何改进学习以使其收敛?有什么建议要研究什么吗?

当前训练师配置:

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

谢谢!

最佳答案

如果没有看到强化学习算法所使用的确切代码,就很难说。以下是一些值得探索的步骤:

  • 您让特工培训多长时间?根据游戏环境的复杂性,代理很可能需要数千个回合才能学会避开第一个障碍。
  • 使用 Academy 对象的 Frameskip 属性进行实验。这允许代理仅在经过一定数量的帧后才采取行动。增加此值可能会提高更简单游戏的学习速度。
  • 调整学习率。学习率决定了代理对新信息与旧信息的权重。你使用的学习率非常小;尝试将其增加几位小数。
  • 调整 epsilon。 Epsilon 确定采取随机操作的频率。给定状态和 0.2 的 epsilon 率,您的代理将在 20% 的时间内采取随机操作。另外 80% 的情况下,它会选择具有最高相关奖励的(状态,操作)对。您可以尝试减少或增加该值,看看是否会获得更好的结果。由于您知道在训练开始时需要更多随机 Action ,因此您甚至可以在每一集中“衰减”epsilon。如果您从 0.5 的 epsilon 值开始,则在每个游戏回合完成后,将 epsilon 减少一个小值,例如 0.00001 左右。
  • 改变代理的奖励方式。也许您可以奖励代理成功跳过的每个障碍,而不是奖励代理保持事件的每一帧。
  • 您确定给定的 time_horizo​​nmax_steps 为游戏提供足够的跑道来完成一集吗?

希望这对您有所帮助,祝您好运!

关于unity-game-engine - 如何让强化学习代理学习无尽跑者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51348410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com