Gumbel-softmax Trick
作者:由 碼麗蓮夢露 發表于 舞蹈時間:2021-12-19
直接使用MADDPG是無法處理離散動作的,可以加入Gumbel-softmax Trick的取樣方式輸出離散動作
使用參考:
詳細說明:
Gumbel-softmax主要是使用了重引數技巧(Re-parameterization Trick)。
一個很好的例子瞭解重引數技巧:
假設現在求得權重分佈是
,然後再假設我們可以根據某種分佈
對每個權重取樣一個隨機值,比如三個權重對應的取樣的隨機值分別是
,將隨機值與權重相加:
。
之後對取樣隨機值的權重分佈取
的話應該是選擇第三個操作,這個叫做Gumbel-Max trick。可是argmax也有無法求導的問題,因此可以使用softmax來代替,也就是Gumbel-Softmax trick,那麼有如下計算公式(τ表示溫度係數,類似於知識蒸餾裡的溫度係數,也是用來控制分佈的平滑度):
使用gumbel softmax後的求導表示式:
所以
gumbel softmax
成功地引入了隨機性,使得每個操作都能以一定的機率被選中,在更新權重的時候採用的是softmax的梯度值,這個可以透過修改pytorch的backward部分程式碼實現。
Gumbel-softmax的步驟如下:
(1)對於網路輸出的一個n維向量
,生成
個服從均勻分佈
的獨立樣本
。
(2)透過
計算得到
。
(3)對應相加得到新的值向量
(4)計算softmax函式
上一篇:銷售招人怎麼破?