当某个动作不可执行时如何减少神经网络输出

How to reduce a neural network output when a certain action isn't performable

我正在使用神经网络和张量流通过 Q 学习方法对各种东西进行强化学习,我想知道当对应于特定输出的特定动作不是时,减少输出可能性的解决方案是什么'在特定状态下无法在环境中实现。

例如,我的网络正在学习玩一个执行 4 个动作的游戏。但是有一个特定的状态,其中动作 1 在环境中不可执行,但我的神经网络 Q 值指示我动作 1 是最好的事情。这种情况我该怎么办?

(只是选择一个随机有效的动作是解决这个问题的最好方法吗?)

您应该忽略无效操作,select 有效操作中 Q-value 最高的操作。然后,在训练步骤中,您可以将 Q-value 乘以动作的 one-hot-encode,或者使用 gather_nd API 到 select 正确的 Q-value,得到loss和运行单次梯度更新。换句话说,假设 loss 的无效动作和所有其他 non-selected 动作 zero 然后更新梯度。

通过这种方式,网络逐渐学会增加正确动作的 Q-value,因为只有该动作的梯度得到更新。

我希望这能回答您的问题。