新聞中心
研究強(qiáng)化學(xué)習(xí)的你還在苦于重復(fù)造輪子嗎?苦于尋找運(yùn)行環(huán)境嗎?

創(chuàng)新互聯(lián)成立于2013年,先為郎溪等服務(wù)建站,郎溪等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為郎溪企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
DeepMind給你帶來了Acme框架!
Acme是一個基于 python 的強(qiáng)化學(xué)習(xí)研究框架,2020年由 Google 的 DeepMind 開源。這個框架簡化了新型 RL 智能體(agent)的開發(fā),加快了 RL 研究的步伐。
DeepMind 是強(qiáng)化學(xué)習(xí)和人工智能研究的先行者,根據(jù)他們自己的研究人員所說,Acme 已經(jīng)成為 DeepMind 的日常使用的框架了。
目前Acme在Git已經(jīng)獲得了超過2.1k個星星。
Acme的學(xué)習(xí)曲線也是相當(dāng)平緩的。但由于Acme有多個不同復(fù)雜程度的接口作為切入點(diǎn),也就是說,這個框架不僅適用于高級研究人員,而且允許初學(xué)者實(shí)現(xiàn)甚至是簡單的算法,類似于 TensorFlow 和 PyTorch 能夠同時被初學(xué)者和專家所使用。
但這個框架唯一的缺點(diǎn)就是,由于框架仍然是相當(dāng)新的,沒有真正完整的文檔可用,也沒有任何優(yōu)秀的教程。
針對這個問題,倫敦政治經(jīng)濟(jì)學(xué)院一個博士生寫了一篇教學(xué)博客,幫助了解Acme框架,據(jù)作者所說,這篇教程文章并不打算成為或取代一個完整的文檔,而是對 Acme 的一個簡潔、實(shí)用的介紹。最重要的是,它應(yīng)該讓讀者了解框架底層的設(shè)計選擇,以及這對 RL 算法的實(shí)現(xiàn)意味著什么。
Acme的基本架構(gòu)
以21點(diǎn)游戲(BlackJack)作為例子來介紹框架。
Acme 的智能體的運(yùn)行環(huán)境沒有設(shè)計與Gym運(yùn)行環(huán)境交互,而是采用DeepMind 自己創(chuàng)建的 RL 環(huán)境 API。它們的區(qū)別主要在于時間步是如何表示的。
幸運(yùn)的是, Acme 的開發(fā)人員已經(jīng)為Gym環(huán)境提供了包裝器函數(shù)。
21點(diǎn)有32 x 11 x 2個狀態(tài),盡管并不是所有這些狀態(tài)都能在一場比賽中實(shí)際發(fā)生,并且有兩個action可選,hit或是stick。
三個重要的角色分別是actor, learner, 智能體agent。
learner使用actor收集的數(shù)據(jù)來學(xué)習(xí)或改進(jìn)策略,通常采用迭代的在線方式。例如,學(xué)習(xí)可能包括更新神經(jīng)網(wǎng)絡(luò)的參數(shù)。新的參數(shù)被傳遞給actor,然后actor根據(jù)更新的策略進(jìn)行操作。
智能體只是簡單地將行為和學(xué)習(xí)組件結(jié)合起來,但是通常不需要實(shí)現(xiàn)額外的強(qiáng)化學(xué)習(xí)邏輯。下面的圖片包含了所有三個組件。
這種將actor、learner和agent分解的主要原因之一是為了促進(jìn)分布式強(qiáng)化學(xué)習(xí)。如果我們不關(guān)心這些,或者算法足夠簡單,那么也可以只實(shí)現(xiàn)actor,并簡單地將學(xué)習(xí)步驟集成到actor的更新方法中。
例如,下面的隨機(jī)智能體繼承自 acme的Actor類。開發(fā)人員必須實(shí)現(xiàn)的方法是 select_action、 observe_first、observe 和 update。正如剛才提到的,后者是沒有額外的learner組成部分的學(xué)習(xí)。
注意,這個agent將以同樣的方式工作,而不會子類化 acme.Actor?;悆H確定必須覆蓋的方法。這還確保agent按照預(yù)期的方式與其他 Acme 組件集成,例如環(huán)境循環(huán)(environment loop)。
這個agent使用一個隨機(jī)選擇hit或stick的策略,但是通??蚣茉试S您在如何實(shí)現(xiàn)策略方面有很大的靈活性。后面還會實(shí)現(xiàn)一個貪婪的政策。
在其他情況下,策略可能包含一個神經(jīng)網(wǎng)絡(luò),可以使用 TensorFlow、 PyTorch 或 JAX 來實(shí)現(xiàn)它。在這個意義上,Acme 是框架是不可知的,可以將它與任何機(jī)器學(xué)習(xí)庫結(jié)合起來。
在更新方法中,actor通常只從learner中提取最新的參數(shù)。
但是,如果不使用單獨(dú)的學(xué)習(xí)者,那么 RL 邏輯將進(jìn)入update方法。
一個 強(qiáng)化學(xué)習(xí)算法通常由一個循環(huán)組成,每個循環(huán)由四個步驟組成,重復(fù)這四個步驟,直到達(dá)到一個終止?fàn)顟B(tài)。
1、觀察狀態(tài)
2、根據(jù)行為策略選擇下一步行動
3、觀察獎勵
4、更新策略
在大多數(shù)情況下,這個循環(huán)總是完全相同的。
方便的是,在 Acme 中有一個快捷方式: EnvironmentLoop,它執(zhí)行的步驟幾乎與上面看到的步驟一模一樣。只需傳遞環(huán)境和代理實(shí)例,然后可以使用單行代碼運(yùn)行單個事件或任意多個事件。還有一些記錄器可以跟蹤重要的指標(biāo),比如每一個迭代采取的步驟數(shù)和收集到的獎勵。
SARSA 智能體
SARSA 是一個基于策略的算法,其更新依賴于狀態(tài)(state)、行動(action)、獎勵(reward)、下一個狀態(tài)(next state)和下一個行動(next action)而得名。
首先,在智能體的 __init__ 方法中,我們初始化 Q、狀態(tài)動作值矩陣和行為策略,這是一個 epsilon 貪婪策略。還要注意,這個代理必須始終存儲它的上一個 timestep、 action 和下一個 timestep,因為它們在更新步驟中是必需的。
在observe函數(shù)中,通常沒有什么必須做的事。
在這種情況下,我們只是存儲觀察到的時間步和所采取的操作,然而,這并不總是必要的。例如,有時可能希望將時間步驟(和整個軌跡)存儲在數(shù)據(jù)集或重播緩沖區(qū)中。
Acme 還為此提供了數(shù)據(jù)集和額外的組件。事實(shí)上,還有一個由 DeepMind 開發(fā)的Reverb庫用來做這件事。
上面的 transform_state 方法只是一個輔助函數(shù),用于將狀態(tài)轉(zhuǎn)換為正確的格式,以便正確地對 Q 矩陣進(jìn)行索引。
最后,訓(xùn)練 SARSA 的環(huán)境為500,000步。
Q learning 智能體
下面的 Q learning 智能體與 SARSA 智能體非常相似。它們的不同之處僅在于如何更新 Q 矩陣。這是因為 Q 學(xué)習(xí)是一種非策略算法。
博客作者認(rèn)為, Acme 是一個非常好的強(qiáng)化學(xué)習(xí)框架,因為你不需要從頭開發(fā)你的算法。所以,與其自己琢磨如何編寫可讀和可重復(fù)的 RL 代碼,你可以依靠 DeepMind 的聰明的研究人員和開發(fā)人員,他們已經(jīng)為你做到了。
在他們的倉庫中,Deep Q-Networks (DQN)、Deep Deterministic Policy Gradient(DDPG)、Monte Carlo Tree Search (MCTS)、Behavior Cloning(BC)、 IMPALA 等常用算法的實(shí)現(xiàn)。
本文標(biāo)題:Acme框架真香!用過一次后倫敦博士撰文大贊DeepMind強(qiáng)化學(xué)習(xí)框架
本文URL:http://www.dlmjj.cn/article/cdesdcp.html


咨詢
建站咨詢
