2016-11-27 4 views
1

Die Actor Mimic Papier spricht über eine Aktion Maskierungsverfahren zu implementieren. Ich zitiereWie implementiert man Action Masking?

Während ein bestimmtes Spiel spielen, wir AMN Aktion Ausgänge maskieren, die für dieses Spiel nicht gültig sind und nehmen Sie die softmax nur über die Teilmenge der gültigen Aktionen

Hat jemand eine Idee, Wie kann diese Aktionsmaskierung in Tensorflow implementiert werden? Wie würde man eine softmax nur über eine bestimmte Teilmenge von Aktionen nehmen?

Antwort

2

Sagen Sie bitte einen gültigen Zustand Tensor haben, die Einsen und Nullen enthält.

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

und dann haben Sie eine Aktionen Tensor auf dem Sie die softmax über diese Werte zu übernehmen wollen, die gültig sind. Sie könnten Folgendes tun.

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

In diesem Fall wird die is_valid maskiert die ungültigen Werte in der Summe aus. Ich würde auch ein kleines Epsilon der Division wegen der numerischen Stabilität hinzufügen, so dass Sie niemals durch Null teilen können.