2016-11-27 7 views
1

Документ Actor Mimic рассказывает о реализации процедуры маскирования действий. ЦитируюКак реализовать маскирование действия?

Во время воспроизведения определенной игры, мы маскировать выходы действий АНМА, которые не являются допустимыми для этой игры и принять SoftMax только над подмножеством действительных действий

Кто-нибудь есть идея о том, как это действие может быть реализовано в Tensorflow? В частности, как можно принять softmax только по определенному подмножеству действий?

ответ

2

Скажем, у вас есть действующий тензор состояния, который содержит единицы и нули.

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

, а затем у вас есть тензор действия, на которых вы хотите взять SoftMax на те значения, которые являются действительными. Вы можете сделать следующее.

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

В этом случае is_valid маскирует из недопустимых значений в сумме. Я бы также добавил небольшой эпсилон к делению ради численной устойчивости, чтобы вы никогда не могли делить на ноль.