张量流中交叉熵计算前的掩蔽概率

时间:2018-03-19 02:12:43

标签: tensorflow machine-learning reinforcement-learning cross-entropy

我正处于强化学习环境中,我的环境动作空间取决于状态。因此,在采样行为操作时,我会执行以下过程:

(1)生成所有可能行动的概率记录

(2)计算这些logits的softmax

(3)屏蔽在此状态下无效的动作(通过乘以0和1的向量),这会将某些概率归零

(4)重新规范有效动作概率

(5)来自此分布的样本

这非常适合生成动作。但是,当我需要计算策略梯度更新时,我遇到了问题。通常会做以下事情:

tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=A)

其中logits是概率logits,A是采样的操作。但是,由于我在执行softmax之后进行了掩码/重新规范化,因此上面的代码片段在我的情况下不是正确的交叉熵。我想知道是否有一种优雅的方式来处理这种情况。我的理解是应该总是使用张量流的交叉熵计算来保证数值稳定性,但是我不确定如何正确地结合这种掩蔽/重整化。

0 个答案:

没有答案