POLICY IMPROVEMENT BY PLANNING WITH GUMBEL


發表時間:2022(ICLR 2022)
文章要點:AlphaZero在搜索次數很少的時候甚至動作空間都不能完全被訪問到,這個時候AlphaZero的效果是不好的。文章提出了Gumbel AlphaZero算法,利用policy improvement的思想不重複的採樣動作,來替代原始的MCTS的搜索方式,在模擬次數很少的情況下提高了性能。改進主要在於:
AlphaZero通過給policy網絡添加Dirichlet noise來搜索,但是這個方式不能保證policy improvement,本文提出了用Gumbel-Top-k trick來無放回的採樣動作。
AlphaZero用PUCB來選擇動作,最終的動作選擇只和最終的訪問次數有關,和中間結果無關,作者提出用Sequential Halving algorithm來選擇動作。
AlphaZero最終選擇執行的動作是基於訪問次數的softmax選擇,作者改爲了Sequential Halving algorithm的結果選擇唯一的一個動作。
AlphaZero的policy網絡的更新用的根節點訪問次數的概率,作者改爲了基於root action value來做policy improvement的更新。
具體的,Gumbel-Max trick如下

具體的解釋可見這個鏈接Gumbel-Softmax Trick
然後Gumbel-Top-k trick就是選最大的n個,這裏的命名有點奇怪,其實叫top n可能更容易理解

Planning的動作就是這n個動作。等planning結束後,真正選動作就是這個n個裏面最大的。選擇的式子爲

可以看到這裏多了一項\(\sigma (q(a))\),其中\(q(a)\)是動作\(a\)對應的planning的\(Q\) value,\(\sigma\)是一個單調增函數,這可以保證policy improvement

這部分的僞代碼如下

上面這部分已經解釋了search/planning之後的流程,接着就是怎麼做search。作者提出了Sequential Halving with Gumbel
具體就是在根節點的地方,用Gumbel-Top-k trick選m個動作(這裏數量用的m表示,有點混亂),然後用Sequential Halving算法來做simulation,總共做n次simulation。完了之後就有了每個動作的\(q(a)\),接着就用algorithm 1的方式選值最大的動作。具體僞代碼如下

這裏


接着的問題就是Sequential Halving是啥,如下圖

最開始有m個動作,這m個動作先被同時訪問\(n/(\log_2(m)m)\)取下整次,然後根據訪問結果,淘汰掉一半的動作,接着剩下的\(m/2\)個動作又被同時訪問\(n/(\log_2(m)(m/2))\)取下整次,以此類推一直到最後只剩一個動作。根節點的動作選擇好了之後,後面的搜索用了一個確定性的方式來選動作

到這裏search就結束了,剩下的問題是如何訓練。作者使用了KL散度來訓練

其中


總結:相當於先將搜索空間限定住,然後探索是通過gumbel noise在根節點加的,非根節點沒有噪聲,然後更新也算是監督學習,只是監督的對象變成了\(Q\),和訪問次數無關了。
疑問:感覺這個Gumbel-Top-k trick,其實直接對着policy net做無放回採n個動作是一樣的,可能是這個方式能更好利用\(\sigma (q(a))\),優於policy net加dirichlet noise?
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章