來源:Facebook
編輯:LRS
【新智元導讀】你是不是經常感覺目前的強化學習遊戲都太過簡單,沒有挑戰性?Facebook最近釋出了一個超好用的強化學習沙盒MiniHack,不僅高度可定製化,還內建了一個超難的遊戲NetHack,快來挑戰吧!
強化學習(Reinforcement learning, RL)能夠幫助人類進行有效地決策,研究成果也遍佈遊戲、機器人等各個領域。
強化學習的研究進展通常是由模擬基準推動的,研究人員透過在各種各樣的模擬器基準上訓練模型,並且一些基準已經被完全刷榜,例如Arcade Learning Environment和MuJoCo已經到了很難再最佳化的程度。
一些新的基準測試環境,如ProcGen、Minecraft和NetHack能夠幫助RL研究人員構建更強大的新演算法,但這些新環境過於複雜和豐富的功能導致在演算法開發過程中,很難弄清演算法究竟測試了哪些問題。
這些測試平臺一般由一個完整的遊戲組成,並沒有明確設計用於強化學習的特定功能,例如RL 演算法中常用的探索(exploration)、記憶(memory)和分數(credit assignment)都沒有提供介面。
為了解決這個問題,Faccebook提出了一個環境構建框架MiniHack,使用此工具,開發人員可以輕鬆針對RL中的特定問題建立高階強化學習的任務。
目前MiniHack是開源的,並且論文已經發表在NeurIPS 2021。
框架中還附帶了一套基於NetHack的任務,NetHack是世界上最難的遊戲之一。它是釋出於1987年一款Rougelike遊戲,繼承自Hack(1985年)及更早的Rogue(1980年),玩家需要選擇自己所扮演的角色並指定性別、種族、職業和陣營,或者選擇讓系統隨機產生一個角色。遊戲者可以扮演經典奇幻角色,比如騎士,野蠻人,巫師,遊俠,神官, 僧侶和武士,也可以選擇一些比較少見的角色,諸如考古學家、遊客和洞穴人。玩家的角色和陣營決定了其在遊戲中需要侍奉的神靈。
通關流程中玩家需要在地下城的最底層取得Yendor的項鍊並將其供奉給自己的神靈。如果完成整個遊戲,玩家將會獲得不朽作為禮物,併成為半神。此外,一系列的支線任務也必須完成,其中包括各職業所特有的任務。遊戲開始的時候,玩家通常會有一隻寵物伴隨,一般是小貓或者小狗,但是騎士會有一隻馬駒以及一副馬鞍。遊戲中大部分的怪物都可以用魔法、餵食、許願、下蛋、陷阱等方式轉化為寵物。
MiniHack使用NetHack學習環境(NLE)為開發人員提供介面,可以輕鬆利用遊戲的豐富性來完成複雜的強化學習任務。這個新的沙盒MiniHack附帶了大量遊戲中已有的資源,有多達500多個怪物和450件物品,包括武器、魔杖、工具和咒語書,所有這些都具有獨特的特徵和複雜的動態環境。
這個框架允許RL 開發者不僅在簡單的網格世界風格中進行路線規劃,還需要在有限的行動空間內完成更復雜的技能獲取問題。
為了方便開發,MiniHack利用了NetHack中地下城的描述檔案。描述檔案使用人類可讀的機率程式設計(如領域特定語言DSL)編寫,只需幾行程式碼開發人員就可以生成各種各樣的環境,並控制每一處細節,從怪物的位置、型別到關卡、物體和地形,同時引入隨機性來增強RL agent的泛化能力。
DSL可以對環境的某些部分進行細化,並使用隨機生成函式,這也意味著每次重置環境並且agent開始新的事件時,agent 的等級可能會有明顯差別。這種程式性內容生成允許MiniHack評估RL對以前未看到的情況的泛化能力,從而能夠訓練本質上更健壯和通用的代理。對於沒有時間學習描述檔案細節的研究人員,MiniHack 還提供了一個方便的介面,用Python來描述整個環境。
MiniHack環境使用Gym介面,並且一切都是高度可定製的。使用者可以輕鬆地選擇agent接收的觀測型別,例如基於畫素的、符號的或文字的,以及它可以執行的操作。此外,MiniHack還提供了一個方便的介面來指定所需的自定義獎勵功能,以指導agent 的學習。
Facebook 還使用MiniHack構建了一套RL任務,用於測試RL agent的核心功能,並將其作為MiniHack的一部分共同釋出。這套任務可以像任何其他RL基準一樣使用。此外,這些任務還可以作為開發新任務的基礎程式碼。
MiniHack還支援移植現有的基於網格的基準測試,開原始碼中展示瞭如何將之前的測試平臺(如MiniGrid和Boxoban)移植到MiniHack上。由於MiniHack的靈活性和豐富性,可以透過新增額外的實體、環境功能和隨機性來增加挑戰性。
創造豐富複雜的環境來研究深度RL中的特定研究問題從來都不是一件容易的事。
MiniHack的目標是在分離中測試AI代理的特定功能,包括探索、記憶和語言輔助RL。該框架可用於FAIR 和NeurIPS 2021 聯合舉辦的 NetHack挑戰賽。
為了更快上手MiniHack,開發者提供了使用TorchBeast和RLlib等框架的各種baseline程式碼。
MiniHack還支援無監督環境設計(UED)研究,透過動態調整任務MDP的自由引數,在訓練期間學習自適應任務分配。MiniHack允許覆蓋環境的描述檔案,從而可以根據UED的要求輕鬆調整MDP配置。
為了測試MiniHack中的UED,開發者實現了最近提出的PAIRED 演算法,該演算法透過最大化regret 來訓練環境對抗,從而生成環境,以便最終能訓練一個魯棒性更強的主角代理。
研究人員還使用不同的神經結構進行額外的實驗來比較IMPALA 基線模型的效能,並展示了在選定的MiniHack 任務上使用三種不同體量模型架構(小型、中型和大型)的結果,這三種架構在卷積層的數量、隱藏MLP層的大小以及embedding維度上有所不同。
中、大型agent 模型的效能在所有五個任務上都是相差不大。有趣的是,小型模型在Room-Ultimate-15和CorridorBattle環境中的效能較差,但實際上在Corridor-3任務中的效能卻優於大型模型。
由於環境的複雜性,小型模型的在深度和寬度方面的效能可能都優於大型模型,如果用老的框架則無法很好地進行分析。MiniHack提供了一個更可控的環境來研究這一現象,並且它提供了豐富的環境定製能力。
參考資料:
https://ai.facebook.com/blog/minihack-a-new-sandbox-for-open-ended-reinforcement-learning/