【问题标题】:Invalid moves in reinforcement learning强化学习中的无效动作
【发布时间】:2017-11-07 17:42:55
【问题描述】:

我已经为一个类似于http://curvefever.io/ 的游戏实现了一个自定义的 openai 健身房环境,但使用谨慎的操作而不是连续的操作。所以我的代理可以在每一步中向左/上/右/下四个方向之一前进。然而,这些动作之一总是会导致代理自己崩溃,因为它不能“逆转”。

目前我只是让代理采取任何行动,如果它采取无效行动就让它死亡,希望它最终会学会在那种状态下不采取该行动。但是,我读过可以将非法移动为零的概率设置为,然后对动作进行采样。有没有其他方法可以解决这个问题?

【问题讨论】:

    标签: reinforcement-learning openai-gym


    【解决方案1】:

    您可以尝试通过 2 个更改来解决此问题:

    1:给出当前方向作为输入,如果它采取不会使其崩溃的移动,则给出可能 +0.1 的奖励,如果它采取直接使其崩溃的向后移动,则给出 -0.7。

    2:如果您使用神经网络和 Softmax 函数作为最后一层的激活函数,则将神经网络的所有输出乘以一个正整数(置信度),然后再将其传递给 Softmax 函数。它可以在 0 到 100 的范围内,因为我的经验超过 100 不会有太大影响。整数越大,代理对给定状态采取行动的信心就越大。

    如果你不使用神经网络或者说深度学习,我建议你学习深度学习的概念,因为你的游戏环境看起来很复杂,而神经网络会给出最好的结果。

    注意:这将花费大量时间。所以你必须等待足够的时间来训练算法。我建议你不要着急,让它训练。我玩了这个游戏,它真的很有趣 :) 我希望为游戏制作 AI :)

    【讨论】:

    • 谢谢。由于人工智能是为上周结束的比赛而设计的,我无法让它发挥作用,所以我放弃了,呵呵。我使用的是 A3C,所以没有 softmax 层作为输出。当我查看游戏玩法时,我注意到它实际上并没有经常做出无效的举动(因为这样做会使其立即死亡,因此不是一个好举动)。我认为我失败的地方是清理输入以及太高的伽马值。当我训练它最长时间时,它被设置为 0.95。
    • 这是 Cygni 的比赛,你可以在这里找到它game.snake.cygni.se/#/?_k=kdwudn
    猜你喜欢
    • 2013-03-24
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    • 2019-04-16
    • 1970-01-01
    相关资源
    最近更新 更多