2016-11-27 50 views
1

Actor Mimic論文討論瞭如何實施一個動作屏蔽程序。我引用如何實現動作遮罩?

在玩某些遊戲,我們 屏蔽掉AMN動作輸出無效的那場比賽,並採取SOFTMAX了唯一有效行動的子集

沒有人有一個想法關於如何在Tensorflow中實現這個動作掩碼?在特定情況下,如何才能將softmax僅用於指定的操作子集?

回答

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,這樣您就不會被零除。