當前位置:首頁 » 操作系統 » uct演算法

uct演算法

發布時間: 2023-07-04 03:45:14

Ⅰ uct演算法和蒙特卡洛演算法的區別

他們有類似之處,但差別也不校 蒙特卡洛演算法是數值計算方法,原理是利用隨機數來解決計算問題。與它對應的是確定性演算法。也就是說該種演算法屬於隨機演算法,得到的解是近似解。 而遺傳演算法、粒子群、模擬退火雖然也是隨機近似演算法,但這三種都是仿...

Ⅱ |阿爾法核心技術

一、 AlphaGo的兩大核心技術
MCTS(Monte Carlo Tree Search)
MCTS之於圍棋就像Alpha-Beta搜索之於象棋,是核心的演算法,而比賽時的搜索速度至關重要。就像深藍當年戰勝時,超級計算機的運算速度是制勝的關鍵因素之一。

MCTS的4個步驟:Selection,Expansion,Evaluation(rollout)和Backup
MCTS的並行搜索:
(1) Leaf Parallelisation

簡單的是Leaf Parallelisation,一個葉子用多個線程進行多次Simulation,完全不改變之前的演算法,把原來的一次
Simulation的統計量用多次來代替,這樣理論上應該准確不少。但這種並行的問題是需要等待最慢的那個結束才能更新統計量;而且搜索的路徑數沒有增
多。
(2) Root Parallelisation
多個線程各自搜索各自的UCT樹,最後投票
(3) Tree Parallelisation
這是真正的並行搜索,用多個線程同時搜索UCT樹。當然統計量的更新需要考慮多線程的問題,比如要加鎖。

外一個問題就是多個線程很可能同時走一樣的路徑(因為大家都選擇目前看起來Promising的孩子),一種方法就是臨時的修改
virtual loss,比如線程1在搜索孩子a,那麼就給它的Q(v)減一個很大的數,這樣其它線程就不太可能選擇它了。當然線程1搜索完了之後要記
得改回來。
《A Lock-free Multithreaded Monte-Carlo Tree Search Algorithm》使用了一種lock-free的演算法,這種方法比加鎖的方法要快很多,AlphaGo也用了這個方法。
Segal
研究了為什麼多機的MCTS演算法很難,並且實驗得出結論使用virtual loss的多線程版本能比較完美的scale到64個線程(當然這是單機一個
進程的多線程程序)。AlphaGo的Rollout是用CPU集群來加速的,但是其它的三個步驟是在一台機器完成的,這個就是最大的瓶頸。

Ⅲ 求UCT演算法偽代碼【類c或者純漢語或者純英語】,詳細明白就可以,謝謝~~

MoGo計算機圍棋程序使用的UCT演算法的偽代碼
function playOneSequence(rootNode)
node[0] := rootNode; i := 0;
do
node[i+1] := descendByUCB1(node[i]);
i := i+1;
while node[i] is not first visited;
createNode(node[i]);
node[i].value := getValueByMC(node[i]);
updateValue(node,-node[i].value);
end function;
摘自徐心和教授的<計算機圍棋博弈的最新發展>

uct的文章去google學術搜索搜國外的,圍棋(Go)方向的有很多

熱點內容
x3000r存儲卡 發布:2025-03-19 00:12:22 瀏覽:220
ie不顯示腳本錯誤 發布:2025-03-19 00:09:53 瀏覽:957
免費網頁源碼 發布:2025-03-19 00:09:00 瀏覽:261
工業企業資料庫 發布:2025-03-18 23:51:44 瀏覽:94
寶馬車的配置主要看哪些 發布:2025-03-18 23:50:09 瀏覽:484
esxi虛擬存儲 發布:2025-03-18 23:49:59 瀏覽:771
mc自己開伺服器地址 發布:2025-03-18 23:47:10 瀏覽:701
藍凌關聯配置什麼意思 發布:2025-03-18 23:46:16 瀏覽:347
雲存儲vmware 發布:2025-03-18 23:41:51 瀏覽:890
怎麼從配置模式轉到用戶模式 發布:2025-03-18 23:36:07 瀏覽:334