【问题标题】:Policy network for the game 2048游戏 2048 的政策网络
【发布时间】:2018-10-15 07:52:21
【问题描述】:

我正在尝试根据 Karpathy 的 RL tutorial 为游戏 2048 实施策略网络代理。我知道算法需要玩一些游戏,记住输入和采取的行动,标准化和平均中心结束分数。但是,我陷入了损失函数的设计。如何正确鼓励最终得分较高的行为并阻止最终得分较低的行为?

在输出层使用 softmax 时,我设计了一些东西:

loss = sum((action - net_output) * reward)

动作是一种热门格式。但是,这种损失似乎没有多大作用,网络没有学习。我在 PyTorch 中的完整代码(没有游戏环境)是here

【问题讨论】:

    标签: neural-network artificial-intelligence pytorch reinforcement-learning game-ai


    【解决方案1】:

    对于您代码中的策略网络,我认为您需要这样的内容:

    loss = -(log(action_probability) * reward)

    其中 action_probability 是您的网络在该时间步中执行的操作的输出。

    例如,如果您的网络输出了 10% 的执行该操作的机会,但它提供了 10 的奖励,那么您的损失将是:-(log(0.1) * 10),等于 10。

    但是,如果您的网络已经认为这是一个很好的举动并且输出了 90% 的机会采取该操作,那么您将有 -log(0.9) * 10) 大约等于 0.45,对网络的影响较小。

    值得注意的是,PyTorch 的 log 函数在数值上不稳定,最好在网络的最后一层使用 logsoftmax

    【讨论】:

      猜你喜欢
      • 2012-11-10
      • 2021-04-15
      • 2020-02-12
      • 2020-04-13
      • 1970-01-01
      • 2021-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多