Deep Learning 101, Taiwan’s pioneering and highest deep learning meetup, launched on 2016/11/11 @ 83F, Taipei 101
AI是一條孤獨且充滿惶恐及未知的旅程,花俏絢麗的收費課程或活動絕非通往成功的捷徑。
衷心感謝當時來自不同單位的AI同好參與者實名分享的寶貴經驗;如欲移除資訊還請告知。
由 TonTon Huang Ph.D. 發起,及其當時任職公司(台灣雪豹科技)無償贊助場地及茶水點心。
YouTube | Facebook | 回 GitHub Pages | 網站 | Hugging Face Space
Model-Based Reinforcement Learning: The Dreamer Algorithm
2021/07/16 翁崇恒
首先,對於初接觸強化學習 (Reinforcement Learning, RL) 的朋友來說,RL 的核心目標是訓練一個 Agent 在特定環境 (Environment) 中學習如何做出一系列的動作 (Action),以最大化累積的獎勵 (Reward) [1]。RL 演算法大致分為兩類:Model-Free 和 Model-Based [1]。
Dreamer 就屬於 MBRL 方法 [1, 2, 4]。Dreamer V1 於 2019 年底發表,V2 於 2021 年初發表 [1, 2]。Dreamer 的一個重要里程碑是它是首個在 MBRL 領域達到人類操作水平的演算法 [1-3]。
Dreamer 最獨特且形象化的概念就是「在夢中學習」[1, 2, 5]。這裡的「夢」指的並不是我們平常的夢境,而是 Agent 在其學到的世界模型的潛在空間 (Latent Space) 中進行的自我預測和模擬過程 [1, 2, 5]。
想像一下下棋,新手可能只知道規則隨意下子(類似隨機或簡單 Greedy);進階者能預測到最終勝負(類似 Value Function);而真正的高手在走一步棋之前,會在腦中快速模擬多個可能的對弈序列,想像對手可能的反應以及自己的應對,這就是一種「腦內對弈」或「想像未來步驟」的能力,Dreamer 就屬於這個層次 [1]。
在 Dreamer 中,這個「想像」過程具體是:Agent 在潛在空間中,根據當前的潛在狀態和它決定的動作,透過世界模型中的動力學模組 (Dynamic Module),自動迴歸 (Auto-regressive) 地預測下一個潛在狀態、獎勵以及遊戲是否結束 [1, 2, 5]。這個過程可以在不與真實環境互動的情況下,在 Agent 的內部世界模型中進行多步模擬,就像在「做夢」一樣 [1, 2, 5]。Agent 在這個想像出來的序列中學習和優化其決策策略 [1, 4]。
Dreamer 的一個顯著優勢是其訓練速度快 [1-3]。相較於一些傳統的基於影像輸入的 Model-Free 演算法(如 A2C 訓練打磚塊可能需要一個月),Dreamer 在打磚塊遊戲上只需一兩天就能達到高分水平,速度提升數十倍 [1-3, 5]。這主要得益於其 Model-Based 的特性,Agent 學會世界模型後可以在潛在空間中高效地產生大量想像數據用於策略學習 [1, 2]。
此外,Dreamer 的實作相對容易,它通常只需要一個 Agent 和一個 Environment 進行互動,不像一些算法需要多個 Environment 並行訓練來提高數據吞吐或探索效率 [1, 2, 5]。所需的 Agent 和 Environment 數量較少,降低了實作複雜度 [1, 2, 5]。
傳統的 MBRL 方法常面臨一個挑戰:世界模型的不準確性 [1]。即使學會了世界模型,由於真實環境的複雜性和不確定性,模型預測的未來狀態可能會與真實狀態存在誤差,且這種誤差會隨著想像的步數 (Imagination Horizon) 增長而累積 [1]。這可能導致 Agent 在想像中學到的策略在真實環境中表現不佳,出現「短視」(short-sighted) 或在長遠規劃上效能下降的問題 [1, 6]。
Dreamer 聲稱透過其特定的 Actor-Critic 方法解決了這個問題 [1]。具體來說,Dreamer V1 透過讓世界模型 (World Model)、策略網絡 (Actor) 和價值網絡 (Critic) 共享同一個潛在空間 (Latent Space) 的方式,使得它們在訓練更新時能夠相互牽制 [1, 6]。當世界模型預測不準時,會影響 Actor 和 Critic 的學習;反之,Actor 和 Critic 在學習過程中也會對世界模型產生約束 [1, 6]。這種相互影響有助於避免世界模型陷入很差的預測,進而提升策略的表現,即使在 Imagination Horizon 增長時,Dreamer 的效能仍能保持甚至提升 [1, 6]。這被認為是 Dreamer 相較於之前 MBRL 方法的一個重要突破 [1, 6]。
對於想要更深入了解 Dreamer 的研究者來說,其架構是一個關鍵。Dreamer V1 從實作上來看包含七個模組,可分為三大塊:World Model、Actor 和 Critic [1, 6, 7]。
潛在狀態 (Latent State):在 Dreamer V1 中,潛在狀態由兩部分組成:Stochastic State (隨機狀態) 和 Deterministic State (確定性狀態) [1, 9]。Stochastic State 透過 Reparameterization Trick 產生,帶有隨機性;Deterministic State 則通常透過全連接網絡從 Stochastic State 產生,用於捕捉確定性的時間序列資訊 [1, 9, 10]。Dynamic Module 的 GRU 處理這些狀態資訊來進行預測 [9]。
Reparameterization Trick:VAE (變分自動編碼器) 中的一個重要技巧 [1, 7]。由於從學到的分佈中採樣 (Sampling) 的過程通常是不可導的,無法直接進行梯度反向傳播 [1, 7]。Reparameterization Trick 將採樣過程轉化為一個可導的計算圖:從一個固定的標準分佈(如標準常態分佈)中採樣一個隨機雜訊,然後透過一個可學習的轉換(通常是平均值和標準差的線性組合)得到來自目標分佈的樣本 [1, 7]。Dreamer V1 除了 Encoder 之外,所有模組的輸出(包括潛在狀態、還原影像、獎勵、Discount)都透過這個技巧產生一個分佈(大多是常態分佈,Discount 是伯努利分佈) [1, 7]。
想像步驟 (Imagination Step) 與表徵步驟 (Representation Step):這是 Dreamer 處理時序數據和利用世界模型的關鍵機制 [1, 9, 11]。
在訓練時,一個重要的目標就是讓 Representation Step 從真實觀察中得到的 Posterior 盡可能地接近 Imagination Step 基於前一狀態預測的 Prior [1, 11, 13]。這透過最小化 Prior 和 Posterior 之間的 KL 散度 (KL Divergence) 來實現 [1, 13, 14]。這迫使世界模型學會從前一狀態準確預測下一個狀態的潛在表示,同時也讓潛在表示能夠捕捉真實觀察中的重要資訊 [1, 11, 13]。
VAE 的應用與 Disentanglement 討論:Dreamer V1 大量使用了 VAE 的概念 [1, 2, 14]。最小化 Prior 和 Posterior 之間的 KL 散度是 VAE 的核心訓練目標之一 [1, 13, 14]。Dreamer V1 的 Beta 值設定為 1,這相當於標準 VAE [1, 15]。資料中提到 VAE 中的 disentanglement (解纏結) 概念,即希望潛在變數的不同維度能夠捕捉到資料中獨立變化的因素(例如在遊戲中將物體的位置、速度、形狀等資訊分開) [1, 16, 17]。雖然 Dreamer V1 論文未明確證實,但猜測引入 VAE 概念可能部分是為了鼓勵潛在空間的 disentanglement,將與遊戲機制相關的重要資訊與影像本身的細節分開,這可能有利於世界模型的預測和策略的學習 [1, 17-19]。然而,討論中也指出,VAE 的 Beta 值通常大於 1 時才更強調 disentanglement 的效果,而 V1 的 Beta=1,V2 的 Beta=0.8,這可能意味著其主要目的並非嚴格的 disentanglement,而是利用 VAE 的資訊瓶頸 (Information Bottleneck) 特性,迫使模型在有限的潛在空間中只保留對預測重要的高層次資訊(如遊戲機制) [1, 15, 17-19]。這部分在討論中存在不同的觀點和猜測,需要進一步的研究或實驗來證實 [15, 17-19]。
為了訓練 Agent,需要收集 Agent 與環境互動的數據 [1, 3, 20]。Dreamer 的數據收集有一些特定的設定 [1, 20]:
模型的更新分為 World Model 的更新以及 Actor/Critic 的更新 [1, 5, 20]。
World Model 更新:世界模型主要透過比較其預測與真實環境觀察之間的差異來學習 [1, 13, 20]。Loss 函數包含多個項 [1, 13]:
這些 Loss 函數的總和用於更新 World Model 中的 Encoder, Image Decoder, Reward Decoder, Discount Decoder, 和 Dynamic Module [1, 13]。
Actor/Critic 更新:Actor 和 Critic 的更新則完全發生在想像步驟 (Imagination Step) 中,利用學到的世界模型在潛在空間中進行多步模擬產生的想像數據 [1, 14]。
雞生蛋,蛋生雞問題:在討論中提到了計算 Lambda Return 時需要使用 Critic 預測的 Value Function,而 Value Function 又需要學習接近 Lambda Return [1, 14, 22]。這似乎是一個循環依賴 [1, 22]。資料中解釋說,這是因為 Imagination Step 中的採樣導致數值存在不確定性,所以需要透過這種近似的方式來進行學習 [1, 22]。
在 RL 中,探索 (Exploration) 是指 Agent 嘗試未知的動作或狀態,以發現潛在的更高獎勵 [1, 22]。常見的探索機制如 Epsilon Greedy (以一定機率隨機採取動作) [1, 22]。
Dreamer V1 沒有額外的顯式探索機制(如 Epsilon Greedy)[1, 22]。其探索行為主要來源於模型內部的不確定性和採樣過程 [1, 22]:
在討論中,這種類型的探索是否等價於 Curiosity (好奇心) 機制被提出 [1, 16]。Curiosity 通常是 Agent 根據其預測誤差或對環境的新奇程度給予額外的獎勵訊號,鼓勵 Agent 探索未知或難以預測的狀態 [1]。資料中講者認為 Dreamer 的不確定性來源不會直接影響 Reward,與常見的 Curiosity 方法不同 [1]。不過,也有觀點認為動態地根據狀態調整探索程度才更像 Curiosity 。這仍然是一個值得探討的點 [16]。
Dreamer V1 在一些任務上表現優異,但作者發現在 Atari 遊戲上表現不佳 [1, 8]。他們推測是 World Model 不夠準確造成的,儘管沒有直接證據 [1, 8]。為了解決這個問題,Dreamer V2 引入了幾個關鍵改進 [1, 4, 8]:
消融實驗是研究中常用的一種方法,通過移除或替換模型中的某個組件來評估其對整體效能的影響 [24]。Dreamer V2 的論文進行了消融實驗,分析了各個改進對效能的貢獻 [24, 25]。
實驗結果顯示,Learning by Reinforce 是對 Dreamer V2 效能提升最為關鍵的因素 [7, 24, 25]。其次是 KL Balancing,第三是 Discrete Latent Variable [7, 24, 25]。Image Gradient (圖像還原) 在 World Model 的訓練中也非常重要 [24, 25]。令人意外的是,Reward Gradient 的重要性在實驗中似乎不高(移除後影響不大),這與直覺有些不符 [24, 25]。
關於 Discrete Latent Variable 為何有效,資料中提到了幾種可能的原因 [21, 24]:
Dreamer 系列演算法是基於模型的強化學習領域的重大進展 [1, 9]。Dreamer V1 首次證明了 Model-Based 方法可以在複雜任務上達到人類水平的效能,並具備訓練效率高的優勢 [1, 2, 9]。Dreamer V2 透過引入離散潛在變數、改進策略更新方法 (Learning by Reinforce) 和 KL 散度計算方式 (KL Balancing),進一步提升了效能,使其能夠成功處理 Atari 等更具挑戰性的遊戲環境 [1, 4, 9, 24]。這些改進不僅提高了效能,也為理解基於模型的智能體如何在內部世界模型中進行有效學習和規劃提供了新的視角 [1, 9]。