如何实现动作掩蔽?

时间:2016-11-27 10:29:04

标签: tensorflow multitasking reinforcement-learning

Actor Mimic论文讨论了实施动作掩蔽程序。我引用

  

在玩特定游戏时,我们   屏蔽掉对该游戏无效的AMN动作输出,并将softmax仅用于有效动作的子集

有没有人知道如何在Tensorflow中实现此动作屏蔽?在具体情况下,如何仅在指定的动作子集上使用softmax?

2 个答案:

答案 0 :(得分:2)

假设您有一个有效的状态张量,其中包含1和0。

is_valid = [1, 0, 1, ...]

然后你有一个动作张量,你想要将softmax取为那些有效的值。您可以执行以下操作。

(tf.exp(actions) * is_valid) / (tf.reduce_sum(tf.exp(actions) * is_valid) + epsilon)

在这种情况下,is_valid屏蔽了总和中的无效值。为了数值稳定性,我还会在分区中添加一个小epsilon,这样你就永远不能除以零。

答案 1 :(得分:1)

您应该依赖内置的softmax功能。即,您应首先使用boolean_mask屏蔽张量中的无效操作,然后应用softmax函数。

chasep255提供的解决方案存在数字问题。)