Muzero演算法研讀報告

2021-10-24 02:59:42 字數 2893 閱讀 8070

面試的時候被要求了解muzero相關演算法,本文根據julian 等人在2023年發表的」mastering atari, go, chess and shogi by planning with a learned mode」 一文,研讀並匯報了文中的muzero演算法。相對於alpha zero, muzero無需預先了解遊戲的遊戲規則,比如在棋盤遊戲中,只需要去告知哪一步的移動是被允許的,就可以自主去推演出致勝的策略。報告主要分為三個部分,分別介紹了muzero 的模型組成,muzero搜尋策略以及學習訓練過程。

muzero model

包含planning, acting, training三個部分,分別對應prediction function,dynamics function和representation function, 各個function的輸入輸出關係如下表。

function name

input

output

prediction

current hidden state

current policy, current value function

dynamics

previous hidden state,

current candidate action

current immediate reward, current hidden state

representation

all observations

initial hidden state s0

首先representation function根據初始情況的觀察,產生初始的隱藏狀態s0,s0作為prediction function的輸入,生成當前的策略p和價值v。同時s0也作為dynamics function的輸入,加上當前的行動,通過dynamics function生成下一步隱藏狀態s1及獎勵。然後繼續使用prediction函式去對s1進行**。

如下圖所示,其中f表示prediction function,h表示representation function,g表示dynamics function,左邊的initial_inference表示了初始狀態,在初始狀態中,通過h函式得到初始隱藏狀態,然後用f函式計算出policy和value。在之後的行動中便可以使用g函式去計算下乙個隱藏狀態,見圖右recurrent_inference。

下一部分主要介紹這三個function是如何協作來產生策略的。

首先,每乙個遊戲都會有乙個初始的介面,然後通過mcts來去生成下一步的移動直到遊戲結束或到達最大步數。樹中的每乙個節點都會儲存一些相關引數,包括被訪問的次數,輪次,上一步動作的概率,子節點以及是否有所對應的隱藏狀態和獎勵。

遊戲開始時,首先從根節點出發,演算法會使用上乙個章節提到的representation function對根節點進行合法的expand,如開頭所說,雖然muzero不知道遊戲規則,但是它知道哪一步是可以走的。為了決定下乙個action,mcts會一直從根節點去進行搜尋和遍歷直到到達未被探索的葉子結點,之後進行反向傳播。在遍歷的過程中,mcts會通過ucb公式去評分,選擇得分最高的action。ucb公式如下,對於每乙個源自狀態s的行動a,都會有乙個對應的邊(s,a),其中n表示被訪問的次數,q表示平均價值,p表示策略,r表示獎勵,s表示狀態。

公式 1 ucb公式

為了決定乙個動作,演算法會執行n次模擬,通過mcts來去生成下一步的移動直到遊戲結束或到達最大步數,當mcts模擬結束時,將**的值反向傳播到根節點上。

最後基於節點被訪問的次數去選擇action。對於從根節點擊擇action的概率,使用溫度引數t去計算。對於前固定值(比如50)個動作,t設定為1,從第50步開始,t會逐漸衰減,從而確保訪問最多邊的action被選中。

公式 2 從根節點計算選擇動作alpha的概率

muzero learning

包含self-play和training,self-play用於生成遊戲資料,training用來生成最新版本的神經網路。

**中包含了sharedstorge和replaybuffer兩個物件。sharedstorge用來儲存最新版本的神經網路,replaybuffer用來儲存遊戲資料。replaybuffer中包含了生成訓練資料的功能,舉乙個例子,在象棋遊戲中,batch size是2048,每乙個batch包含了三個部分,分別是所選位置的observation,actions,價值獎勵以及策略的target。

對於初始狀態,使用前文說過的initial_inference得到初始隱藏狀態,然後用f函式計算出policy和value,並與目標進行比較。在之後的行動中便可以使用g函式去計算下乙個隱藏狀態,然後用f函式計算出policy和value,並與目標進行比較。在**過程中將使用到三個函式對應的三個神經網路並更新相對應神經網路的權重。

損失函式包含三個目標。分別是實際的獎勵和**的獎勵之間的差異、實際的價值和**的價值之間的差異以及實際的策略和**的策略之間的差異。公式如下圖,其中k是整數,表示num_unroll_steps,即每次訓練中observation選擇的action個數。t表示回合數。

muzero偽**

muzero偽**講解部落格

《如何閱讀一本書》閱讀報告

一 本書主線 閱讀一本書應該是乙個主動的過程,本書的實質在於強調主動閱讀,並詳細地給出了指導意見。用一句話概括本書的主旨的話,應該是 讀任何書都應該帶著問題閱讀並能對閱讀中看到的觀點進行評價,這才能算得上前文說的主動閱讀。二 本書脈絡 本書主要圍著兩大主題進行組織,第一 按照閱讀的四大層次進行介紹 ...

移動支付出海持續發力 愛貝帶你讀報告

標籤 移動支付 支付方式 東南亞旅遊 據愛貝獲悉,近日知名調研機構尼爾森與支付寶聯合發布了 2018年中國移動支付境外旅遊市場發展與趨勢 在此次 披露的資料顯示,旅遊消費公升級帶來的直接影響之一是,中國遊客將國內根深蒂固的移動支付習慣帶到海外,促進了當地的經濟發展。移動支付方式受中國出境遊客熱捧 伴...

第一周文獻閱讀報告

精讀總結 文章總結 通過這篇文章了解了傳統養老的系統的模式,針對 中的描述,在實際應用中這麼多感測器整合在手環上舒適度欠佳,其中使用nfc記錄老人資訊,希望走失後讓路人通過nfc對老人予以救助,使用nfc的創意感覺不錯,但是功能雞肋。文中只對系統功能做了描述,心率,跌倒等最重要的演算法並沒有提及,並...