首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让强化学习智能体学习一个无休止的跑步者?

如何让强化学习智能体学习一个无休止的跑步者?
EN

Stack Overflow用户
提问于 2018-07-15 20:33:04
回答 1查看 266关注 0票数 0

我试图训练一个强化学习智能体,使用Unity-ML来玩一个无休止的跑步游戏。

游戏很简单:障碍从侧面逼近,智能体必须在正确的时机跳过它。

作为观察者,我知道下一个障碍物的距离。可能的动作是0-空闲;1-跳跃。游戏时间越长,奖励越多。

不幸的是,智能体无法学会克服第一个可靠的障碍。我猜这是因为这两个动作的不平衡太高了,因为理想的策略应该是大多数时候什么都不做(0),只在非常特定的时间点跳(1)。此外,跳跃期间的所有动作都是无意义的,因为智能体不能在空中跳跃。

我如何改进学习,使其仍然收敛?有什么建议要看一下吗?

当前培训师配置:

代码语言:javascript
复制
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

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-07-16 23:47:31

如果看不到用于强化学习算法的确切代码,就很难说出来。以下是一些值得探讨的步骤:

  • 你要让特工训练多久?根据游戏环境的复杂性,代理可能需要数千次学习才能学会使用Academy对象的Frameskip属性来避免它的第一个obstacle.
  • Experiment。这允许代理仅在经过多个帧之后执行操作。在更简单的游戏中增加此值可能会提高学习速度。
  • 调整学习速率。学习率决定了智能体对新信息与旧信息的权重。你正在使用一个非常小的学习率;试着把它增加几个小数点。
  • Adjust。Epsilon确定采取随机操作的频率。在给定状态和epsilon率为0.2的情况下,您的代理将在20%的时间内执行随机操作。在其他80%的时间里,它会选择相关奖励最高的(状态,动作)对。您可以尝试减小或增加此值,以查看是否获得更好的结果。既然你知道你会在训练开始时想要更多的随机动作,你甚至可以随着每一集的“衰减”epsilon。如果你从epsilon值0.5开始,在每一集游戏完成后,将epsilon减少一个小值,比如0.00001左右。
  • 改变奖励座席的方式。与其奖励智能体存活的每一帧,也许你可以奖励智能体成功跳过的每一个障碍。
  • 你确定给定的time_horizonmax_steps为游戏提供了足够的跑道来完成一集吗?

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51348410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档