限制每个时间步的 RNN 合法输出
Limit RNN legal output for each time step
我正在尝试让 RNN 预测纸牌游戏的走法。在每个时间步中,只有某些动作是合法的(即某些动作在某些情况下不能进行)。
因此在游戏的任何给定时刻,12 步棋中有 1 步是正确的。每个移动都标记为 0 到 11 范围内的 int。在大多数情况下,只有其中的一个子集实际上是合法的移动。所以说我尝试训练模型,它预测例如在某种情况下走 4,但是此时只有走 2、3 和 9 是合法的。进行此移动后,下一个时间步允许使用不同的子集。我如何让它仅根据一部分动作进行预测?
我还没有对模型进行编码,但我打算在 Python 中使用 Keras/TensorFlow LSTM 来做到这一点。
如果你能在这里给我指明一个好的方向,我会很高兴!
您可以添加掩码作为调用模型的参数。
但最简单的方法是将预测作为所有动作的概率,然后忽略那些不允许的。
我正在尝试让 RNN 预测纸牌游戏的走法。在每个时间步中,只有某些动作是合法的(即某些动作在某些情况下不能进行)。
因此在游戏的任何给定时刻,12 步棋中有 1 步是正确的。每个移动都标记为 0 到 11 范围内的 int。在大多数情况下,只有其中的一个子集实际上是合法的移动。所以说我尝试训练模型,它预测例如在某种情况下走 4,但是此时只有走 2、3 和 9 是合法的。进行此移动后,下一个时间步允许使用不同的子集。我如何让它仅根据一部分动作进行预测?
我还没有对模型进行编码,但我打算在 Python 中使用 Keras/TensorFlow LSTM 来做到这一点。
如果你能在这里给我指明一个好的方向,我会很高兴!
您可以添加掩码作为调用模型的参数。
但最简单的方法是将预测作为所有动作的概率,然后忽略那些不允许的。