終極版AlphaGo,DeepMind新算法MuZero作者解讀
本文轉(zhuǎn)自雷鋒網(wǎng),如需轉(zhuǎn)載請至雷鋒網(wǎng)官網(wǎng)申請授權(quán)。
為慶祝Muzero論文在Nature上的發(fā)表,我特意寫了這篇文章對MuZero算法進(jìn)行詳細(xì)介紹,希望本人能讓你對該算法有一個直觀的了解。
MuZero是令人振奮的一大步,該算法擺脫了對游戲規(guī)則或環(huán)境動力學(xué)的知識依賴,可以自行學(xué)習(xí)環(huán)境模型并進(jìn)行規(guī)劃。即使如此,MuZero仍能夠?qū)崿F(xiàn)AlphaZero的全部功能——這顯示出其在許多實(shí)際問題的應(yīng)用可能性!
所有一切不過是統(tǒng)計(jì)
MuZero是一種機(jī)器學(xué)習(xí)算法,因此自然要先了解它是如何使用神經(jīng)網(wǎng)絡(luò)的。簡單來說,該算法使用了AlphaGo和AlphaZero的策略網(wǎng)絡(luò)和值網(wǎng)絡(luò):
策略和值的直觀含義如下:
-
策略p(s,a)表示在狀態(tài)s時(shí)所有可能的動作a分布,據(jù)此可以估計(jì)最優(yōu)的動作。類比人類玩家,該策略相當(dāng)于快速瀏覽游戲時(shí)擬采取的可能動作。
-
值v(s)估計(jì)在當(dāng)前狀態(tài)s下獲勝的可能性,即通過對所有的未來可能性進(jìn)行加權(quán)平均,確定當(dāng)前玩家的獲勝概率。
這兩個網(wǎng)絡(luò)任何一個都非常強(qiáng)大:只根據(jù)策略網(wǎng)絡(luò),能夠輕易預(yù)測每一步的動作,最終得到良好結(jié)果;只依賴值網(wǎng)絡(luò),始終選擇值最高的動作。但是,將這兩個估計(jì)結(jié)合起來可以得到更好的結(jié)果。
取勝之路
與AlphaGo和AlphaZero相似,MuZero也使用蒙特卡洛樹搜索方法(MCTS)匯總神經(jīng)網(wǎng)絡(luò)預(yù)測并選擇適合當(dāng)前環(huán)境的動作。
MCTS是一種迭代的,最佳優(yōu)先的樹搜索過程。最佳優(yōu)先意味著搜索樹的擴(kuò)展依賴于搜索樹的值估計(jì)。與經(jīng)典方法(如廣度優(yōu)先或深度優(yōu)先)相比,最佳優(yōu)先搜索利用啟發(fā)式估計(jì)(如神經(jīng)網(wǎng)絡(luò)),這使其在很大的搜索空間中也可以找到有效的解決方案。
MCTS具有三個主要階段:模擬,擴(kuò)展和反向傳播。通過重復(fù)執(zhí)行這些階段,MCTS根據(jù)節(jié)點(diǎn)可能的動作序列逐步構(gòu)建搜索樹。在該樹中,每個節(jié)點(diǎn)表示未來狀態(tài),而節(jié)點(diǎn)間的邊緣表示從一個狀態(tài)到下一個狀態(tài)的動作。
在深入研究之前,首先對該搜索樹及逆行介紹,包括MuZero做出的神經(jīng)網(wǎng)絡(luò)預(yù)測:
圓圈表示樹節(jié)點(diǎn),對應(yīng)環(huán)境狀態(tài);線表示從一個狀態(tài)到下一個狀態(tài)的動作;根節(jié)點(diǎn)為當(dāng)前環(huán)境狀態(tài),即圍棋面板狀態(tài)。后續(xù)章節(jié)我們會詳細(xì)介紹預(yù)測和動力學(xué)函數(shù)。
模擬:從樹的根節(jié)點(diǎn)出發(fā)(圖頂部的淡藍(lán)色圓圈),即環(huán)境或游戲的當(dāng)前位置。在每個節(jié)點(diǎn)(狀態(tài)s),使用評分函數(shù)U(s,a)比較不同的動作a,并選擇最優(yōu)動作。MuZero中使用的評分函數(shù)是將先前的估計(jì)p(s,a)與v(s')的值結(jié)合起來,即
其中c是比例因子,隨著值估計(jì)準(zhǔn)確性的增加,減少先驗(yàn)的影響。
每選擇一個動作,我們都會增加其相關(guān)的訪問計(jì)數(shù)n(s,a),以用于UCB比例因子c以及之后的動作選擇。
模擬沿著樹向下進(jìn)行,直到尚未擴(kuò)展的葉子。此時(shí),應(yīng)用神經(jīng)網(wǎng)絡(luò)評估節(jié)點(diǎn),并將評估結(jié)果(優(yōu)先級和值估計(jì))存儲在節(jié)點(diǎn)中。
擴(kuò)展:一旦節(jié)點(diǎn)達(dá)到估計(jì)量值后,將其標(biāo)記為“擴(kuò)展”,意味著可以將子級添加到節(jié)點(diǎn),以便進(jìn)行更深入的搜索。在MuZero中,擴(kuò)展閾值為1,即每個節(jié)點(diǎn)在首次評估后都會立即擴(kuò)展。在進(jìn)行更深入的搜索之前,較高的擴(kuò)展閾值可用于收集更可靠的統(tǒng)計(jì)信息。
反向傳播:最后,將神經(jīng)網(wǎng)絡(luò)的值估計(jì)傳播回搜索樹,每個節(jié)點(diǎn)都在其下保存所有值估計(jì)的連續(xù)均值,這使得UCB公式可以隨著時(shí)間的推移做出越來越準(zhǔn)確的決策,從而確保MCTS收斂到最優(yōu)動作。
中間獎勵
細(xì)心的讀者可能已經(jīng)注意到,上圖還包括r的預(yù)測。某一情況(如棋盤游戲)在完全結(jié)束后提供反饋(獲勝/失敗結(jié)果),這樣可以通過值估計(jì)進(jìn)行建模。但在另外一些情況下,會存在頻繁的反饋,即每次從一種狀態(tài)轉(zhuǎn)換到另一種狀態(tài)后,都會得到回報(bào)r。
只需對UCB公式進(jìn)行簡單修改,就可以通過神經(jīng)網(wǎng)絡(luò)預(yù)測直接對獎勵進(jìn)行建模,并將其用于搜索。
其中,r(s,a)是指在狀態(tài)s時(shí)執(zhí)行動作a后觀察到的獎勵,而折扣因子γ是指對未來獎勵的關(guān)注程度。
由于總體獎勵可以時(shí)任意量級的,因此在將其與先驗(yàn)獎勵組合之前,我們將獎勵/值估計(jì)歸一化為區(qū)間[0,1]:
其中,q_min和q_max分別是整個搜索樹中觀察到的最小和最大r(s,a)+γ⋅v(s')估計(jì)。
過程生成
重復(fù)執(zhí)行以下過程可實(shí)現(xiàn)上述MCTS:
-
在當(dāng)前環(huán)境狀態(tài)下進(jìn)行搜索;
-
根據(jù)搜索的統(tǒng)計(jì)信息π_t選擇一個動作a_(t+1);
-
根據(jù)該動作更新環(huán)境,得到新的狀態(tài)s_(t+1)和獎勵u(t+1);
-
重復(fù)上述過程。
動作的選擇可以是貪心的(選擇訪問次數(shù)最多的動作),也可以是探索性的:通過一定的溫度t控制探索程度,并對與訪問次數(shù)n(s,a)成比例的動作a進(jìn)行采樣:
當(dāng)t = 0時(shí),等效貪婪采樣;當(dāng)t = inf時(shí),等效均勻采樣。
訓(xùn)練
現(xiàn)在,我們已經(jīng)學(xué)會了運(yùn)行MCTS來選擇動作,并與環(huán)境互動生成過程,接下來就可以訓(xùn)練MuZero模型了。
首先,從數(shù)據(jù)集中采樣一條軌跡和一個位置,然后根據(jù)該軌跡運(yùn)行MuZero模型:
可以看到,MuZero算法由以下三部分組成:
-
表示函數(shù)h將一組觀察值(棋盤)映射到神經(jīng)網(wǎng)絡(luò)的隱藏狀態(tài)s;
-
動態(tài)函數(shù)g根據(jù)動作a_(t + 1)將狀態(tài)s_t映射到下一個狀態(tài)s_(t + 1),同時(shí)估算在此過程的回報(bào)r_t,這樣模型就能夠不斷向前擴(kuò)展;
-
預(yù)測函數(shù)f根據(jù)狀態(tài)s_t對策略p_t和值v_t進(jìn)行估計(jì),應(yīng)用UCB公式并將其匯入MCTS過程。
根據(jù)軌跡選擇用于網(wǎng)絡(luò)輸入的觀測值和動作。相應(yīng)地,策略、值和獎勵的預(yù)測目標(biāo)是在生成存儲的軌跡。
從下圖可以看到過程生成(B)與訓(xùn)練(C)之間的一致性:
具體問言,MuZero估計(jì)量的訓(xùn)練損失為:
-
策略:MCTS訪問統(tǒng)計(jì)信息與預(yù)測函數(shù)的策略logit之間的交叉熵;
-
值:N個獎勵的折扣和+搜索值/目標(biāo)網(wǎng)絡(luò)估計(jì)值與預(yù)測函數(shù)的值之間的交叉熵或均方誤差;
-
獎勵:軌跡觀測獎勵與動態(tài)函數(shù)估計(jì)之間的交叉熵。
重分析
在了解了MuZero的核心思想后,接下來我們將介紹重分析技術(shù),這將顯著提高模型對大量數(shù)據(jù)的搜索效率。
在一般訓(xùn)練過程中,通過與環(huán)境的相互作用,我們會生成許多軌跡,并將其存儲在重播緩沖區(qū)用于訓(xùn)練。那么,我們可以從該數(shù)據(jù)中獲得更多信息嗎?
很難。由于需要與環(huán)境交互,我們無法更改存儲數(shù)據(jù)的狀態(tài)、動作或獎勵。在《黑客帝國》中可能做到,但在現(xiàn)實(shí)世界中則不可能。
幸運(yùn)的是,我們并不需要這樣。只要使用更新的、改進(jìn)標(biāo)簽的現(xiàn)有輸入,就足以繼續(xù)學(xué)習(xí)??紤]到MuZero模型和MCTS,我們做出如下改進(jìn):
保持軌跡(觀測、動作和獎勵)不變,重新運(yùn)行MCTS,就可以生成新的搜索統(tǒng)計(jì)信息,從而提供策略和值預(yù)測的新目標(biāo)。
我們知道,在與環(huán)境直接交互過程中,使用改進(jìn)網(wǎng)絡(luò)進(jìn)行搜索會獲得更好的統(tǒng)計(jì)信息。與之相似,在已有軌跡上使用改進(jìn)網(wǎng)絡(luò)重新搜索也會獲得更好的統(tǒng)計(jì)信息,從而可以使用相同的軌跡數(shù)據(jù)重復(fù)改進(jìn)。
重分析適用于MuZero訓(xùn)練,一般訓(xùn)練循環(huán)如下:
設(shè)置兩組異步通信任務(wù):
-
一個學(xué)習(xí)者接收最新軌跡,將最新軌跡保存在重播緩沖區(qū),并根據(jù)這些軌跡進(jìn)行上述訓(xùn)練;
-
多個行動者定期從學(xué)習(xí)者那里獲取最新的網(wǎng)絡(luò)檢查點(diǎn),并使用MCTS中的網(wǎng)絡(luò)選擇動作,與環(huán)境進(jìn)行交互生成軌跡。
為實(shí)現(xiàn)重分析,引入兩個新任務(wù):
-
重分析緩沖區(qū),用于接收參與者生成的所有軌跡并保留最新軌跡;
-
多個重分析行動者從重分析緩沖區(qū)采樣存儲的軌跡,使用學(xué)習(xí)者的最新網(wǎng)絡(luò)檢查點(diǎn)重新運(yùn)行MCTS,并將生成的軌跡和更新的統(tǒng)計(jì)信息發(fā)送給學(xué)習(xí)者。
由于學(xué)習(xí)者無法區(qū)分新軌跡和重分析的軌跡,這使得新軌跡與重分析軌跡的比例更改變得簡單。
MuZero命名含義
MuZero的命名基于AlphaZero,其中Zero表示是在沒有模仿人類數(shù)據(jù)的情況下進(jìn)行訓(xùn)練的,Mu取代Alpha表示使用學(xué)習(xí)模型進(jìn)行規(guī)劃。
更研究一些,Mu還有其他豐富的含義:
-
夢,日語中讀作mu,表示“夢”的意思, 就像MuZero通過學(xué)習(xí)的模型來想象未來狀況一樣;
-
希臘字母μ(發(fā)音為mu)也可以表示學(xué)習(xí)的模型;
-
無, 日語發(fā)音為mu,表示“無、沒有”,這強(qiáng)調(diào)從頭學(xué)習(xí)的概念:不僅無需模仿人類數(shù)據(jù),甚至不需提供規(guī)則。
結(jié)語
希望本文對MuZero的介紹對你有所啟發(fā)!
如果想了解更多細(xì)節(jié),可以閱讀原文,還可以查看我在NeurIPS的poster以及在ICAPS上發(fā)表的關(guān)于MuZero的演講。
最后,分享給你一些其他研究人員的文章,博客和GitHub項(xiàng)目:
<ahelp_12" name="help_12"></ahelp_12">
-
A Simple Alpha(Go) Zero Tutorial
-
MuZero General implementation
-
How To Build Your Own MuZero AI Using Python
-
為簡單起見,在MuZero中僅使用單個網(wǎng)絡(luò)進(jìn)行預(yù)測。
-
根據(jù)Rémi Coulom在2006年發(fā)表的Efficient Selectivity and Backup Operators in Monte-Carlo Tree Search,MCTS為解決圍棋問題提供可能。具體而言,MCTS中的“蒙特卡洛”指在圍棋比賽中的隨機(jī)模擬數(shù),通過計(jì)算每次隨機(jī)移動得獲勝概率從而選擇合適位置。
-
MuZero中使用的比例因子為∑bn(s,b)√1+n(s,a)⋅(c1+log(∑bn(s,b)+c2+1c2)),其中n(s,a)表示從狀態(tài)s到動作a的訪問次數(shù),常數(shù)c1和c2分別為1.25和19652,它們決定先驗(yàn)對于值估計(jì)得重要性。請注意,當(dāng)c2遠(yuǎn)大于n時(shí),c2的確切值不再重要,對數(shù)項(xiàng)此時(shí)為0。在這種情況下,公式簡化為c1⋅∑bn(s,b)√1+n(s,a)c1。
-
就像AlphaGo之前的許多Go程序使用的隨機(jī)卷展,隨機(jī)評估函數(shù)有一定作用。但如果評估函數(shù)是確定性的(如標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)),那么對同一節(jié)點(diǎn)多次評估沒什么意義。
-
在棋盤游戲中,折扣因子γ為1,TD步數(shù)趨于無限,因此,這僅適用于對蒙特卡洛獎勵(游戲獲勝者)的預(yù)測。
-
在運(yùn)行MuZero時(shí),無需單獨(dú)對行動者進(jìn)行重分析:由于只有一組行動者,在每次行動之前決定是與環(huán)境交互生成新軌跡還是對存儲軌跡進(jìn)行重分析。