2016-11-27 1 views
1

L'article Actor Mimic parle de la mise en œuvre d'une procédure de masquage d'action. Je citeComment peut-on implémenter le masquage d'actions?

Tout en jouant un certain jeu, nous masquer les sorties d'action AMN qui ne sont pas valables pour ce jeu et prendre le softmax que sur le sous-ensemble d'actions valides

Est-ce que quelqu'un a une idée sur la façon dont ce masquage d'action peut être mis en œuvre dans Tensorflow, par exemple? En particulier, comment prend-on une softmax uniquement sur un sous-ensemble d'actions spécifié?

Répondre

2

Dites que vous avez un tenseur d'état valide qui contient les uns et les zéros.

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

puis vous avez un tenseur d'actions sur lequel vous voulez prendre la softmax sur ces valeurs qui sont valides. Vous pourriez faire ce qui suit.

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

Dans ce cas, le masquage est is_valid les valeurs non valides dans la somme. Je voudrais également ajouter un petit epsilon à la division pour la stabilité numérique afin que vous ne pouvez jamais diviser par zéro.