对于不同的环境状态,如何处理不同的动作?

人工智能 强化学习 dqn 深度学习 执行 行动空间
2021-11-01 15:13:00

我是这个 AI/机器学习的新手,并且正在玩一些 OpenAI Gym。在查看环境时,我遇到了Blackjack-v0环境,这是游戏的基本实现,其中状态是玩家和庄家的手数以及玩家是否有可用的 A。这些动作只会被击中或站立,如果玩家获胜,可能的奖励为 1,如果玩家失败,则为 -1,如果是平局,则为 0。

所以,这让我开始思考这个游戏的更真实的环境/模型会是什么样子,考虑到当前的平衡和其他因素,并且有多种动作,比如下注 1-10 欧元和击中或站立。

这让我想到了我的实际问题:

  • 据我了解,在神经网络中(我猜我还不是很好)输入将是状态,输出是可能的动作以及网络认为它们有多好/将会有多好。但是现在有两个不同的动作空间,适用于不同的游戏状态(下注或玩),所以有些动作是没有用的。处理这种情况的正确方法是什么?

我猜一个答案是如果网络猜测到一个无用的动作,则给予某种负奖励,但在这种情况下,我认为奖励应该是实际赌注(负奖励)和实际获胜(如果有的话)。因此,这将导致游戏如何进行的一些偏差,因为它应该以一定数量的余额开始,如果余额为 0 或在指定数量的回合之后结束。

我想,限制时间步长也不是一种选择,因为它应该限制在回合中,因此,例如,它不会在下注步骤之后结束。

因此,对于一个无用的步骤,奖励将为 0,状态将保持不变,但是对于神经网络,它采取多少无用的步骤并不重要,因为它对实际结果没有任何影响。

推论问题:

  • 应该分成两个神经网络吗?一个用来投注,一个用来玩?
1个回答

有很多强化学习算法。我推荐你这篇文章:

有几种方法。NN 可以将状态和动作作为输入,并将预期的折扣奖励作为输出。但是,如果该操作不可用并且没有必要给它负或零奖励,则您可以不选择该操作,只是不要学习您的网络来改变这些操作的行为,因为它们既不好也不坏。