您當前的位置:首頁 > 舞蹈

Gumbel-softmax Trick

作者:由 碼麗蓮夢露 發表于 舞蹈時間:2021-12-19

直接使用MADDPG是無法處理離散動作的,可以加入Gumbel-softmax Trick的取樣方式輸出離散動作

Gumbel-softmax Trick

使用參考:

詳細說明:

Gumbel-softmax主要是使用了重引數技巧(Re-parameterization Trick)。

一個很好的例子瞭解重引數技巧:

假設現在求得權重分佈是

W=[0.1,0.2,0.7]

,然後再假設我們可以根據某種分佈

P

對每個權重取樣一個隨機值,比如三個權重對應的取樣的隨機值分別是

\epsilon=[0.5,0.4,0.1]

,將隨機值與權重相加:

\tilde{W}=W+\epsilon=[0.6,0.6,0.8],\epsilon\sim P

之後對取樣隨機值的權重分佈取

argmax(\tilde{W})

的話應該是選擇第三個操作,這個叫做Gumbel-Max trick。可是argmax也有無法求導的問題,因此可以使用softmax來代替,也就是Gumbel-Softmax trick,那麼有如下計算公式(τ表示溫度係數,類似於知識蒸餾裡的溫度係數,也是用來控制分佈的平滑度):

Gumbel-softmax Trick

使用gumbel softmax後的求導表示式:

Gumbel-softmax Trick

所以

gumbel softmax

成功地引入了隨機性,使得每個操作都能以一定的機率被選中,在更新權重的時候採用的是softmax的梯度值,這個可以透過修改pytorch的backward部分程式碼實現。

Gumbel-softmax的步驟如下:

(1)對於網路輸出的一個n維向量

v

,生成

n

個服從均勻分佈

U(0,1)

的獨立樣本

\epsilon_{1} ,...,\epsilon_{n}

(2)透過

G_{i}=-log(-log(\epsilon))

計算得到

G_{i}

(3)對應相加得到新的值向量

v^{

(4)計算softmax函式

Gumbel-softmax Trick

標簽: softmax  Gumbel  權重  取樣  隨機